literate-dotfiles/dotfiles/systemd.org
2019-05-16 21:13:08 +02:00

8.3 KiB

Systemd

Buku Git

Service

  [Unit]
  Description=Sync Bookmarks every day
  RefuseManualStart=no
  RefuseManualStop=yes

  [Service]
  Type=oneshot
  ExecStart=%h/scripts/buku_git_push.sh

Timer

  [Unit]
  Description=Sync All Mails every x hours
  RefuseManualStart=no
  RefuseManualStop=no
  Wants=network-online.target
  After=network.target network-online.target dbus.socket

  [Timer]
  OnCalendar=*-*-* 16:00:00
  Persistent=true
  Unit=bukugit.service

  [Install]
  WantedBy=default.target

Script

  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

Check mail

Service

  [Unit]
  Description=Check new mails
  RefuseManualStart=no
  RefuseManualStop=yes

  [Service]
  Type=oneshot
  ExecStart=%h/scripts/checkmail.sh

Timer

  [Unit]
  Description=Check Mail every x minutes
  RefuseManualStart=no
  RefuseManualStop=no
  Wants=network-online.target
  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

Script

  # =============================================================
  # 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
      dunstify --replace=98465 '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
  # =============================================================

Sync mail

Service

  [Unit]
  Description=Sync all mails
  RefuseManualStart=no
  RefuseManualStop=yes

  [Service]
  Type=oneshot
  ExecStart=%h/scripts/checkmail.sh all

Timer

  [Unit]
  Description=Sync All Mails every x hours
  RefuseManualStart=no
  RefuseManualStop=no
  Wants=network-online.target
  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

Emacs

Service

  [Unit]
  Description=Emacs text editor
  Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/

  [Service]
  Type=forking
  ExecStart=/usr/bin/emacs --daemon
  ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
  Environment=SSH_AUTH_SOCK=%t/keyring/ssh
  Restart=on-failure

  [Install]
  WantedBy=default.target

Vdirsyncer

Service

  [Unit]
  Description=Synchronize calendars and contacts
  Documentation=https://vdirsyncer.readthedocs.org/
  Wants=network-online.target
  After=network.target network-online.target

  [Service]
  ExecStart=/usr/bin/vdirsyncer sync
  Type=oneshot

Timer

  [Unit]
  Description=Synchronize vdirs

  [Timer]
  OnBootSec=5m
  OnUnitActiveSec=15m
  AccuracySec=5m

  [Install]
  WantedBy=timers.target

Weechat

Service

  [Unit]
  Description=A WeeChat client and relay service using Tmux
  Wants=network-online.target
  After=network.target network-online.target

  [Service]
  Type=forking
  ExecStart=/usr/bin/tmux -L weechat new -d -s weechat weechat
  ExecStop=/usr/bin/tmux -L weechat kill-session -t weechat
  Restart=always
  RestartSec=3

  [Install]
  WantedBy=default.target

Neomutt

Service

  [Unit]
  Description=Neomutt - mail client

  [Service]
  Type=forking
  ExecStart=/usr/bin/tmux -L neomutt new -d -s neomutt neomutt
  ExecStop=/usr/bin/tmux -L neomutt kill-session -t neomutt
  Restart=always
  RestartSec=3

  [Install]
  WantedBy=default.target

Powertop

Service

  [Unit]
  Description=Powertop tunings

  [Service]
  ExecStart=/usr/bin/powertop --auto-tune
  RemainAfterExit=true

  [Install]
  WantedBy=multi-user.target

NCMPCPP

Service

  [Unit]
  Description=Ncmpcpp - Music Player

  [Service]
  Type=forking
  ExecStart=/usr/bin/tmux -L ncmpcpp new -d -s ncmpcpp ncmpcpp
  ExecStop=/usr/bin/tmux -L ncmpcpp kill-session -t ncmpcpp
  Restart=always
  RestartSec=3

  [Install]
  WantedBy=default.target

Newsboat

Service - tmux

  [Unit]
  Description=Newsboat - RSS reader

  [Service]
  Type=forking
  ExecStart=/usr/bin/tmux -L newsboat new -d -s newsboat newsboat
  ExecStop=/usr/bin/tmux -L newsboat kill-session -t newsboat
  Restart=always
  RestartSec=3

  [Install]
  WantedBy=default.target