1.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2+++ b/.Xresources Wed May 01 19:00:03 2024 -0400
1.3@@ -0,0 +1,33 @@
1.4+URxvt.background: #141c21
1.5+URxvt.foreground: #93a1a1
1.6+*.cursorColor: #afbfbf
1.7+*.color0: #263640
1.8+*.color8: #4a697d
1.9+*.color1: #d12f2c
1.10+*.color9: #fa3935
1.11+*.color2: #819400
1.12+*.color10: #a4bd00
1.13+*.color3: #b08500
1.14+*.color11: #d9a400
1.15+*.color4: #2587cc
1.16+*.color12: #2ca2f5
1.17+*.color5: #696ebf
1.18+*.color13: #8086e8
1.19+*.color6: #289c93
1.20+*.color14: #33c5ba
1.21+*.color7: #bfbaac
1.22+*.color15: #fdf6e3
1.23+URxvt.cursorBlink: true
1.24+!URxvt.font: xft:IBM 3270:pixelsize=16
1.25+!URxvt.boldFont: xft:IBM 3270:bold:pixelsize=16
1.26+URxvt.scrollBar: false
1.27+URxvt.saveLines: 65535
1.28+URxvtperl-ext-common: keyboard-select,url-select,clipboard,resize-font
1.29+URxvt.keysym.M-Escape: perl:keyboard-select:activate
1.30+URxvt.keysym.M-s: perl:keyboard-select:search
1.31+URxvt.keysym.M-u: perl:url-select:select_next
1.32+URxvt.keysym.M-c: perl:clipboard:copy
1.33+URxvt.keysym.M-v: perl:clipboard:paste
1.34+URxvt.keysym.M-C-v: perl:clipboard:paste_escaped
1.35+URxvt.iso14755: false
1.36+URxvt.iso14755_52: false
1.37\ No newline at end of file
2.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2+++ b/.config/containers/containers.conf Wed May 01 19:00:03 2024 -0400
2.3@@ -0,0 +1,17 @@
2.4+[containers]
2.5+
2.6+[engine]
2.7+compression_format = "zstd"
2.8+
2.9+[machine]
2.10+cpus = 4
2.11+memory = 8192
2.12+
2.13+[network]
2.14+network_backend = "netavark"
2.15+
2.16+[secrets]
2.17+
2.18+[configmaps]
2.19+
2.20+[farms]
3.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2+++ b/.config/containers/registries.conf Wed May 01 19:00:03 2024 -0400
3.3@@ -0,0 +1,1 @@
3.4+unqualified-search-registries = ["registry.compiler.company","docker.io","quay.io"]
4.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2+++ b/.config/containers/storage.conf Wed May 01 19:00:03 2024 -0400
4.3@@ -0,0 +1,5 @@
4.4+[storage]
4.5+driver = "btrfs"
4.6+graphroot = "/mnt/y/data/containers/storage"
4.7+[storage.options]
4.8+pull_options = {enable_partial_images = "true", use_hard_links = "false", ostree_repos=""}
4.9\ No newline at end of file
5.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2+++ b/.config/gitconfig Wed May 01 19:00:03 2024 -0400
5.3@@ -0,0 +1,7 @@
5.4+[user]
5.5+ name = ellis
5.6+ email = ellis@rwest.io
5.7+[init]
5.8+ defaultBranch = default
5.9+[commit]
5.10+ gpgsign = true
5.11\ No newline at end of file
6.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2+++ b/.config/kbd/moonlander/50-zsa.rules Wed May 01 19:00:03 2024 -0400
6.3@@ -0,0 +1,2 @@
6.4+# Keymapp / Wally Flashing rules for the Moonlander and Planck EZ
6.5+SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE:="0666", SYMLINK+="stm32_dfu"
6.6\ No newline at end of file
7.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2+++ b/.config/kbd/moonlander/config.h Wed May 01 19:00:03 2024 -0400
7.3@@ -0,0 +1,13 @@
7.4+/*
7.5+ Set any config.h overrides for your specific keymap here.
7.6+ See config.h options at https://docs.qmk.fm/#/config_options?id=the-configh-file
7.7+*/
7.8+#pragma once
7.9+#define ORYX_CONFIGURATOR
7.10+#define USB_SUSPEND_WAKEUP_DELAY 0
7.11+#define FIRMWARE_VERSION u8"xbJpL/AaEdK"
7.12+#define RAW_USAGE_PAGE 0xFF60
7.13+#define RAW_USAGE_ID 0x61
7.14+#define LAYER_STATE_8BIT
7.15+#define RGB_MATRIX_STARTUP_SPD 60
7.16+
8.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
8.2+++ b/.config/kbd/moonlander/keymap.c Wed May 01 19:00:03 2024 -0400
8.3@@ -0,0 +1,98 @@
8.4+#include QMK_KEYBOARD_H
8.5+#include "version.h"
8.6+#include "keymap_french.h"
8.7+#include "keymap_spanish.h"
8.8+#include "keymap_hungarian.h"
8.9+#include "keymap_swedish.h"
8.10+// #include "keymap_br_abnt2.h"
8.11+#include "keymap_canadian_multilingual.h"
8.12+//#include "keymap_german_ch.h"
8.13+//#include "keymap_jp.h"
8.14+#include "keymap_korean.h"
8.15+#include "keymap_bepo.h"
8.16+#include "keymap_italian.h"
8.17+#include "keymap_slovenian.h"
8.18+#include "keymap_lithuanian_azerty.h"
8.19+#include "keymap_danish.h"
8.20+#include "keymap_norwegian.h"
8.21+#include "keymap_portuguese.h"
8.22+// #include "keymap_contributions.h"
8.23+#include "keymap_czech.h"
8.24+#include "keymap_romanian.h"
8.25+#include "keymap_russian.h"
8.26+#include "keymap_uk.h"
8.27+//#include "keymap_estonian.h"
8.28+//#include "keymap_belgian.h"
8.29+#include "keymap_us_international.h"
8.30+//#include "keymap_croatian.h"
8.31+//#include "keymap_turkish_q.h"
8.32+//#include "keymap_slovak.h"
8.33+
8.34+#define KC_MAC_UNDO LGUI(KC_Z)
8.35+#define KC_MAC_CUT LGUI(KC_X)
8.36+#define KC_MAC_COPY LGUI(KC_C)
8.37+#define KC_MAC_PASTE LGUI(KC_V)
8.38+#define KC_PC_UNDO LCTL(KC_Z)
8.39+#define KC_PC_CUT LCTL(KC_X)
8.40+#define KC_PC_COPY LCTL(KC_C)
8.41+#define KC_PC_PASTE LCTL(KC_V)
8.42+#define ES_LESS_MAC KC_GRAVE
8.43+#define ES_GRTR_MAC LSFT(KC_GRAVE)
8.44+#define ES_BSLS_MAC ALGR(KC_6)
8.45+#define NO_PIPE_ALT KC_GRAVE
8.46+#define NO_BSLS_ALT KC_EQUAL
8.47+#define LSA_T(kc) MT(MOD_LSFT | MOD_LALT, kc)
8.48+#define BP_NDSH_MAC ALGR(KC_8)
8.49+#define SE_SECT_MAC ALGR(KC_6)
8.50+#define MOON_LED_LEVEL LED_LEVEL
8.51+
8.52+enum layers {
8.53+ MAIN,
8.54+};
8.55+
8.56+enum custom_keycodes {
8.57+ VRSN = SAFE_RANGE,
8.58+ HSV_0_245_245,
8.59+ HSV_74_255_206,
8.60+ HSV_152_255_255,
8.61+};
8.62+
8.63+
8.64+
8.65+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
8.66+ [MAIN] = LAYOUT_moonlander(
8.67+ // 1
8.68+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_EQL,
8.69+ KC_GRAVE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
8.70+ // 2
8.71+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, TG(1),
8.72+ TG(2), KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
8.73+ // 3
8.74+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LALT,
8.75+ KC_ENT, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOTE,
8.76+ // 4
8.77+ KC_LSFT, KC_Z ,KC_X, KC_C, KC_V, KC_B,
8.78+ KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_BSPC,
8.79+ // 5
8.80+ KC_UP, KC_DOWN, KC_LBRC, KC_LPRN, KC_SPC, LCTL,
8.81+ LALT, KC_SPC, KC_RPRN, KC_RBRC, KC_LEFT, KC_RIGHT,
8.82+ // 6
8.83+ A(KC_X), C(KC_C), KC_LGUI,
8.84+ ALT_T(KC_PASTE), RGB_MODE_FORWARD, QK_LOCK
8.85+ ),
8.86+ // [MACRO]
8.87+ // [LISP]
8.88+ // [CTL]
8.89+ // [CMD]
8.90+};
8.91+
8.92+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
8.93+ if (record->event.pressed) {
8.94+ switch (keycode) {
8.95+ case VRSN:
8.96+ SEND_STRING (QMK_KEYBOARD "/" QMK_KEYMAP " @ " QMK_VERSION);
8.97+ return false;
8.98+ }
8.99+ }
8.100+ return true;
8.101+}
9.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
9.2+++ b/.config/kbd/moonlander/rules.mk Wed May 01 19:00:03 2024 -0400
9.3@@ -0,0 +1,9 @@
9.4+# Set any rules.mk overrides for your specific keymap here.
9.5+# See rules at https://docs.qmk.fm/#/config_options?id=the-rulesmk-file
9.6+CONSOLE_ENABLE = no
9.7+COMMAND_ENABLE = no
9.8+ORYX_ENABLE = yes
9.9+RAW_ENABLE = yes
9.10+SPACE_CADET_ENABLE = no
9.11+CAPS_WORD_ENABLE = yes
9.12+SRC = matrix.c
10.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
10.2+++ b/.config/mpd/client.conf Wed May 01 19:00:03 2024 -0400
10.3@@ -0,0 +1,20 @@
10.4+pid_file "/run/mpd/mpd.pid"
10.5+playlist_directory "/var/lib/mpd/playlists"
10.6+
10.7+# WebDAV setup
10.8+music_directory "https://media.compiler.company/music"
10.9+
10.10+# NFS setup
10.11+#music_directory "nfs://example.com/path/to/your/music/"
10.12+
10.13+# Note the proxy here
10.14+database {
10.15+ plugin "proxy"
10.16+ host "media.compiler.company"
10.17+ port "6600"
10.18+}
10.19+
10.20+audio_output {
10.21+ type "pipewire"
10.22+ name "pipewire-server"
10.23+}
10.24\ No newline at end of file
11.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
11.2+++ b/.config/mpd/mpd.conf Wed May 01 19:00:03 2024 -0400
11.3@@ -0,0 +1,409 @@
11.4+# Files and directories #######################################################
11.5+#
11.6+# This setting controls the top directory which MPD will search to discover the
11.7+# available audio files and add them to the daemon's online database. This
11.8+# setting defaults to the XDG directory, otherwise the music directory will be
11.9+# be disabled and audio files will only be accepted over ipc socket (using
11.10+# file:// protocol) or streaming files over an accepted protocol.
11.11+#
11.12+music_directory "/mnt/m/music"
11.13+#
11.14+# This setting sets the MPD internal playlist directory. The purpose of this
11.15+# directory is storage for playlists created by MPD. The server will use
11.16+# playlist files not created by the server but only if they are in the MPD
11.17+# format. This setting defaults to playlist saving being disabled.
11.18+#
11.19+playlist_directory "/mnt/m/.mpd/playlists"
11.20+#
11.21+# This setting sets the location of the MPD database. This file is used to
11.22+# load the database at server start up and store the database while the
11.23+# server is not up. This setting defaults to disabled which will allow
11.24+# MPD to accept files over ipc socket (using file:// protocol) or streaming
11.25+# files over an accepted protocol.
11.26+#
11.27+db_file "/mnt/m/.mpd/database"
11.28+
11.29+# These settings are the locations for the daemon log files for the daemon.
11.30+#
11.31+# The special value "syslog" makes MPD use the local syslog daemon. This
11.32+# setting defaults to logging to syslog.
11.33+#
11.34+# If you use systemd, do not configure a log_file. With systemd, MPD
11.35+# defaults to the systemd journal, which is fine.
11.36+#
11.37+log_file "/mnt/m/.mpd/log"
11.38+
11.39+# This setting sets the location of the file which stores the process ID
11.40+# for use of mpd --kill and some init scripts. This setting is disabled by
11.41+# default and the pid file will not be stored.
11.42+#
11.43+# If you use systemd, do not configure a pid_file.
11.44+#
11.45+#pid_file "~/.mpd/pid"
11.46+
11.47+# This setting sets the location of the file which contains information about
11.48+# most variables to get MPD back into the same general shape it was in before
11.49+# it was brought down. This setting is disabled by default and the server
11.50+# state will be reset on server start up.
11.51+#
11.52+state_file "/mnt/m/.mpd/state"
11.53+#
11.54+# The location of the sticker database. This is a database which
11.55+# manages dynamic information attached to songs.
11.56+#
11.57+sticker_file "/mnt/m/.mpd/sticker.sql"
11.58+#
11.59+###############################################################################
11.60+
11.61+
11.62+# General music daemon options ################################################
11.63+#
11.64+# This setting specifies the user that MPD will run as. MPD should never run as
11.65+# root and you may use this setting to make MPD change its user ID after
11.66+# initialization. This setting is disabled by default and MPD is run as the
11.67+# current user.
11.68+#
11.69+user "ellis"
11.70+#
11.71+# This setting specifies the group that MPD will run as. If not specified
11.72+# primary group of user specified with "user" setting will be used (if set).
11.73+# This is useful if MPD needs to be a member of group such as "audio" to
11.74+# have permission to use sound card.
11.75+#
11.76+group "ellis"
11.77+#
11.78+# This setting sets the address for the daemon to listen on. Careful attention
11.79+# should be paid if this is assigned to anything other than the default, any.
11.80+# This setting can deny access to control of the daemon. Not effective if
11.81+# systemd socket activation is in use.
11.82+#
11.83+# For network
11.84+bind_to_address "any"
11.85+#
11.86+# And for Unix Socket
11.87+# bind_to_address "~/.mpd/socket"
11.88+#
11.89+# This setting is the TCP port that is desired for the daemon to get assigned
11.90+# to.
11.91+#
11.92+port "6600"
11.93+#
11.94+# Suppress all messages below the given threshold. Use "verbose" for
11.95+# troubleshooting. Available setting arguments are "notice", "info", "verbose",
11.96+# "warning" and "error".
11.97+#
11.98+log_level "info"
11.99+#
11.100+# Setting "restore_paused" to "yes" puts MPD into pause mode instead
11.101+# of starting playback after startup.
11.102+#
11.103+restore_paused "yes"
11.104+#
11.105+# This setting enables MPD to create playlists in a format usable by other
11.106+# music players.
11.107+#
11.108+save_absolute_paths_in_playlists "yes"
11.109+#
11.110+# This setting defines a list of tag types that will be extracted during the
11.111+# audio file discovery process. The complete list of possible values can be
11.112+# found in the user manual.
11.113+metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
11.114+#
11.115+# This example just enables the "comment" tag without disabling all
11.116+# the other supported tags:
11.117+#metadata_to_use "+comment"
11.118+#
11.119+# This setting enables automatic update of MPD's database when files in
11.120+# music_directory are changed.
11.121+#
11.122+auto_update "yes"
11.123+#
11.124+# Limit the depth of the directories being watched, 0 means only watch
11.125+# the music directory itself. There is no limit by default.
11.126+#
11.127+#auto_update_depth "3"
11.128+#
11.129+###############################################################################
11.130+
11.131+
11.132+# Symbolic link behavior ######################################################
11.133+#
11.134+# If this setting is set to "yes", MPD will discover audio files by following
11.135+# symbolic links outside of the configured music_directory.
11.136+#
11.137+follow_outside_symlinks "yes"
11.138+#
11.139+# If this setting is set to "yes", MPD will discover audio files by following
11.140+# symbolic links inside of the configured music_directory.
11.141+#
11.142+follow_inside_symlinks "yes"
11.143+#
11.144+###############################################################################
11.145+
11.146+
11.147+# Zeroconf / Avahi Service Discovery ##########################################
11.148+#
11.149+# If this setting is set to "yes", service information will be published with
11.150+# Zeroconf / Avahi.
11.151+#
11.152+zeroconf_enabled "yes"
11.153+#
11.154+# The argument to this setting will be the Zeroconf / Avahi unique name for
11.155+# this MPD server on the network. %h will be replaced with the hostname.
11.156+#
11.157+zeroconf_name "mpd @ %h"
11.158+#
11.159+###############################################################################
11.160+
11.161+
11.162+# Permissions #################################################################
11.163+#
11.164+# If this setting is set, MPD will require password authorization. The password
11.165+# setting can be specified multiple times for different password profiles.
11.166+#
11.167+#password "password@read,add,control,admin"
11.168+#
11.169+# This setting specifies the permissions a user has who has not yet logged in.
11.170+#
11.171+#default_permissions "read,add,control,admin"
11.172+#
11.173+###############################################################################
11.174+
11.175+
11.176+# Database #######################################################################
11.177+#
11.178+# An example of a database section instead of the old 'db_file' setting.
11.179+# It enables mounting other storages into the music directory.
11.180+#
11.181+#database {
11.182+# plugin "simple"
11.183+# path "~/.local/share/mpd/db"
11.184+# cache_directory "~/.local/share/mpd/cache"
11.185+#}
11.186+#
11.187+# An example of database config for a satellite setup
11.188+#
11.189+#music_directory "nfs://fileserver.local/srv/mp3"
11.190+#database {
11.191+# plugin "proxy"
11.192+# host "other.mpd.host"
11.193+# port "6600"
11.194+#}
11.195+
11.196+# Input #######################################################################
11.197+#
11.198+input {
11.199+ plugin "curl"
11.200+# proxy "proxy.isp.com:8080"
11.201+# proxy_user "user"
11.202+# proxy_password "password"
11.203+}
11.204+
11.205+#
11.206+###############################################################################
11.207+
11.208+# Audio Output ################################################################
11.209+#
11.210+# MPD supports various audio output types, as well as playing through multiple
11.211+# audio outputs at the same time, through multiple audio_output settings
11.212+# blocks. Setting this block is optional, though the server will only attempt
11.213+# autodetection for one sound card.
11.214+#
11.215+# An example of an ALSA output:
11.216+#
11.217+audio_output {
11.218+ type "pipewire"
11.219+ name "pipewire-server"
11.220+}
11.221+#
11.222+# An example of an OSS output:
11.223+#
11.224+#audio_output {
11.225+# type "oss"
11.226+# name "My OSS Device"
11.227+## device "/dev/dsp" # optional
11.228+## mixer_type "hardware" # optional
11.229+## mixer_device "/dev/mixer" # optional
11.230+## mixer_control "PCM" # optional
11.231+#}
11.232+#
11.233+# An example of a shout output (for streaming to Icecast):
11.234+#
11.235+#audio_output {
11.236+# type "shout"
11.237+# encoder "vorbis" # optional
11.238+# name "My Shout Stream"
11.239+# host "localhost"
11.240+# port "8000"
11.241+# mount "/mpd.ogg"
11.242+# password "hackme"
11.243+# quality "5.0"
11.244+# bitrate "128"
11.245+# format "44100:16:1"
11.246+## protocol "icecast2" # optional
11.247+## user "source" # optional
11.248+## description "My Stream Description" # optional
11.249+## url "http://example.com" # optional
11.250+## genre "jazz" # optional
11.251+## public "no" # optional
11.252+## timeout "2" # optional
11.253+## mixer_type "software" # optional
11.254+#}
11.255+#
11.256+# An example of a recorder output:
11.257+#
11.258+#audio_output {
11.259+# type "recorder"
11.260+# name "My recorder"
11.261+# encoder "vorbis" # optional, vorbis or lame
11.262+# path "/var/lib/mpd/recorder/mpd.ogg"
11.263+## quality "5.0" # do not define if bitrate is defined
11.264+# bitrate "128" # do not define if quality is defined
11.265+# format "44100:16:1"
11.266+#}
11.267+#
11.268+# An example of a httpd output (built-in HTTP streaming server):
11.269+#
11.270+# audio_output {
11.271+# type "httpd"
11.272+# name "ellis/mpd"
11.273+# encoder "vorbis" # optional, vorbis or lame
11.274+# port "6660"
11.275+# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
11.276+# quality "5.0" # do not define if bitrate is defined
11.277+# # bitrate "128" # do not define if quality is defined
11.278+# format "44100:16:1"
11.279+# max_clients "0" # optional 0=no limit
11.280+# }
11.281+#
11.282+# An example of a pulseaudio output (streaming to a remote pulseaudio server)
11.283+#
11.284+#audio_output {
11.285+# type "pulse"
11.286+# name "My Pulse Output"
11.287+## server "remote_server" # optional
11.288+## sink "remote_server_sink" # optional
11.289+## media_role "media_role" #optional
11.290+#}
11.291+#
11.292+# An example of a winmm output (Windows multimedia API).
11.293+#
11.294+#audio_output {
11.295+# type "winmm"
11.296+# name "My WinMM output"
11.297+## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
11.298+# or
11.299+## device "0" # optional
11.300+## mixer_type "hardware" # optional
11.301+#}
11.302+#
11.303+# An example of a wasapi output (Windows multimedia API).
11.304+#
11.305+#audio_output {
11.306+# type "wasapi"
11.307+# name "My WASAPI output"
11.308+## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
11.309+# or
11.310+## device "0" # optional
11.311+## Exclusive mode blocks all other audio source, and get best audio quality without resampling.
11.312+## exclusive "no" # optional
11.313+## Enumerate all devices in log.
11.314+## enumerate "no" # optional
11.315+#}
11.316+#
11.317+# An example of an openal output.
11.318+#
11.319+#audio_output {
11.320+# type "openal"
11.321+# name "My OpenAL output"
11.322+## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
11.323+#}
11.324+#
11.325+# An example of an sndio output.
11.326+#
11.327+#audio_output {
11.328+# type "sndio"
11.329+# name "sndio output"
11.330+# mixer_type "hardware"
11.331+#}
11.332+#
11.333+# An example of an OS X output:
11.334+#
11.335+#audio_output {
11.336+# type "osx"
11.337+# name "My OS X Device"
11.338+## device "Built-in Output" # optional
11.339+## channel_map "-1,-1,0,1" # optional
11.340+#}
11.341+#
11.342+## Example "pipe" output:
11.343+#
11.344+#audio_output {
11.345+# type "pipe"
11.346+# name "my pipe"
11.347+# command "aplay -f cd 2>/dev/null"
11.348+## Or if you're want to use AudioCompress
11.349+# command "AudioCompress -m | aplay -f cd 2>/dev/null"
11.350+## Or to send raw PCM stream through PCM:
11.351+# command "nc example.org 8765"
11.352+# format "44100:16:2"
11.353+#}
11.354+#
11.355+## An example of a null output (for no audio output):
11.356+#
11.357+#audio_output {
11.358+# type "null"
11.359+# name "My Null Output"
11.360+# mixer_type "none" # optional
11.361+#}
11.362+#
11.363+###############################################################################
11.364+
11.365+
11.366+# Normalization automatic volume adjustments ##################################
11.367+#
11.368+# This setting specifies the type of ReplayGain to use. This setting can have
11.369+# the argument "off", "album", "track" or "auto". "auto" is a special mode that
11.370+# chooses between "track" and "album" depending on the current state of
11.371+# random playback. If random playback is enabled then "track" mode is used.
11.372+# See <https://wiki.hydrogenaud.io/index.php?title=Replaygain> for
11.373+# more details about ReplayGain.
11.374+# This setting is off by default.
11.375+#
11.376+replaygain "auto"
11.377+#
11.378+# This setting sets the pre-amp used for files that have ReplayGain tags. By
11.379+# default this setting is disabled.
11.380+#
11.381+#replaygain_preamp "0"
11.382+#
11.383+# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
11.384+# By default this setting is disabled.
11.385+#
11.386+#replaygain_missing_preamp "0"
11.387+#
11.388+# This setting enables or disables ReplayGain limiting.
11.389+# MPD calculates actual amplification based on the ReplayGain tags
11.390+# and replaygain_preamp / replaygain_missing_preamp setting.
11.391+# If replaygain_limit is enabled MPD will never amplify audio signal
11.392+# above its original level. If replaygain_limit is disabled such amplification
11.393+# might occur. By default this setting is enabled.
11.394+#
11.395+replaygain_limit "yes"
11.396+#
11.397+# This setting enables on-the-fly normalization volume adjustment. This will
11.398+# result in the volume of all playing audio to be adjusted so the output has
11.399+# equal "loudness". This setting is disabled by default.
11.400+#
11.401+#volume_normalization "no"
11.402+#
11.403+###############################################################################
11.404+
11.405+# Character Encoding ##########################################################
11.406+#
11.407+# If file or directory names do not display correctly for your locale then you
11.408+# may need to modify this setting.
11.409+#
11.410+filesystem_charset "UTF-8"
11.411+#
11.412+###############################################################################
11.413\ No newline at end of file
12.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
12.2+++ b/.config/nyxt/init.lisp Wed May 01 19:00:03 2024 -0400
12.3@@ -0,0 +1,73 @@
12.4+(require :swank)
12.5+(in-package :nyxt-user) ;; let slime know which package we're in
12.6+
12.7+;; by default, JS is not enabled.
12.8+(define-configuration web-buffer
12.9+ ((default-modes
12.10+ (pushnew 'nyxt/mode/no-script:no-script-mode %slot-value%))))
12.11+
12.12+(define-configuration buffer
12.13+ ((default-modes
12.14+ (pushnew 'nyxt/mode/emacs:emacs-mode %slot-value%))))
12.15+
12.16+(define-configuration input-buffer
12.17+ ((override-map
12.18+ (let ((map (make-keymap "override-map")))
12.19+ (define-key map "M-x" 'execute-command)))))
12.20+
12.21+(defun eval-in-emacs (&rest s-exps)
12.22+ "Evaluate S-exps with `emacsclient'."
12.23+ (let ((s-exps-string (cl-ppcre:regex-replace-all
12.24+ ;; Discard the package prefix.
12.25+ "next-user::?"
12.26+ (write-to-string
12.27+ `(progn ,@s-exps) :case :downcase)
12.28+ "")))
12.29+ (log:debug "Sending to Emacs: ~s" s-exps-string)
12.30+ (ignore-errors (uiop:run-program
12.31+ (list "emacsclient" "--eval" s-exps-string)))))
12.32+
12.33+(defvar *kz-keymap* (make-keymap "kz-map")
12.34+ "Keymap for `kz-mode'.")
12.35+
12.36+(define-command org-capture (&optional (buffer (current-buffer)))
12.37+ "Org-capture current page."
12.38+ (eval-in-emacs
12.39+ `(org-link-set-parameters
12.40+ "next"
12.41+ :store (lambda ()
12.42+ (org-store-link-props
12.43+ :type "next"
12.44+ :link ,(url buffer)
12.45+ :description ,(title buffer))))
12.46+ `(org-capture)))
12.47+(define-key *kz-keymap* "C-M-o" 'org-capture)
12.48+
12.49+(define-command play-video-in-current-page (&optional (buffer (current-buffer)))
12.50+ "Play video in the currently open buffer."
12.51+ (uiop:run-program (list "mpv" (url buffer))))
12.52+(define-key *kz-keymap* "C-M-c v" 'play-video-in-current-page)
12.53+
12.54+(define-mode kz-mode ()
12.55+ "Dummy mode for the custom key bindings in `*kz-keymap*'."
12.56+ ((keymap-scheme (keymap:make-scheme
12.57+ scheme:emacs *kz-keymap*
12.58+ scheme:vi-normal *kz-keymap*))))
12.59+
12.60+(defvar youtube-dl-command "youtube-dl"
12.61+ "Path to the 'youtube-dl' program.")
12.62+
12.63+(define-configuration browser
12.64+ ((session-restore-prompt :always-restore)))
12.65+
12.66+(setf nyxt/vcs:*vcs-projects-roots* '("~/dev"
12.67+ "~/lisp"
12.68+ "~/stash"))
12.69+
12.70+(define-command start-swank (&optional (swank-port 4006))
12.71+ (swank:create-server :port swank-port :dont-close t)
12.72+ (echo "Swank server started at port ~a" swank-port))
12.73+
12.74+;; Start swank by default.
12.75+(unless nyxt::*keep-alive*
12.76+ (start-swank))
13.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
13.2+++ b/.config/systemd/emacs.service Wed May 01 19:00:03 2024 -0400
13.3@@ -0,0 +1,20 @@
13.4+# very important to run systemd-user-env.sh before this
13.5+[Unit]
13.6+Description=Emacs text editor
13.7+Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/
13.8+
13.9+[Service]
13.10+Type=notify
13.11+ExecStart=emacs --fg-daemon
13.12+
13.13+# Emacs will exit with status 15 after having received SIGTERM, which
13.14+# is the default "KillSignal" value systemd uses to stop services.
13.15+SuccessExitStatus=15
13.16+
13.17+# The location of the SSH auth socket varies by distribution, and some
13.18+# set it from PAM, so don't override by default.
13.19+# Environment=SSH_AUTH_SOCK=%t/keyring/ssh
13.20+Restart=on-failure
13.21+
13.22+[Install]
13.23+WantedBy=default.target
14.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
14.2+++ b/.emacs.d/ellis.el Wed May 01 19:00:03 2024 -0400
14.3@@ -0,0 +1,286 @@
14.4+;;; ellis.el --- Richard's custom-file -*- lexical-binding: t; -*-
14.5+
14.6+;; Copyright (C) 2023
14.7+
14.8+;; Author: Richard Westhaver <ellis@rwest.io>
14.9+
14.10+;; This program is free software; you can redistribute it and/or modify
14.11+;; it under the terms of the GNU General Public License as published by
14.12+;; the Free Software Foundation, either version 3 of the License, or
14.13+;; (at your option) any later version.
14.14+
14.15+;; This program is distributed in the hope that it will be useful,
14.16+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14.17+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14.18+;; GNU General Public License for more details.
14.19+
14.20+;; You should have received a copy of the GNU General Public License
14.21+;; along with this program. If not, see <https://www.gnu.org/licenses/>.
14.22+
14.23+;;; Commentary:
14.24+
14.25+;; This is an example of what you may want to add to your custom
14.26+;; config file. Feel free to rip.
14.27+
14.28+;;; Code:
14.29+(require 'inbox)
14.30+(require 'sk)
14.31+(require 'slime-cape)
14.32+(require 'sxp)
14.33+(require 'ulang)
14.34+
14.35+(defalias 'make #'compile)
14.36+
14.37+(setopt default-theme 'modus-vivendi-tritanopia
14.38+ user-lab-directory (join-paths user-home-directory "dev")
14.39+ company-source-directory (join-paths user-lab-directory "comp"))
14.40+
14.41+(unless (display-graphic-p) (setq default-theme 'wheatgrass))
14.42+
14.43+(when (linux-p) (setq dired-listing-switches "-alsh"))
14.44+
14.45+(defvar emacs-config-source (join-paths company-source-directory "core/emacs"))
14.46+
14.47+;;;###autoload
14.48+(defun edit-emacs-config (&optional src)
14.49+ (interactive (list current-prefix-arg))
14.50+ (let ((file (if src
14.51+ (expand-file-name "default.el" emacs-config-source)
14.52+ user-custom-file)))
14.53+ (find-file file)))
14.54+
14.55+(keymap-set user-map "e c" #'edit-emacs-config)
14.56+(keymap-set emacs-lisp-mode-map "C-c C-l" #'load-file)
14.57+(keymap-set emacs-lisp-mode-map "C-c M-k" #'elisp-byte-compile-file)
14.58+
14.59+;; (add-hook 'common-lisp-mode-hook #'enable-paredit-mode)
14.60+;; (add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode)
14.61+
14.62+(repeat-mode)
14.63+
14.64+(defun remember-project ()
14.65+ (interactive)
14.66+ (project-remember-project (project-current))
14.67+ project--list)
14.68+
14.69+(defun remember-lab-projects ()
14.70+ (interactive)
14.71+ (project-remember-projects-under user-lab-directory t))
14.72+
14.73+(keymap-global-set "C-<tab>" #'hippie-expand)
14.74+(keymap-set minibuffer-local-map "C-<tab>" #'hippie-expand)
14.75+(keymap-set ctl-x-x-map "p p" #'remember-project)
14.76+(keymap-set ctl-x-x-map "p l" #'remember-lab-projects)
14.77+
14.78+(add-hook 'prog-mode-hook #'skt-mode)
14.79+(add-hook 'org-mode-hook #'skt-mode)
14.80+(add-hook 'prog-mode-hook #'company-mode)
14.81+
14.82+(add-hook 'notmuch-message-mode-hook #'turn-on-orgtbl)
14.83+
14.84+(setopt skt-enable-tempo-elements t
14.85+ skt-completing-read t
14.86+ skt-delete-duplicate-marks t)
14.87+
14.88+(keymap-set skt-mode-map "C-c M-b" #'tempo-backward-mark)
14.89+(keymap-set skt-mode-map "C-c M-f" #'tempo-forward-mark)
14.90+(keymap-set skt-mode-map "C-c M-a" #'tempo-complete-tag)
14.91+
14.92+(use-package markdown-mode :ensure t)
14.93+
14.94+(use-package ol-notmuch :ensure t)
14.95+
14.96+(use-package notmuch
14.97+ :ensure t
14.98+ :init
14.99+ (setopt
14.100+ mail-user-agent 'message-user-agent
14.101+ smtpmail-smtp-server "smtp.gmail.com"
14.102+ message-send-mail-function 'message-smtpmail-send-it
14.103+ smtpmail-debug-info t
14.104+ message-default-mail-headers "Cc: \nBcc: \n"
14.105+ message-kill-buffer-on-exit t
14.106+ user-mail-address "ellis@rwest.io"
14.107+ user-full-name "Richard Westhaver"
14.108+ notmuch-hello-sections '(notmuch-hello-insert-saved-searches
14.109+ notmuch-hello-insert-search
14.110+ notmuch-hello-insert-recent-searches
14.111+ notmuch-hello-insert-alltags)
14.112+ notmuch-show-logo nil
14.113+ notmuch-search-oldest-first nil
14.114+ notmuch-hello-hide-tags '("kill")
14.115+ notmuch-saved-searches '((:name "inbox" :query "tag:inbox" :key "i")
14.116+ (:name "unread" :query "tag:unread" :key "u")
14.117+ (:name "new" :query "tag:new" :key "n")
14.118+ (:name "sent" :query "tag:sent" :key "e")
14.119+ (:name "drafts" :query "tag:draft" :key "d")
14.120+ (:name "all mail" :query "*" :key "a")
14.121+ (:name "todo" :query "tag:todo" :key "t")))
14.122+ :config
14.123+ ;;;###autoload
14.124+ (defun notmuch-exec-offlineimap ()
14.125+ "execute offlineimap command and tag new mail with notmuch"
14.126+ (interactive)
14.127+ (start-process-shell-command "offlineimap"
14.128+ "*offlineimap*"
14.129+ "offlineimap -o")
14.130+ (notmuch-refresh-all-buffers))
14.131+
14.132+ (defun offlineimap-get-password (host port)
14.133+ (let* ((netrc (netrc-parse (expand-file-name "~/.netrc.gpg")))
14.134+ (hostentry (netrc-machine netrc host port port)))
14.135+ (when hostentry (netrc-get hostentry "password"))))
14.136+
14.137+ (defun mark-as-read ()
14.138+ "mark message as read."
14.139+ (interactive)
14.140+ (notmuch-search-tag '("-new" "-unread" "-inbox")))
14.141+
14.142+ (defun mark-as-todo ()
14.143+ "mark message as todo."
14.144+ (interactive)
14.145+ (mark-as-read)
14.146+ (notmuch-search-tag '("-new" "-unread" "-inbox" "+todo")))
14.147+
14.148+ (defun mark-as-spam ()
14.149+ "mark message as spam."
14.150+ (interactive)
14.151+ (mark-as-read)
14.152+ (notmuch-search-tag (list "+spam")))
14.153+
14.154+ (keymap-set user-map "e m" #'notmuch)
14.155+ (keymap-set user-map "e M" #'notmuch-exec-offlineimap)
14.156+ (keymap-set notmuch-search-mode-map "S" #'mark-as-spam)
14.157+ (keymap-set notmuch-search-mode-map "R" #'mark-as-read)
14.158+ (keymap-set notmuch-search-mode-map "T" #'mark-as-todo))
14.159+
14.160+(use-package elfeed
14.161+ :ensure t
14.162+ :custom
14.163+ elfeed-feeds
14.164+ '(("http://threesixty360.wordpress.com/feed/" blog math)
14.165+ ("http://www.50ply.com/atom.xml" blog dev)
14.166+ ("http://blog.cryptographyengineering.com/feeds/posts/default" blog)
14.167+ ("http://abstrusegoose.com/feed.xml" comic)
14.168+ ("http://accidental-art.tumblr.com/rss" image math)
14.169+ ("http://researchcenter.paloaltonetworks.com/unit42/feed/" security)
14.170+ ("http://curiousprogrammer.wordpress.com/feed/" blog dev)
14.171+ ("http://feeds.feedburner.com/amazingsuperpowers" comic)
14.172+ ("http://amitp.blogspot.com/feeds/posts/default" blog dev)
14.173+ ("http://pages.cs.wisc.edu/~psilord/blog/rssfeed.rss" blog)
14.174+ ("http://www.anticscomic.com/?feed=rss2" comic)
14.175+ ("http://feeds.feedburner.com/blogspot/TPQSS" blog dev)
14.176+ ("http://techchrunch.com/feeds" tech news)
14.177+ ("https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml" tech news)
14.178+ ("https://static.fsf.org/fsforg/rss/news.xml" tech news)
14.179+ ("https://feeds.npr.org/1001/rss.xml" news)
14.180+ ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=10000664" fin news)
14.181+ ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=19854910" tech news)
14.182+ ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=100003114" us news)
14.183+ ("http://arxiv.org/rss/cs" cs rnd)
14.184+ ("http://arxiv.org/rss/math" math rnd)
14.185+ ("http://arxiv.org/rss/q-fin" q-fin rnd)
14.186+ ("http://arxiv.org/rss/stat" stat rnd)
14.187+ ("http://arxiv.org/rss/econ" econ rnd)
14.188+ ;; John Wiegley
14.189+ ("http://newartisans.com/rss.xml" dev blog)
14.190+ ;; comp
14.191+ ;; ("https://lab.rwest.io/comp.atom?feed_token=pHu9qwLkjy4CWJHx9rrJ" comp vc)
14.192+ ("https://www.reddit.com/r/listentothis/.rss" music reddit)
14.193+ ("https://www.ftc.gov/feeds/press-release-consumer-protection.xml" gov ftc)
14.194+ ("https://api2.fcc.gov/edocs/public/api/v1/rss/" gov fcc)
14.195+ )
14.196+ :init
14.197+ (defun yt-dl-it (url)
14.198+ "Downloads the URL in an async shell"
14.199+ (let ((default-directory "~/media/yt"))
14.200+ (async-shell-command (format "youtube-dl %s" url))))
14.201+
14.202+ (defun elfeed-youtube-dl (&optional use-generic-p)
14.203+ "Youtube-DL link"
14.204+ (interactive "P")
14.205+ (let ((entries (elfeed-search-selected)))
14.206+ (cl-loop for entry in entries
14.207+ do (elfeed-untag entry 'unread)
14.208+ when (elfeed-entry-link entry)
14.209+ do (yt-dl-it it))
14.210+ (mapc #'elfeed-search-update-entry entries)
14.211+ (unless (use-region-p) (forward-line))))
14.212+ :config
14.213+ (keymap-set elfeed-search-mode-map "d" 'elfeed-youtube-dl)
14.214+ (keymap-set user-map "e f" #'elfeed)
14.215+ (keymap-set user-map "e F" #'elfeed-update))
14.216+
14.217+(use-package org-mime :ensure t)
14.218+
14.219+(use-package sh-script
14.220+ :hook (sh-mode . flymake-mode))
14.221+
14.222+(use-package tempo
14.223+ :custom
14.224+ tempo-interactive t
14.225+ :config
14.226+ (tempo-define-template
14.227+ "org:readme"
14.228+ '("#+TITLE: " p n>
14.229+ "#+AUTHOR: " user-full-name " <" user-mail-address ">" n>)
14.230+ "org:readme"
14.231+ "Insert a readme.org file template.")
14.232+ (tempo-define-template "org:src"
14.233+ '("#+begin_src " p n>
14.234+ "#+end_src" n>)
14.235+ "org:src"))
14.236+;;; Org Config
14.237+(keymap-set user-map "t" #'org-todo)
14.238+
14.239+;; populate org-babel
14.240+(org-babel-do-load-languages
14.241+ ;; TODO 2021-10-24: bqn, apl, k
14.242+ 'org-babel-load-languages '((shell . t)
14.243+ (emacs-lisp . t)
14.244+ (lisp . t)
14.245+ (org . t)
14.246+ (eshell . t)
14.247+ (sed . t)
14.248+ (awk . t)
14.249+ (dot . t)
14.250+ (js . t)
14.251+ (C . t)
14.252+ (python . t)
14.253+ (lua . t)
14.254+ (lilypond . t)))
14.255+;;; IRC
14.256+(setq erc-format-nick-function 'erc-format-@nick)
14.257+
14.258+(defun start-erc ()
14.259+ "Connect to IRC."
14.260+ (interactive)
14.261+ (erc-tls :server "irc.libera.chat" :port 6697
14.262+ :client-certificate '("/mnt/y/data/private/krypt/libera.pem"))
14.263+ (setq erc-autojoin-channels-alist '(("irc.libera.chat" "#emacs")
14.264+ ("irc.libera.chat" "#linux")
14.265+ ("irc.libera.chat" "#rust")
14.266+ ("irc.libera.chat" "#btrfs")
14.267+ ("irc.libera.chat" "#lisp")
14.268+ ("irc.libera.chat" "#sbcl")
14.269+ ("irc.oftc.net" "#llvm"))))
14.270+;;; Tags
14.271+;;;###autoload
14.272+(defun refresh-tags ()
14.273+ "Refresh TAGS database in `user-emacs-directory'."
14.274+ (interactive)
14.275+ (let ((default-directory user-emacs-directory))
14.276+ (async-shell-command
14.277+ "etags ./*.el \\
14.278+./lib/*.el \\
14.279+~/dev/comp/org/*.el \\
14.280+~/dev/comp/core/emacs/*.el \\
14.281+~/dev/comp/core/emacs/lib/*.el \\
14.282+-o TAGS")))
14.283+
14.284+(unless (string-equal "hyde" system-name)
14.285+ (add-hook 'dired-mode-hook #'all-the-icons-dired-mode)
14.286+ (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode))
14.287+
14.288+(provide 'ellis)
14.289+;;; ellis.el ends here
17.1--- a/ellis.el Wed May 01 18:04:18 2024 -0400
17.2+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
17.3@@ -1,286 +0,0 @@
17.4-;;; ellis.el --- Richard's custom-file -*- lexical-binding: t; -*-
17.5-
17.6-;; Copyright (C) 2023
17.7-
17.8-;; Author: Richard Westhaver <ellis@rwest.io>
17.9-
17.10-;; This program is free software; you can redistribute it and/or modify
17.11-;; it under the terms of the GNU General Public License as published by
17.12-;; the Free Software Foundation, either version 3 of the License, or
17.13-;; (at your option) any later version.
17.14-
17.15-;; This program is distributed in the hope that it will be useful,
17.16-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17.17-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17.18-;; GNU General Public License for more details.
17.19-
17.20-;; You should have received a copy of the GNU General Public License
17.21-;; along with this program. If not, see <https://www.gnu.org/licenses/>.
17.22-
17.23-;;; Commentary:
17.24-
17.25-;; This is an example of what you may want to add to your custom
17.26-;; config file. Feel free to rip.
17.27-
17.28-;;; Code:
17.29-(require 'inbox)
17.30-(require 'sk)
17.31-(require 'slime-cape)
17.32-(require 'sxp)
17.33-(require 'ulang)
17.34-
17.35-(defalias 'make #'compile)
17.36-
17.37-(setopt default-theme 'modus-vivendi-tritanopia
17.38- user-lab-directory (join-paths user-home-directory "dev")
17.39- company-source-directory (join-paths user-lab-directory "comp"))
17.40-
17.41-(unless (display-graphic-p) (setq default-theme 'wheatgrass))
17.42-
17.43-(when (linux-p) (setq dired-listing-switches "-alsh"))
17.44-
17.45-(defvar emacs-config-source (join-paths company-source-directory "core/emacs"))
17.46-
17.47-;;;###autoload
17.48-(defun edit-emacs-config (&optional src)
17.49- (interactive (list current-prefix-arg))
17.50- (let ((file (if src
17.51- (expand-file-name "default.el" emacs-config-source)
17.52- user-custom-file)))
17.53- (find-file file)))
17.54-
17.55-(keymap-set user-map "e c" #'edit-emacs-config)
17.56-(keymap-set emacs-lisp-mode-map "C-c C-l" #'load-file)
17.57-(keymap-set emacs-lisp-mode-map "C-c M-k" #'elisp-byte-compile-file)
17.58-
17.59-;; (add-hook 'common-lisp-mode-hook #'enable-paredit-mode)
17.60-;; (add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode)
17.61-
17.62-(repeat-mode)
17.63-
17.64-(defun remember-project ()
17.65- (interactive)
17.66- (project-remember-project (project-current))
17.67- project--list)
17.68-
17.69-(defun remember-lab-projects ()
17.70- (interactive)
17.71- (project-remember-projects-under user-lab-directory t))
17.72-
17.73-(keymap-global-set "C-<tab>" #'hippie-expand)
17.74-(keymap-set minibuffer-local-map "C-<tab>" #'hippie-expand)
17.75-(keymap-set ctl-x-x-map "p p" #'remember-project)
17.76-(keymap-set ctl-x-x-map "p l" #'remember-lab-projects)
17.77-
17.78-(add-hook 'prog-mode-hook #'skt-mode)
17.79-(add-hook 'org-mode-hook #'skt-mode)
17.80-(add-hook 'prog-mode-hook #'company-mode)
17.81-
17.82-(add-hook 'notmuch-message-mode-hook #'turn-on-orgtbl)
17.83-
17.84-(setopt skt-enable-tempo-elements t
17.85- skt-completing-read t
17.86- skt-delete-duplicate-marks t)
17.87-
17.88-(keymap-set skt-mode-map "C-c M-b" #'tempo-backward-mark)
17.89-(keymap-set skt-mode-map "C-c M-f" #'tempo-forward-mark)
17.90-(keymap-set skt-mode-map "C-c M-a" #'tempo-complete-tag)
17.91-
17.92-(use-package markdown-mode :ensure t)
17.93-
17.94-(use-package ol-notmuch :ensure t)
17.95-
17.96-(use-package notmuch
17.97- :ensure t
17.98- :init
17.99- (setopt
17.100- mail-user-agent 'message-user-agent
17.101- smtpmail-smtp-server "smtp.gmail.com"
17.102- message-send-mail-function 'message-smtpmail-send-it
17.103- smtpmail-debug-info t
17.104- message-default-mail-headers "Cc: \nBcc: \n"
17.105- message-kill-buffer-on-exit t
17.106- user-mail-address "ellis@rwest.io"
17.107- user-full-name "Richard Westhaver"
17.108- notmuch-hello-sections '(notmuch-hello-insert-saved-searches
17.109- notmuch-hello-insert-search
17.110- notmuch-hello-insert-recent-searches
17.111- notmuch-hello-insert-alltags)
17.112- notmuch-show-logo nil
17.113- notmuch-search-oldest-first nil
17.114- notmuch-hello-hide-tags '("kill")
17.115- notmuch-saved-searches '((:name "inbox" :query "tag:inbox" :key "i")
17.116- (:name "unread" :query "tag:unread" :key "u")
17.117- (:name "new" :query "tag:new" :key "n")
17.118- (:name "sent" :query "tag:sent" :key "e")
17.119- (:name "drafts" :query "tag:draft" :key "d")
17.120- (:name "all mail" :query "*" :key "a")
17.121- (:name "todo" :query "tag:todo" :key "t")))
17.122- :config
17.123- ;;;###autoload
17.124- (defun notmuch-exec-offlineimap ()
17.125- "execute offlineimap command and tag new mail with notmuch"
17.126- (interactive)
17.127- (start-process-shell-command "offlineimap"
17.128- "*offlineimap*"
17.129- "offlineimap -o")
17.130- (notmuch-refresh-all-buffers))
17.131-
17.132- (defun offlineimap-get-password (host port)
17.133- (let* ((netrc (netrc-parse (expand-file-name "~/.netrc.gpg")))
17.134- (hostentry (netrc-machine netrc host port port)))
17.135- (when hostentry (netrc-get hostentry "password"))))
17.136-
17.137- (defun mark-as-read ()
17.138- "mark message as read."
17.139- (interactive)
17.140- (notmuch-search-tag '("-new" "-unread" "-inbox")))
17.141-
17.142- (defun mark-as-todo ()
17.143- "mark message as todo."
17.144- (interactive)
17.145- (mark-as-read)
17.146- (notmuch-search-tag '("-new" "-unread" "-inbox" "+todo")))
17.147-
17.148- (defun mark-as-spam ()
17.149- "mark message as spam."
17.150- (interactive)
17.151- (mark-as-read)
17.152- (notmuch-search-tag (list "+spam")))
17.153-
17.154- (keymap-set user-map "e m" #'notmuch)
17.155- (keymap-set user-map "e M" #'notmuch-exec-offlineimap)
17.156- (keymap-set notmuch-search-mode-map "S" #'mark-as-spam)
17.157- (keymap-set notmuch-search-mode-map "R" #'mark-as-read)
17.158- (keymap-set notmuch-search-mode-map "T" #'mark-as-todo))
17.159-
17.160-(use-package elfeed
17.161- :ensure t
17.162- :custom
17.163- elfeed-feeds
17.164- '(("http://threesixty360.wordpress.com/feed/" blog math)
17.165- ("http://www.50ply.com/atom.xml" blog dev)
17.166- ("http://blog.cryptographyengineering.com/feeds/posts/default" blog)
17.167- ("http://abstrusegoose.com/feed.xml" comic)
17.168- ("http://accidental-art.tumblr.com/rss" image math)
17.169- ("http://researchcenter.paloaltonetworks.com/unit42/feed/" security)
17.170- ("http://curiousprogrammer.wordpress.com/feed/" blog dev)
17.171- ("http://feeds.feedburner.com/amazingsuperpowers" comic)
17.172- ("http://amitp.blogspot.com/feeds/posts/default" blog dev)
17.173- ("http://pages.cs.wisc.edu/~psilord/blog/rssfeed.rss" blog)
17.174- ("http://www.anticscomic.com/?feed=rss2" comic)
17.175- ("http://feeds.feedburner.com/blogspot/TPQSS" blog dev)
17.176- ("http://techchrunch.com/feeds" tech news)
17.177- ("https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml" tech news)
17.178- ("https://static.fsf.org/fsforg/rss/news.xml" tech news)
17.179- ("https://feeds.npr.org/1001/rss.xml" news)
17.180- ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=10000664" fin news)
17.181- ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=19854910" tech news)
17.182- ("https://search.cnbc.com/rs/search/combinedcms/view.xml?partnerId=wrss01&id=100003114" us news)
17.183- ("http://arxiv.org/rss/cs" cs rnd)
17.184- ("http://arxiv.org/rss/math" math rnd)
17.185- ("http://arxiv.org/rss/q-fin" q-fin rnd)
17.186- ("http://arxiv.org/rss/stat" stat rnd)
17.187- ("http://arxiv.org/rss/econ" econ rnd)
17.188- ;; John Wiegley
17.189- ("http://newartisans.com/rss.xml" dev blog)
17.190- ;; comp
17.191- ;; ("https://lab.rwest.io/comp.atom?feed_token=pHu9qwLkjy4CWJHx9rrJ" comp vc)
17.192- ("https://www.reddit.com/r/listentothis/.rss" music reddit)
17.193- ("https://www.ftc.gov/feeds/press-release-consumer-protection.xml" gov ftc)
17.194- ("https://api2.fcc.gov/edocs/public/api/v1/rss/" gov fcc)
17.195- )
17.196- :init
17.197- (defun yt-dl-it (url)
17.198- "Downloads the URL in an async shell"
17.199- (let ((default-directory "~/media/yt"))
17.200- (async-shell-command (format "youtube-dl %s" url))))
17.201-
17.202- (defun elfeed-youtube-dl (&optional use-generic-p)
17.203- "Youtube-DL link"
17.204- (interactive "P")
17.205- (let ((entries (elfeed-search-selected)))
17.206- (cl-loop for entry in entries
17.207- do (elfeed-untag entry 'unread)
17.208- when (elfeed-entry-link entry)
17.209- do (yt-dl-it it))
17.210- (mapc #'elfeed-search-update-entry entries)
17.211- (unless (use-region-p) (forward-line))))
17.212- :config
17.213- (keymap-set elfeed-search-mode-map "d" 'elfeed-youtube-dl)
17.214- (keymap-set user-map "e f" #'elfeed)
17.215- (keymap-set user-map "e F" #'elfeed-update))
17.216-
17.217-(use-package org-mime :ensure t)
17.218-
17.219-(use-package sh-script
17.220- :hook (sh-mode . flymake-mode))
17.221-
17.222-(use-package tempo
17.223- :custom
17.224- tempo-interactive t
17.225- :config
17.226- (tempo-define-template
17.227- "org:readme"
17.228- '("#+TITLE: " p n>
17.229- "#+AUTHOR: " user-full-name " <" user-mail-address ">" n>)
17.230- "org:readme"
17.231- "Insert a readme.org file template.")
17.232- (tempo-define-template "org:src"
17.233- '("#+begin_src " p n>
17.234- "#+end_src" n>)
17.235- "org:src"))
17.236-;;; Org Config
17.237-(keymap-set user-map "t" #'org-todo)
17.238-
17.239-;; populate org-babel
17.240-(org-babel-do-load-languages
17.241- ;; TODO 2021-10-24: bqn, apl, k
17.242- 'org-babel-load-languages '((shell . t)
17.243- (emacs-lisp . t)
17.244- (lisp . t)
17.245- (org . t)
17.246- (eshell . t)
17.247- (sed . t)
17.248- (awk . t)
17.249- (dot . t)
17.250- (js . t)
17.251- (C . t)
17.252- (python . t)
17.253- (lua . t)
17.254- (lilypond . t)))
17.255-;;; IRC
17.256-(setq erc-format-nick-function 'erc-format-@nick)
17.257-
17.258-(defun start-erc ()
17.259- "Connect to IRC."
17.260- (interactive)
17.261- (erc-tls :server "irc.libera.chat" :port 6697
17.262- :client-certificate '("/mnt/y/data/private/krypt/libera.pem"))
17.263- (setq erc-autojoin-channels-alist '(("irc.libera.chat" "#emacs")
17.264- ("irc.libera.chat" "#linux")
17.265- ("irc.libera.chat" "#rust")
17.266- ("irc.libera.chat" "#btrfs")
17.267- ("irc.libera.chat" "#lisp")
17.268- ("irc.libera.chat" "#sbcl")
17.269- ("irc.oftc.net" "#llvm"))))
17.270-;;; Tags
17.271-;;;###autoload
17.272-(defun refresh-tags ()
17.273- "Refresh TAGS database in `user-emacs-directory'."
17.274- (interactive)
17.275- (let ((default-directory user-emacs-directory))
17.276- (async-shell-command
17.277- "etags ./*.el \\
17.278-./lib/*.el \\
17.279-~/dev/comp/org/*.el \\
17.280-~/dev/comp/core/emacs/*.el \\
17.281-~/dev/comp/core/emacs/lib/*.el \\
17.282--o TAGS")))
17.283-
17.284-(unless (string-equal "hyde" system-name)
17.285- (add-hook 'dired-mode-hook #'all-the-icons-dired-mode)
17.286- (add-hook 'ibuffer-mode-hook #'all-the-icons-ibuffer-mode))
17.287-
17.288-(provide 'ellis)
17.289-;;; ellis.el ends here