Compare commits
2 commits
1a6b929e24
...
3cc556fd33
| Author | SHA1 | Date | |
|---|---|---|---|
| 3cc556fd33 | |||
| 93394129c0 |
21 changed files with 4 additions and 238 deletions
|
|
@ -86,8 +86,8 @@ bind index,pager ro reply
|
||||||
macro index,pager \CU "<enter-command> unset pipe_decode<enter><pipe-message>extract_url | fzf | clip<enter>" "get URLs"
|
macro index,pager \CU "<enter-command> unset pipe_decode<enter><pipe-message>extract_url | fzf | clip<enter>" "get URLs"
|
||||||
|
|
||||||
# Refresh far imap email
|
# Refresh far imap email
|
||||||
macro index O "<sync-mailbox><shell-escape>export MBSYNC_PRE=true; sync-mail<enter>" "refresh all e-mail"
|
macro index O "<sync-mailbox><shell-escape>export MBSYNC_PRE=true; neomutt-syncmail<enter>" "refresh all e-mail"
|
||||||
|
|
||||||
# Send mail to taskwarrior
|
# Send mail to taskwarrior
|
||||||
macro index,pager ,T "<pipe-message>mutt2task -c -d -t<enter>" "add mail as task to taskwarrior with custom description and tags"
|
macro index,pager ,T "<pipe-message>neomutt-2task -c -d -t<enter>" "add mail as task to taskwarrior with custom description and tags"
|
||||||
macro index,pager ,t "<pipe-message>mutt2task -c<enter>" "add mail as task to taskwarrior"
|
macro index,pager ,t "<pipe-message>neomutt-2task -c<enter>" "add mail as task to taskwarrior"
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ Take care that most of the credential/account setup of course is highly specific
|
||||||
## mail
|
## mail
|
||||||
|
|
||||||
The current mail setup uses `mbsync` (from the isync project) to locally mirror the GMail imap folder.
|
The current mail setup uses `mbsync` (from the isync project) to locally mirror the GMail imap folder.
|
||||||
It is run through a `sync-mail` script which can invoke pre- and post-sync hooks
|
It is run through a `neomutt-syncmail` script which can invoke pre- and post-sync hooks
|
||||||
(e.g. run your incoming mail through filters as soon as they arrive or ingest them into full-text search engines).[^1]
|
(e.g. run your incoming mail through filters as soon as they arrive or ingest them into full-text search engines).[^1]
|
||||||
The sync script also automatically unlocks any pass directory so that credentials can be put into their respective applications and the directory closes again after use.
|
The sync script also automatically unlocks any pass directory so that credentials can be put into their respective applications and the directory closes again after use.
|
||||||
`msmtp` is used for mail sending by neomutt (and git if using git send-email).
|
`msmtp` is used for mail sending by neomutt (and git if using git send-email).
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=GnuPG network certificate management daemon
|
|
||||||
Documentation=man:dirmngr(8)
|
|
||||||
Requires=dirmngr.socket
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/usr/bin/dirmngr --supervised
|
|
||||||
ExecReload=/usr/bin/gpgconf --reload dirmngr
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=GnuPG network certificate management daemon
|
|
||||||
Documentation=man:dirmngr(8)
|
|
||||||
|
|
||||||
[Socket]
|
|
||||||
ListenStream=%t/gnupg/S.dirmngr
|
|
||||||
SocketMode=0600
|
|
||||||
DirectoryMode=0700
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=sockets.target
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=GnuPG cryptographic agent and passphrase cache (access for web browsers)
|
|
||||||
Documentation=man:gpg-agent(1)
|
|
||||||
|
|
||||||
[Socket]
|
|
||||||
ListenStream=%t/gnupg/S.gpg-agent.browser
|
|
||||||
FileDescriptorName=browser
|
|
||||||
Service=gpg-agent.service
|
|
||||||
SocketMode=0600
|
|
||||||
DirectoryMode=0700
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=sockets.target
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=GnuPG cryptographic agent and passphrase cache (restricted)
|
|
||||||
Documentation=man:gpg-agent(1)
|
|
||||||
|
|
||||||
[Socket]
|
|
||||||
ListenStream=%t/gnupg/S.gpg-agent.extra
|
|
||||||
FileDescriptorName=extra
|
|
||||||
Service=gpg-agent.service
|
|
||||||
SocketMode=0600
|
|
||||||
DirectoryMode=0700
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=sockets.target
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=GnuPG cryptographic agent (ssh-agent emulation)
|
|
||||||
Documentation=man:gpg-agent(1) man:ssh-add(1) man:ssh-agent(1) man:ssh(1)
|
|
||||||
|
|
||||||
[Socket]
|
|
||||||
ListenStream=%t/gnupg/S.gpg-agent.ssh
|
|
||||||
FileDescriptorName=ssh
|
|
||||||
Service=gpg-agent.service
|
|
||||||
SocketMode=0600
|
|
||||||
DirectoryMode=0700
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=sockets.target
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=GnuPG cryptographic agent and passphrase cache
|
|
||||||
Documentation=man:gpg-agent(1)
|
|
||||||
Requires=gpg-agent.socket
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/usr/bin/gpg-agent --supervised
|
|
||||||
ExecReload=/usr/bin/gpgconf --reload gpg-agent
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=GnuPG cryptographic agent and passphrase cache
|
|
||||||
Documentation=man:gpg-agent(1)
|
|
||||||
|
|
||||||
[Socket]
|
|
||||||
ListenStream=%t/gnupg/S.gpg-agent
|
|
||||||
FileDescriptorName=std
|
|
||||||
SocketMode=0600
|
|
||||||
DirectoryMode=0700
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=sockets.target
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=Mailbox synchronization service
|
|
||||||
Wants=network-online.target gpg-agent.socket
|
|
||||||
After=network.target network-online.target dbus.socket gpg-agent.socket
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
# workaround to allow relative executable invocation (i.e. current users' home dir)
|
|
||||||
ExecStart=/bin/bash -c '%h/.local/bin/sync-mail'
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
[Unit]
|
|
||||||
Description=Mailbox synchronization timer
|
|
||||||
|
|
||||||
[Timer]
|
|
||||||
OnBootSec=1m
|
|
||||||
OnUnitActiveSec=1h
|
|
||||||
Unit=mbsync.service
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=timers.target
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../dirmngr.socket
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../gpg-agent-browser.socket
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../gpg-agent-extra.socket
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../gpg-agent-ssh.socket
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../gpg-agent.socket
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
../mbsync.timer
|
|
||||||
|
|
@ -1,111 +0,0 @@
|
||||||
#!/usr/bin/env sh
|
|
||||||
#
|
|
||||||
# Keeps a git directory synced by automatically committing every x seconds.
|
|
||||||
# After y number of runs without changes automatically pushes the directory to a remote.
|
|
||||||
|
|
||||||
# time in seconds to check for changes to commit
|
|
||||||
TIME_TO_COMMIT=${GS_TIME_TO_COMMIT:-120}
|
|
||||||
# amount of times to check for changes *without changes occurring* to push to origin
|
|
||||||
UNCHANGED_RUNS_TO_PUSH=${GS_UNCHANGED_RUNS_TO_PUSH:-30}
|
|
||||||
|
|
||||||
# logging verbosity level -- 0=error, 1=info, 2=debug
|
|
||||||
VERBOSITY=${GS_LOG_VERBOSITY:-1}
|
|
||||||
|
|
||||||
set_target() {
|
|
||||||
[ -z "$GS_TARGETDIR" ] && [ -z "$1" ] && {
|
|
||||||
msg "ERROR: git-sync requires a target directory to keep in sync to be passed in." 0
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
DIR="${GS_TARGETDIR:-$1}"
|
|
||||||
}
|
|
||||||
|
|
||||||
pull() {
|
|
||||||
msg "Pulling upstream changes into $DIR"
|
|
||||||
run_git pull --ff-only --ff
|
|
||||||
}
|
|
||||||
|
|
||||||
commit() {
|
|
||||||
msg "Committing changes to $DIR"
|
|
||||||
run_git add .
|
|
||||||
# shellcheck disable=2039
|
|
||||||
run_git commit --no-gpg-sign -m "Git sync: $(date +%F_%R) from ${HOSTNAME:-"${HOST:-undefined}"}"
|
|
||||||
}
|
|
||||||
|
|
||||||
push() {
|
|
||||||
msg "No changes for $((UNCHANGED_RUNS_TO_PUSH * TIME_TO_COMMIT)) seconds, pushing to origin"
|
|
||||||
run_git push
|
|
||||||
}
|
|
||||||
|
|
||||||
should_commit() {
|
|
||||||
if [ "$(run_git diff-files --name-only | wc -l)" -eq 0 ]; then
|
|
||||||
msg "No changes to commit in $DIR" 2
|
|
||||||
false
|
|
||||||
else
|
|
||||||
msg "Found changes to commit in $DIR" 2
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
should_push() {
|
|
||||||
if [ "$no_change_cycle" -ge "$UNCHANGED_RUNS_TO_PUSH" ]; then
|
|
||||||
true
|
|
||||||
else
|
|
||||||
false
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
should_pull() {
|
|
||||||
run_git fetch
|
|
||||||
# shellcheck disable=1083
|
|
||||||
if [ "$(run_git rev-parse HEAD)" = "$(run_git rev-parse @{u})" ]; then
|
|
||||||
false
|
|
||||||
else
|
|
||||||
true
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
run_git() {
|
|
||||||
git -C "$DIR" "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
# echos its first argument
|
|
||||||
# verbosity level optionally set through second argument
|
|
||||||
# default verbosity 1 (info), can be set to 2 (debug), or 0 (error)
|
|
||||||
msg() {
|
|
||||||
lvl=${2:-1}
|
|
||||||
[ "$lvl" -gt "$VERBOSITY" ] && return 0
|
|
||||||
|
|
||||||
echo "$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
watch_changes() {
|
|
||||||
no_change_cycle=0
|
|
||||||
while true; do
|
|
||||||
if should_pull; then
|
|
||||||
pull
|
|
||||||
fi
|
|
||||||
|
|
||||||
if should_commit; then
|
|
||||||
commit
|
|
||||||
no_change_cycle=0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if should_push; then
|
|
||||||
push
|
|
||||||
no_change_cycle=-9999
|
|
||||||
fi
|
|
||||||
|
|
||||||
msg "No changes for $((no_change_cycle * TIME_TO_COMMIT)) of $((UNCHANGED_RUNS_TO_PUSH * TIME_TO_COMMIT)) seconds, going back to sleep for $((TIME_TO_COMMIT)) seconds." 2
|
|
||||||
|
|
||||||
no_change_cycle=$((no_change_cycle + 1))
|
|
||||||
sleep "$TIME_TO_COMMIT"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
set_target "$1"
|
|
||||||
|
|
||||||
watch_changes
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$1"
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# from: https://superuser.com/questions/759759/writing-a-service-that-depends-on-xorg/1351489#1351489
|
|
||||||
|
|
||||||
COUNTER=0
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
# Check whether or not socket exists
|
|
||||||
if [ -S /tmp/.X11-unix/X0 ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
((++COUNTER))
|
|
||||||
|
|
||||||
if [ "$COUNTER" -gt 20 ]; then
|
|
||||||
printf "X did not start in time\n"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
printf "X not yet started, counter at %s\n" "$COUNTER"
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue