#+TITLE: Systemd * Buku Git ** Service :PROPERTIES: :header-args: :tangle ~/.config/systemd/user/bukugit.service :header-args+: :comments both :mkdirp yes :END: #+BEGIN_SRC conf [Unit] Description=Sync Bookmarks every day RefuseManualStart=no RefuseManualStop=yes [Service] Type=oneshot ExecStart=%h/scripts/buku_git_push.sh #+END_SRC ** Timer :PROPERTIES: :header-args: :tangle ~/.config/systemd/user/bukugit.timer :header-args+: :comments both :mkdirp yes :END: #+BEGIN_SRC conf [Unit] Description=Sync All Mails every x hours RefuseManualStart=no RefuseManualStop=no After=network.target network-online.target dbus.socket [Timer] OnCalendar=*-*-* 16:00:00 Persistent=true Unit=bukugit.service [Install] WantedBy=default.target #+END_SRC ** Script :PROPERTIES: :header-args: :tangle ~/scripts/buku_git_push.sh :header-args+: :comments both :mkdirp yes :header-args+: :shebang "#!/usr/bin/env bash" :END: #+begin_src bash cd ~/.local/share/buku/ if [[ ! -z $(git status -s bookmarks.db) ]] then git add bookmarks.db git commit -m "Changed bookmarks - $(date +%F)" git push exit fi #+end_src * Check mail ** Service :PROPERTIES: :header-args: :tangle ~/.config/systemd/user/checkmail.service :header-args+: :comments both :mkdirp yes :END: #+BEGIN_SRC conf [Unit] Description=Check new mails RefuseManualStart=no RefuseManualStop=yes [Service] Type=oneshot ExecStart=%h/scripts/checkmail.sh #+END_SRC ** Timer :PROPERTIES: :header-args: :tangle ~/.config/systemd/user/checkmail.timer :header-args+: :comments both :mkdirp yes :END: #+BEGIN_SRC conf [Unit] Description=Check Mail every x minutes RefuseManualStart=no RefuseManualStop=no After=network.target network-online.target dbus.socket Requires=checkmail.service [Timer] Persistent=false OnBootSec=2min OnUnitActiveSec=5min AccuracySec=10s Unit=checkmail.service [Install] WantedBy=default.target #+END_SRC ** Script :PROPERTIES: :header-args: :tangle ~/scripts/checkmail.sh :header-args+: :comments both :mkdirp yes :header-args+: :shebang "#!/usr/bin/env bash" :END: #+begin_src bash # ============================================================= # 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)" # ============================================================= # ============================================================= # Retreive mails if [ -z "$1" ]; then # No argument => just check Inbox mbsync gmail-Home esrf-Home ulg-Home elif [ "$1" = "all" ]; then # Synchronize all mails mbsync -a fi # ============================================================= # ============================================================= # 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)" # ============================================================= # ============================================================= # Total Number of new mails since last checking new="$(($gmail_new+$esrf_new+$ulg_new))" old="$(($gmail_old+$esrf_old+$ulg_old))" # ============================================================= # ============================================================= # Notification if [ "$new" -gt 0 ]; then notify-send 'New mail' " $esrf_new  $gmail_new  $ulg_new" fi # ============================================================= # ============================================================= # Indexation and Tags # notmuch new # mu index --maildir=~/.mail --quiet # Update on Emacs if [ "$(($new-$old))" -gt 0 ]; then emacsclient --eval '(mu4e-update-index)'; fi # ============================================================= #+end_src * Sync mail ** Service :PROPERTIES: :header-args: :tangle ~/.config/systemd/user/syncmail.service :header-args+: :comments both :mkdirp yes :END: #+BEGIN_SRC conf [Unit] Description=Sync all mails RefuseManualStart=no RefuseManualStop=yes [Service] Type=oneshot ExecStart=%h/scripts/checkmail.sh all #+END_SRC ** Timer :PROPERTIES: :header-args: :tangle ~/.config/systemd/user/syncmail.timer :header-args+: :comments both :mkdirp yes :END: #+BEGIN_SRC conf [Unit] Description=Sync All Mails every x hours RefuseManualStart=no RefuseManualStop=no After=network.target network-online.target dbus.socket Requires=syncmail.service [Timer] Persistent=false OnBootSec=30min OnUnitActiveSec=300min AccuracySec=10s Unit=syncmail.service [Install] WantedBy=default.target #+END_SRC * Emacs ** Service :PROPERTIES: :header-args: :tangle ~/.config/systemd/user/emacs.service :header-args+: :comments both :mkdirp yes :END: #+BEGIN_SRC conf [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 #+END_SRC * Vdirsyncer ** Service :PROPERTIES: :header-args: :tangle ~/.config/systemd/user/vdirsyncer.service :header-args+: :comments both :mkdirp yes :END: #+begin_src conf [Unit] Description=Synchronize calendars and contacts Documentation=https://vdirsyncer.readthedocs.org/ [Service] ExecStart=/usr/bin/vdirsyncer sync Type=oneshot #+end_src ** Timer :PROPERTIES: :header-args: :tangle ~/.config/systemd/user/vdirsyncer.timer :header-args+: :comments both :mkdirp yes :END: #+begin_src conf [Unit] Description=Synchronize vdirs [Timer] OnBootSec=5m OnUnitActiveSec=15m AccuracySec=5m [Install] WantedBy=timers.target #+end_src