Notes on Using Systemd


Knowing systemd is useful for automating many tasks in Linux.

Running Services as User

Running services as a user instead of root is beneficial in many cases.

For example, we may want to run Music Player Daemon (mpd) on startup as a user in order to use user configuration files instead of the global ones. In this case, we must first disable the default service, and re-enable it as user:

systemctl stop mpd.service
systemctl disable mpd.service
systemctl --user enable mpd.service

Creating Custom Systemd Services

User services are stored under: ~/.config/systemd/user/. Place any custom scripts that you write in this folder.

Here is an example change-GTK-theme.service, which changes my computer’s GTK theme to dark mode:

Description=Change the GTK theme to dark mode.

ExecStart=/bin/sh -c 'gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark && gsettings set org.gnome.gedit.preferences.editor scheme builder-dark'


Scheduling Systemd Tasks

Systemd can be used as a more powerful alternative to cron jobs.

To do this, you need to create two files: my-service.service, and a my-service.timer, both files must have the same root name.

Example timer file:

Description=Change the GTK theme daily at a given time.

OnCalendar=*-*-* 16:00:00


This timer runs the change-GTK.service shown previously every day at 16:00 hrs.

For more on timers: