24 Incheckningar

Upphovsman SHA1 Meddelande Datum
  Luke Smith b7b7f21d69
-x option fixed, fix #1014 1 år sedan
  Luke Smith 0f9cf65e10
properly create imapnotify dir 1 år sedan
  Luke Smith 40ff0fc93f
Merge pull request #1012 from czardien/fix 1 år sedan
  Adrien Czerny d0dfcc3c27 Fix unary operator expected error 1 år sedan
  Luke Smith 943b45340c
Revert "fix #993" 1 år sedan
  Luke Smith 883e570d6d
fix #993 1 år sedan
  Luke Smith cfc06f891d
more robust mbsync check, close #956 1 år sedan
  Luke Smith 31589ada92
use lmdb if available, close #950 1 år sedan
  Luke Smith 213afe1e8f
Merge pull request #976 from ivan-boikov/master 1 år sedan
  Luke Smith 5300aa7f72
Merge pull request #924 from CarlosLoboxyz/master 1 år sedan
  Luke Smith 650794bb1d
Merge branch 'master' into master 1 år sedan
  Luke Smith 05fcf7b3e1
Merge pull request #1003 from staticssleever668/fix_dash_subject 1 år sedan
  Luke Smith 06e82c8a10
Merge pull request #967 from appeasementPolitik/patch-1 1 år sedan
  Luke Smith ed946ef98b
Merge branch 'master' into patch-1 1 år sedan
  Luke Smith 1d6dc7b8f6
Merge pull request #1004 from alx-sychev/fix_man_mw_P_option_formatting 1 år sedan
  Luke Smith ea8fef3438
Merge pull request #999 from jdujava/fix-multiline-subjects 1 år sedan
  Luke Smith 8cb5f9d2e4
Merge pull request #1000 from jdujava/fix-plural 1 år sedan
  Alexandr Sychev 0a95e2cb9b fix -P option description formatting in mw.1 1 år sedan
  Yaroslav Chvanov 824feedc68
fix(mailsync): delimit notification text from flags 1 år sedan
  Jonas Dujava 8e35e474c5
Fix usages of mail/mails 1 år sedan
  Jonas Dujava 43eceb5536
Fix notifications for mails with multiline subject 1 år sedan
  ivan-boikov f8ffab3a11 No mailsync with locked GPG key in non-interactive shells 2 år sedan
  appeasementPolitik 532332b8df
Fix notify-send not coming through 2 år sedan
  Carlos Lobo 058fc42c21 Add goimapnotify for push notifications 3 år sedan
5 ändrade filer med 57 tillägg och 16 borttagningar
Delad Vy
  1. +9
    -1
      README.md
  2. +11
    -7
      bin/mailsync
  3. +21
    -8
      bin/mw
  4. +1
    -0
      mw.1
  5. +15
    -0
      share/imapnotify-temp

+ 9
- 1
README.md Visa fil

@@ -4,7 +4,7 @@ https://muttwizard.com/

Get this great stuff without effort:

- A full-featured and autoconfigured email client on the terminal with neomutt
- A full-featured and autoconfigured email client on the terminal wibuiltth neomutt
- Mail stored offline enabling the ability to:
* view and write emails while you're away from
the internet
@@ -54,6 +54,8 @@ A user of Arch-based distros can also install the current mutt-wizard release fr

### Optional Dependencies

- `goimapnotify` - required for push notifications.
[Check here for reference](https://wiki.archlinux.org/title/Isync#With_imapnotify).
- `pam-gnupg` - Automatically logs you into your GPG key on login so you will
never need to input your password once logged on to your system. Check the
repo and directions out [here](https://github.com/cruegge/pam-gnupg).
@@ -134,6 +136,12 @@ To give you an example of the interface, here's an idea:
- <kbd>ctrl-b</kbd> - open a menu to select a URL you want to open in your browser.
- <kbd>p</kbd> - encrypt/sign your message (in compose view, before sending the email).

## Enable push notifications per mail
**Note**: Replace the `fulladdrs` with your actual email address. You have to do this for each new mail you want to setup instant notifications.
```bash
systemctl enable --user goimapnotify@fulladdrs.service
```

## Additional functionality

- `pam-gnupg` - Automatically logs you into your GPG key on login, so you will


+ 11
- 7
bin/mailsync Visa fil

@@ -24,6 +24,9 @@ eval "$(grep -h -- \
"$HOME/.config/zsh/.zshenv" "$HOME/.bashrc" "$HOME/.zshrc" "$HOME/.config/zsh/.zshrc" \
"$HOME/.pam_environment" 2>/dev/null)"

# For non-interactive shell (e.g. cron job) run only when the GPG key (in $GNUPGHOME or pass --homedir) is unlocked
tty -s || (echo "dummy" | gpg --sign --batch --pinentry-mode error -o /dev/null > /dev/null 2>&1) || exit

export GPG_TTY="$(tty)"

[ -n "$MBSYNCRC" ] && alias mbsync="mbsync -c $MBSYNCRC" || MBSYNCRC="$HOME/.mbsyncrc"
@@ -45,7 +48,7 @@ case "$(uname)" in

notify() { [ -n "$pgrepoutput" ] && for x in ${displays:-:0}; do
export DISPLAY="$x"
notify-send --app-name="mutt-wizard" "$1" "$2"
notify-send --app-name="mutt-wizard" -- "$1" "$2"
done ;}
;;
esac
@@ -63,16 +66,17 @@ syncandnotify() {
newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l)
case 1 in
$((newcount > 5)) )
echo "$newcount new mail for $2."
[ -z "$MAILSYNC_MUTE" ] && notify "New Mail!" "📬 $newcount new mail(s) in \`$2\` account."
echo "$newcount new mails for $2." >/dev/tty
[ -z "$MAILSYNC_MUTE" ] && notify "New Mail!" "📬 $newcount new mails in \`$2\` account."
;;
$((newcount > 0)) )
echo "$newcount new mail for $2."
echo "$newcount new mail(s) for $2." >/dev/tty
[ -z "$MAILSYNC_MUTE" ] &&
for file in $new; do
# Extract and decode subject and sender from mail.
subject="$(sed -n "/^Subject:/ s|Subject: *|| p" "$file" |
perl -CS -MEncode -ne 'print decode("MIME-Header", $_)')"
# Extract and decode subject and sender from mail.
subject=$(awk '/^Subject: / && ++n == 1,/^.*: / && ++i == 2' "$file" | head -n-1 |
perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' |
sed 's/^Subject: //' | tr -d '\n\t')
from="$(sed -n "/^From:/ s|From: *|| p" "$file" |
perl -CS -MEncode -ne 'print decode("MIME-Header", $_)')"
from="${from% *}" ; from="${from%\"}" ; from="${from#\"}"


+ 21
- 8
bin/mw Visa fil

@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash

set -a

@@ -12,12 +12,14 @@ msmtprc="${XDG_CONFIG_HOME:-$HOME/.config}/msmtp/config"
msmtplog="${XDG_STATE_HOME:-$HOME/.local/state}/msmtp/msmtp.log"
mbsyncrc="${MBSYNCRC:-$HOME/.mbsyncrc}"
mpoprc="${XDG_CONFIG_HOME:-$HOME/.config}/mpop/config"
imapnotify="${XDG_CONFIG_HOME:-$HOME/.config}/imapnotify"
mpoptemp="$muttshare/mpop-temp"
mbsynctemp="$muttshare/mbsync-temp"
mutttemp="$muttshare/mutt-temp"
msmtptemp="$muttshare/msmtp-temp"
onlinetemp="$muttshare/online-temp"
notmuchtemp="$muttshare/notmuch-temp"
imapnotifytemp="$muttshare/imapnotify-temp"
# With the use of templates, it's impossible to use parameter substitution.
# Therefore, some default variables that might be otherwise overwritten are set
# here.
@@ -29,14 +31,19 @@ maxmes="0"

alias mbsync='mbsync -c "$mbsyncrc"'

# mbsync now requires "Far/Near" rather than "Master/Slave", but Ubuntu/Debian
# have the older version.
if command -V apt-get >/dev/null 2>&1; then
master="Master"
slave="Slave"
else
# mbsync >=1.4.0 requires "Far/Near" rather than "Master/Slave."
mbver="$(mbsync -v)"
mbver="${mbver#* }"
mbver="${mbver%.*}"
# Comparing two float numbers in bash is a pain in the butt, so we get rid of
# dots and turn them into nice integers
mbver="${mbver/\./}"
if [ "${mbver}" -gt 14 ]; then
master="Far"
slave="Near"
else
master="Master"
slave="Slave"
fi

for x in "/etc/ssl/certs/ca-certificates.crt" \
@@ -78,6 +85,10 @@ prepmpop() {
envsubst <"$mpoptemp" >>"$mpoprc"
}

prepimapnotify() {
mkdir -p "$imapnotify" ; envsubst < "$imapnotifytemp" >> "$imapnotify/$fulladdr.conf"
}

prepmutt() {
mkdir -p "${muttrc%/*}" "$accdir"
envsubst <"$mutttemp" >"$accdir/$fulladdr.muttrc"
@@ -85,6 +96,7 @@ prepmutt() {
! grep -q "^source.*mutt-wizard.muttrc" "$muttrc" && echo "source $muttshare/mutt-wizard.muttrc" >>"$muttrc"
! grep "^source.*.muttrc" "$muttrc" | grep -qv "$muttshare/mutt-wizard.muttrc" && echo "source $accdir/$fulladdr.muttrc" >>"$muttrc"
echo "macro index,pager i$idnum '<sync-mailbox><enter-command>source $accdir/$fulladdr.muttrc<enter><change-folder>!<enter>;<check-stats>' \"switch to $fulladdr\"" >>"$muttrc"
neomutt -v | grep -q lmdb && ! grep -q "^set header_cache_backend.*lmdb" "$muttrc" && echo "set header_cache_backend = \"lmdb\"" >>"$muttrc"
}

getprofiles() {
@@ -106,6 +118,7 @@ getprofiles() {
prepmsmtp
prepmutt
prepnotmuch
prepimapnotify
}

parsedomains() {
@@ -181,7 +194,7 @@ askinfo() {
}

insertpass() {
printf "%s" "$password" | pass insert -fe "$PASSWORD_STORE_DIR/$passprefix$fulladdr"
printf "%s" "$password" | pass insert -fe "$passprefix$fulladdr"
}

errorexit() {


+ 1
- 0
mw.1 Visa fil

@@ -70,6 +70,7 @@ SMTP server port (assumed to be 465 if not specified)
.TP
.B -x
Account password. You will be prompted for the password interactively if this option is not given.
.TP
.B -P
Pass Prefix. The password will be stored using pass at <passprefix><email>
.SH OTHER OPTIONS


+ 15
- 0
share/imapnotify-temp Visa fil

@@ -0,0 +1,15 @@
{
"host": "$imap",
"port": $iport,
"tls": true,
"tlsOptions": {
"rejectUnauthorized": false
},
"username": "$login",
"password": "",
"passwordCmd": "pass $passprefix$fulladdr",
"onNewMail": "mailsync",
"onNewMailPost": "",
"boxes": [ "INBOX" ]
}


Laddar…
Avbryt
Spara