Absolutely! Here's a complete step-by-step guide to set up notmuch with aerc: ## Step 1: Verify notmuch database location ```bash notmuch config get database.path ``` This will output something like `/home/yourusername/.local/share/mail` or `/home/yourusername/Mail`. **Remember this path** - you'll need it. ## Step 2: Create the notmuch queries file ```bash mkdir -p ~/.config/aerc nano ~/.config/aerc/notmuch-queries ``` Paste this content (you can customize later): ``` # Priority folders Priority 1 - Urgent=tag:priority1 AND tag:inbox Priority 2 - Work=tag:priority2 AND tag:inbox Priority 3 - Low=tag:priority3 AND tag:inbox # Categories Newsletters=tag:newsletter Social Media=tag:social Shopping=tag:shopping Finance=tag:finance Travel=tag:travel Development=tag:dev # Standard folders Inbox=tag:inbox AND NOT tag:spam Unread=tag:unread AND NOT tag:spam Sent=tag:sent Spam=tag:spam Important=tag:important All Mail=* ``` Save and exit (Ctrl+O, Enter, Ctrl+X). ## Step 3: Update aerc accounts.conf **First, backup your current config:** ```bash cp ~/.config/aerc/accounts.conf ~/.config/aerc/accounts.conf.backup ``` **Edit the config:** ```bash nano ~/.config/aerc/accounts.conf ``` **Replace your IMAP accounts with this** (adjust the database path from Step 1): ```ini [Proton] source = notmuch:///home/yourusername/.local/share/mail query-map = ~/.config/aerc/notmuch-queries outgoing = smtp://user@127.0.0.1:1025 outgoing-cred-cmd = pass protonmail-bridge from = Your Name ``` **Important notes:** - Use `notmuch://` (with three slashes) followed by the **absolute path** - Replace `/home/yourusername/.local/share/mail` with your actual path from Step 1 - Replace `user` with your actual ProtonMail Bridge username - Replace email addresses with your actual emails **If you want multiple "from" addresses:** ```ini [Proton] source = notmuch:///home/yourusername/.local/share/mail query-map = ~/.config/aerc/notmuch-queries outgoing = smtp://user@127.0.0.1:1025 outgoing-cred-cmd = pass protonmail-bridge from = Your Name aliases = work@proton.me,personal@proton.me ``` Save and exit. ## Step 4: Tag existing emails for processing ```bash # Tag all mail as 'new' so afew will process it notmuch tag +new -- '*' # Verify notmuch count tag:new ``` Should show your total email count (e.g., 6050). ## Step 5: Run afew to apply filters ```bash PYTHONWARNINGS="ignore::UserWarning" afew --tag --new --verbose ``` You should see output like: ``` SpamFilter Tagging affected 145 message(s) Filter.1: High priority - Boss and VIPs Tagging affected 23 message(s) Filter.10: Newsletters and subscriptions Tagging affected 892 message(s) ... ``` ## Step 6: Verify tags were applied ```bash notmuch count tag:spam notmuch count tag:newsletter notmuch count tag:priority1 notmuch count tag:inbox ``` You should see actual numbers now! ## Step 7: Test aerc with notmuch ```bash aerc ``` **What you should see:** - Instead of "INBOX", "Sent", etc., you'll see your query-based folders - "Priority 1 - Urgent" - "Priority 2 - Work" - "Newsletters" - "Inbox" - etc. **Navigate folders:** ``` :cf Priority 1 - Urgent ``` Or use `j/k` to navigate the folder list and press Enter. ## Step 8: Set up keybindings for quick navigation ```bash nano ~/.config/aerc/binds.conf ``` Add to the `[messages]` section: ```ini [messages] # Quick folder navigation g1 = :cf Priority 1 - Urgent g2 = :cf Priority 2 - Work g3 = :cf Priority 3 - Low gn = :cf Newsletters gs = :cf Spam gi = :cf Inbox gu = :cf Unread ga = :cf All Mail # Tag management t = :prompt 'Tag: ' 'tag ' T = :prompt 'Remove tag: ' 'untag ' # Quick tags !1 = :tag +priority1 !2 = :tag +priority2 !s = :tag +spam ``` ## Step 9: Set up automatic mail syncing ```bash mkdir -p ~/.local/bin nano ~/.local/bin/sync-mail.sh ``` Paste: ```bash #!/bin/bash # Sync from ProtonMail Bridge mbsync -a # Index new messages (auto-tags them as 'new') notmuch new # Apply filters to new messages PYTHONWARNINGS="ignore::UserWarning" afew --tag --new echo "Mail sync complete at $(date)" ``` Make it executable: ```bash chmod +x ~/.local/bin/sync-mail.sh ``` **Test it:** ```bash ~/.local/bin/sync-mail.sh ``` ## Step 10: Automate with systemd (optional) Create the service: ```bash mkdir -p ~/.config/systemd/user nano ~/.config/systemd/user/mailsync.service ``` Paste (replace `yourusername` with your actual username): ```ini [Unit] Description=Mailbox sync [Service] Type=oneshot ExecStart=/home/yourusername/.local/bin/sync-mail.sh ``` Create the timer: ```bash nano ~/.config/systemd/user/mailsync.timer ``` Paste: ```ini [Unit] Description=Mailbox sync timer [Timer] OnBootSec=2m OnUnitActiveSec=5m [Install] WantedBy=timers.target ``` Enable and start: ```bash systemctl --user daemon-reload systemctl --user enable --now mailsync.timer systemctl --user status mailsync.timer ``` ## Step 11: Verify everything works **Check aerc shows virtual folders:** ```bash aerc ``` Press `:cf ` and hit Tab - you should see autocomplete for your virtual folders. **Check folder contents:** ``` :cf Priority 1 - Urgent ``` You should see emails that match the filter. **Check syncing works:** ```bash # Manually sync ~/.local/bin/sync-mail.sh # Check timer status systemctl --user list-timers ``` ## Troubleshooting **Issue: aerc shows "No folders"** ```bash # Check query-map file exists cat ~/.config/aerc/notmuch-queries # Check path in accounts.conf grep source ~/.config/aerc/accounts.conf ``` **Issue: Folders are empty** ```bash # Check tags exist notmuch count tag:inbox notmuch count tag:newsletter # If 0, re-run afew notmuch tag +new -- '*' afew --tag --new --verbose ``` **Issue: Can't send emails** ```bash # Test SMTP manually echo "test" | msmtp -a proton yourmail@proton.me # Check ProtonMail Bridge is running pgrep -a bridge ``` **Issue: "Unknown account" error** Your account name in `accounts.conf` is `[Proton]` but you might be referencing it wrong. Make sure keybindings and commands use the exact name. ## Quick test checklist - [ ] `notmuch count tag:inbox` shows a number - [ ] `notmuch count tag:newsletter` shows a number - [ ] `cat ~/.config/aerc/notmuch-queries` shows your queries - [ ] `aerc` shows virtual folders in the sidebar - [ ] `:cf Inbox` in aerc shows emails - [ ] `~/.local/bin/sync-mail.sh` runs without errors Once all these work, you're fully set up! Let me know which step gives you trouble.