diff options
| author | 2026-05-13 13:43:14 +0100 | |
|---|---|---|
| committer | 2026-05-13 13:43:14 +0100 | |
| commit | 75d9c733b56ad0d456cefbfbbf69454061f0b7a8 (patch) | |
| tree | 961531bfd91977ef82a10e540b28d37b5f02d85d | |
| parent | d4bdb4c9489d7ec3f0144ce0934ae38fe446aebe (diff) | |
| download | dotfiles-75d9c733b56ad0d456cefbfbbf69454061f0b7a8.tar.gz dotfiles-75d9c733b56ad0d456cefbfbbf69454061f0b7a8.tar.bz2 dotfiles-75d9c733b56ad0d456cefbfbbf69454061f0b7a8.zip | |
refactor(mail): drop TUI stack, add headless proton-bridge
Remove aerc, khal, khard, vdirsyncer from meta/mail.txt and delete their
configs (aerc/, vdirsyncer systemd override, aerc .desktop handler).
Point linkhandler mailto at xdg-open until a GUI client is set up.
Add systemd user unit for protonmail-bridge --noninteractive, tied to
graphical-session.target so it starts with the sway session.
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | dot_config/aerc/aerc.conf | 32 | ||||
| -rw-r--r-- | dot_config/aerc/binds.conf | 165 | ||||
| -rw-r--r-- | dot_config/systemd/user/protonmail-bridge.service | 14 | ||||
| -rw-r--r-- | dot_config/systemd/user/vdirsyncer.service.d/override.conf | 2 | ||||
| -rwxr-xr-x | dot_local/bin/executable_linkhandler | 2 | ||||
| -rw-r--r-- | dot_local/share/applications/mail.desktop | 19 | ||||
| -rw-r--r-- | meta/mail.txt | 4 |
8 files changed, 16 insertions, 224 deletions
@@ -31,7 +31,7 @@ My Arch Linux configuration, managed with [chezmoi](https://www.chezmoi.io/). | Lock screen | [swaylock](https://github.com/swaywm/swaylock) | | Browser | [LibreWolf](https://librewolf.net/), hardened via `user-overrides.js` + `userChrome.css` (kept under `firefox/` by name for recognizability) | | Secrets & identity | [GPG](https://gnupg.org/) (commit signing + SSH auth via gpg-agent), [pass](https://www.passwordstore.org/) | -| Media & viewers | [mpv](https://mpv.io/), [zathura](https://pwmt.org/projects/zathura/), [yazi](https://yazi-rs.github.io/), [aerc](https://aerc-mail.org/) | +| Media & viewers | [mpv](https://mpv.io/), [zathura](https://pwmt.org/projects/zathura/), [yazi](https://yazi-rs.github.io/) | | Code quality | stylua + [selene](https://github.com/Kampfkarren/selene), [shfmt](https://github.com/mvdan/sh) + [shellcheck](https://www.shellcheck.net/), [ruff](https://github.com/astral-sh/ruff), [taplo](https://taplo.tamasfe.dev/), [prettier](https://prettier.io/) — all wired through `just check` | Keybinds are documented in [`KEYBINDS.md`](./KEYBINDS.md). diff --git a/dot_config/aerc/aerc.conf b/dot_config/aerc/aerc.conf deleted file mode 100644 index 25deb62..0000000 --- a/dot_config/aerc/aerc.conf +++ /dev/null @@ -1,32 +0,0 @@ -[ui] -styleset-name=gruvbox -fuzzy-complete=true -reverse-msglist-order=true -threading-enabled=true -show-thread-context=true - -[compose] -address-book-cmd=khard email --remove-first-line --parsable %s -file-picker-cmd=fzf --multi --query=%s -empty-subject-warning=true -no-attachment-warning=^[^>]*attach(ed|ment) - -[multipart-converters] -text/html=pandoc -f markdown -t html --standalone - -[filters] -text/plain=colorize -text/calendar=calendar -message/delivery-status=colorize -message/rfc822=colorize -text/html=html | colorize -text/*=bat -fP --file-name="$AERC_FILENAME" -application/x-sh=bat -fP -l sh -.headers=colorize - -[openers] -x-scheme-handler/http*=librewolf -text/html=librewolf - -[hooks] -mail-received=notify-send "[$AERC_ACCOUNT/$AERC_FOLDER] New mail from $AERC_FROM_NAME" "$AERC_SUBJECT" diff --git a/dot_config/aerc/binds.conf b/dot_config/aerc/binds.conf deleted file mode 100644 index 145efd9..0000000 --- a/dot_config/aerc/binds.conf +++ /dev/null @@ -1,165 +0,0 @@ -# Binds are of the form <key sequence> = <command to run> -# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>" -# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit -<C-p> = :prev-tab<Enter> -<C-PgUp> = :prev-tab<Enter> -<C-n> = :next-tab<Enter> -<C-PgDn> = :next-tab<Enter> -<C-t> = :term<Enter> -? = :help keys<Enter> -<C-c> = :prompt 'Quit?' quit<Enter> -<C-q> = :prompt 'Quit?' quit<Enter> - -[messages] -q = :quit<Enter> -h = :quit<Enter> - -j = :next<Enter> -<Down> = :next<Enter> -<C-d> = :next 50%<Enter> -<C-f> = :next 100%<Enter> -<PgDn> = :next 100%<Enter> - -k = :prev<Enter> -<Up> = :prev<Enter> -<C-u> = :prev 50%<Enter> -<C-b> = :prev 100%<Enter> -<PgUp> = :prev 100%<Enter> -g = :select 0<Enter> -G = :select -1<Enter> - -J = :next-folder<Enter> -<C-Down> = :next-folder<Enter> -K = :prev-folder<Enter> -<C-Up> = :prev-folder<Enter> -H = :collapse-folder<Enter> -<C-Left> = :collapse-folder<Enter> -L = :expand-folder<Enter> -<C-Right> = :expand-folder<Enter> - -v = :mark -t<Enter> -<Space> = :mark -t<Enter>:next<Enter> -V = :mark -v<Enter> - -T = :toggle-threads<Enter> -zc = :fold<Enter> -zo = :unfold<Enter> - -<Enter> = :view<Enter> -d = :prompt 'Really delete this message?' 'delete-message'<Enter> -D = :delete<Enter> -a = :archive flat<Enter> -A = :unmark -a<Enter>:mark -T<Enter>:archive flat<Enter> - -C = :compose<Enter> -m = :compose<Enter> - -rr = :reply -a<Enter> -rq = :reply -aq<Enter> -Rr = :reply<Enter> -Rq = :reply -q<Enter> - -c = :cf<space> -$ = :term<space> -! = :term<space> -| = :pipe<space> - -/ = :search<space> -\ = :filter<space> -n = :next-result<Enter> -N = :prev-result<Enter> -<Esc> = :clear<Enter> - -s = :split<Enter> -S = :vsplit<Enter> - -[messages:folder=Drafts] -<Enter> = :recall<Enter> - -[view] -/ = :toggle-key-passthrough<Enter>/ -q = :close<Enter> -h = :close<Enter> -O = :open<Enter> -o = :open<Enter> -S = :save<space> -| = :pipe<space> -D = :delete<Enter> -A = :archive flat<Enter> -s = :flag -t<Enter> - -<C-l> = :open-link <space> - -f = :forward<Enter> -rr = :reply -a<Enter> -rq = :reply -aq<Enter> -Rr = :reply<Enter> -Rq = :reply -q<Enter> - -H = :toggle-headers<Enter> -<C-k> = :prev-part<Enter> -<C-Up> = :prev-part<Enter> -<C-j> = :next-part<Enter> -<C-Down> = :next-part<Enter> -J = :next<Enter> -<C-Right> = :next<Enter> -K = :prev<Enter> -<C-Left> = :prev<Enter> - -[view::passthrough] -$noinherit = true -$ex = <C-x> -<Esc> = :toggle-key-passthrough<Enter> - -[compose] -# Keybindings used when the embedded terminal is not selected in the compose -# view -$noinherit = true -$ex = <C-x> -<C-k> = :prev-field<Enter> -<C-Up> = :prev-field<Enter> -<C-j> = :next-field<Enter> -<C-Down> = :next-field<Enter> -<A-p> = :switch-account -p<Enter> -<C-Left> = :switch-account -p<Enter> -<A-n> = :switch-account -n<Enter> -<C-Right> = :switch-account -n<Enter> -<tab> = :next-field<Enter> -<backtab> = :prev-field<Enter> -<C-p> = :prev-tab<Enter> -<C-PgUp> = :prev-tab<Enter> -<C-n> = :next-tab<Enter> -<C-PgDn> = :next-tab<Enter> - -[compose::editor] -# Keybindings used when the embedded terminal is selected in the compose view -$noinherit = true -$ex = <C-x> -<C-k> = :prev-field<Enter> -<C-Up> = :prev-field<Enter> -<C-j> = :next-field<Enter> -<C-Down> = :next-field<Enter> -<C-p> = :prev-tab<Enter> -<C-PgUp> = :prev-tab<Enter> -<C-n> = :next-tab<Enter> -<C-PgDn> = :next-tab<Enter> - -[compose::review] -# Keybindings used when reviewing a message to be sent -y = :send<Enter> -n = :abort<Enter> -v = :preview<Enter> -p = :postpone<Enter> -q = :choose -o d discard abort -o p postpone postpone<Enter> -e = :edit<Enter> -a = :attach<space> -d = :detach<space> - -[terminal] -$noinherit = true -$ex = <C-x> - -<C-p> = :prev-tab<Enter> -<C-n> = :next-tab<Enter> -<C-PgUp> = :prev-tab<Enter> -<C-PgDn> = :next-tab<Enter> diff --git a/dot_config/systemd/user/protonmail-bridge.service b/dot_config/systemd/user/protonmail-bridge.service new file mode 100644 index 0000000..5da14c5 --- /dev/null +++ b/dot_config/systemd/user/protonmail-bridge.service @@ -0,0 +1,14 @@ +[Unit] +Description=ProtonMail Bridge (headless IMAP/SMTP proxy) +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +ExecStart=/usr/bin/protonmail-bridge --noninteractive +Restart=on-failure +RestartSec=10s +Environment=PASSWORD_STORE_DIR=%h/.local/share/password-store + +[Install] +WantedBy=graphical-session.target diff --git a/dot_config/systemd/user/vdirsyncer.service.d/override.conf b/dot_config/systemd/user/vdirsyncer.service.d/override.conf deleted file mode 100644 index 6bc6060..0000000 --- a/dot_config/systemd/user/vdirsyncer.service.d/override.conf +++ /dev/null @@ -1,2 +0,0 @@ -[Service] -Environment="PASSWORD_STORE_DIR=%h/.local/share/password-store" diff --git a/dot_local/bin/executable_linkhandler b/dot_local/bin/executable_linkhandler index ee63eed..747adc5 100755 --- a/dot_local/bin/executable_linkhandler +++ b/dot_local/bin/executable_linkhandler @@ -35,7 +35,7 @@ case "$url" in setsid rssadd "$url" >/dev/null 2>&1 & ;; mailto:*) - setsid aerc "$url" >/dev/null 2>&1 & + xdg-open "$url" >/dev/null 2>&1 & ;; *.dot) setsid xdot "$url" >/dev/null 2>&1 & diff --git a/dot_local/share/applications/mail.desktop b/dot_local/share/applications/mail.desktop deleted file mode 100644 index d8d5e84..0000000 --- a/dot_local/share/applications/mail.desktop +++ /dev/null @@ -1,19 +0,0 @@ -[Desktop Entry] -Version=1.0 -Name=aerc - -GenericName=Mail Client -Comment=Launches the aerc email client -Keywords=Email,Mail,IMAP,SMTP -Categories=Office;Network;Email;ConsoleOnly - -Type=Application -Icon=utilities-terminal -Terminal=true -Exec=aerc - -[Desktop Action compose] -# enable as default mailto: handler using -# xdg-mime default aerc.desktop x-scheme-handler/mailto -Exec=aerc %u -MimeType=x-scheme-handler/mailto; diff --git a/meta/mail.txt b/meta/mail.txt index 235fa1b..4234dc4 100644 --- a/meta/mail.txt +++ b/meta/mail.txt @@ -1,5 +1 @@ -aerc -khal -khard protonmail-bridge-nogui -vdirsyncer |
