8.3 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			8.3 KiB
		
	
	
	
	
	
	
	
systemd services and timers
- bukugit- Automatic commit and push new bookmarks
- braingit- Automatic commit and push new brain pages
- checkmail- Check new mails
- syncmail- Synchronize all mails
- vdirsyncer- Synchronize calendar and contacts
- ssh-agent- SSH Agent
- powertop- Powertop
- emacs- Emacs
bukugit - Automatic commit and push new bookmarks
Service
[Unit]
Description=Sync Bookmarks every day
RefuseManualStart=no
RefuseManualStop=yes
[Service]
Type=oneshot
ExecStart=%h/.local/bin/buku_git_pushTimer
[Unit]
Description=Sync All Mails every x hours
RefuseManualStart=no
RefuseManualStop=no
Wants=network-online.target
After=network-online.target
[Timer]
OnCalendar=*-*-* 16:00:00
Persistent=true
Unit=bukugit.service
[Install]
WantedBy=default.targetScript
cd ~/.local/share/buku/
if [[ ! -z $(git status -s bookmarks.db) ]]
then
    rm bookmarks.org;
    buku -e bookmarks.org && \
        cat header.org bookmarks.org > index.org && \
        emacs index.org --batch -f org-html-export-to-html --kill && \
        git add index.html
    git add bookmarks.db && \
        git commit -m "Changed bookmarks - $(date +%F)" && \
        git push
    exit
fi
braingit - Automatic commit and push new brain pages
Service
[Unit]
Description=Sync Brain Website everyday
RefuseManualStart=no
RefuseManualStop=yes
[Service]
Type=oneshot
ExecStart=%h/.local/bin/brain_git_pushTimer
[Unit]
Description=Sync Brain Website everyday
RefuseManualStart=no
RefuseManualStop=no
Wants=network-online.target
After=network-online.target
[Timer]
OnCalendar=*-*-* 16:00:00
Persistent=true
Unit=braingit.service
[Install]
WantedBy=default.targetScript
cd ~/Cloud/brain-website/
if [[ ! -z $(git status -s content/) ]]
then
    git add content static && \
        git commit -m "Update Content - $(date +%F)" && \
        git push
    exit
fi
checkmail - Check new mails
Service
[Unit]
Description=Check new mails
RefuseManualStart=no
RefuseManualStop=yes
[Service]
Type=oneshot
ExecStart=%h/.local/bin/checkmail -qTimer
[Unit]
Description=Check Mail every x minutes
RefuseManualStart=no
RefuseManualStop=no
Wants=network-online.target
After=network-online.target
Requires=checkmail.service
[Timer]
Persistent=false
OnBootSec=2min
OnUnitActiveSec=5min
AccuracySec=2min
Unit=checkmail.service
[Install]
WantedBy=default.targetScript
while [ -n "$1" ]; do # while loop starts
    case "$1" in
    -a) opt_all='--all' ;; # Check All inboxes
    -v) opt_verbose='--verbose' ;; # Verbose
    -q) opt_quiet='--quiet' ;; # Quiet
    ,*) echo "Option $1 not recognized" ;; # In case you typed a different option
    esac
    shift
done
# =============================================================
# Count number of mails
gmail_old="$(ls ~/.mail/gmail/Inbox/new | wc -l)"
esrf_old="$(ls ~/.mail/esrf/Inbox/new | wc -l)"
ulg_old="$(ls ~/.mail/ulg/Inbox/new | wc -l)"
uliege_old="$(ls ~/.mail/uliege/Inbox/new | wc -l)"
# =============================================================
# =============================================================
# Retreive mails
mbsync $opt_all $opt_verbose gmail-Home esrf-Home ulg-Home uliege-Home 2>/tmp/mbsync.log
# =============================================================
# =============================================================
# Count number of mails
gmail_new="$(ls ~/.mail/gmail/Inbox/new | wc -l)"
esrf_new="$(ls ~/.mail/esrf/Inbox/new | wc -l)"
ulg_new="$(ls ~/.mail/ulg/Inbox/new | wc -l)"
uliege_new="$(ls ~/.mail/uliege/Inbox/new | wc -l)"
# =============================================================
# =============================================================
# Total Number of new mails since last checking
new="$(($gmail_new+$esrf_new+$ulg_new+$uliege_new))"
old="$(($gmail_old+$esrf_old+$ulg_old+$uliege_old))"
# =============================================================
# =============================================================
# Notification
if [ "$new" -gt 0 ]; then
  dunstify --replace=98465 'Mails ' "$(($gmail_new+$esrf_new+$ulg_new+$uliege_new)) new mail(s)"
fi
# =============================================================
# =============================================================
# Indexation and Tags
if pgrep -f 'mu server'; then
    emacsclient --eval '(mu4e-update-index)'
else
    mu index $opt_verbose $opt_quiet
fi
# =============================================================
syncmail - Synchronize all mails
Service
[Unit]
Description=Sync all mails
RefuseManualStart=no
RefuseManualStop=yes
[Service]
Type=oneshot
ExecStart=%h/.local/bin/checkmail -a -qTimer
[Unit]
Description=Sync All Mails every x hours
RefuseManualStart=no
RefuseManualStop=no
Wants=network-online.target
After=network-online.target
Requires=syncmail.service
[Timer]
Persistent=false
OnBootSec=30min
OnUnitActiveSec=300min
AccuracySec=10min
Unit=syncmail.service
[Install]
WantedBy=default.target
vdirsyncer - Synchronize calendar and contacts
Service
[Unit]
Description=Synchronize calendars and contacts
Documentation=https://vdirsyncer.readthedocs.org/
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/vdirsyncer --verbosity "ERROR" sync
Type=oneshotTimer
[Unit]
Description=Synchronize vdirs
[Timer]
OnBootSec=5m
OnUnitActiveSec=15m
AccuracySec=5m
[Install]
WantedBy=timers.target
ssh-agent - SSH Agent
Service
[Unit]
Description=SSH key agent
[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
[Install]
WantedBy=default.target
powertop - Powertop
Service
[Unit]
Description=Powertop tunings
[Service]
ExecStart=/usr/bin/powertop --auto-tune
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
emacs - Emacs
Service
[Unit]
Description=Emacs text editor
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/
[Service]
Type=simple
ExecStart=/usr/bin/emacs --fg-daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
Restart=on-failure
[Install]
WantedBy=default.target