aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 77a5c9555d36cbb565f98c2a357356bc893dc17a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
# uenv
## About
**uenv** - as in *"useful environments"* - is a collection of scripts, systemd service and timer units and configuration that go along with it.  
A couple of them might only be useful, when using window managers like [Awesome](http://awesome.naquadah.org/), that stem from a minimalistic approach...
Some of the functionalities implemented here can be found in desktop environments like [KDE](https://www.kde.org/) or [Gnome](https://www.gnome.org/).

## Features

* modified/ added systemd system services for
  * autossh
  * cpupower
  * rtorrent
  * update-mirrorlist
  * user@.service

* modified/ added systemd user services for
  * compton
  * dbus
  * irssi
  * jack
  * mpd
  * pulseaudio
  * rtorrent
  * syndaemon
  * systemd-analyze
  * tmux
  * weechat

* special systemd user services
  * monitoring
  * postpone-screensaver

## HOWTO & Info
Here are some short HOWTOs and infos on using some of the special or modified systemd services.  

### Real-time kernel command line option
Some services are dependant or anti-dependant on the kernel command line option *"systemd.setenv=REALTIME=true"*. The option itself sets nothing but an Environment for systemd.  
This is pretty useful when wanting to enable or disable certain services using *ConditionKernelCommandLine* in their **[Unit]** sections,

### Separate tmux environment
[tmux](https://tmux.github.io/) is used for a couple of services to start an environment in which other command line interface programs can run. To achieve this and not get in conflict with the standard [tmux](https://tmux.github.io/) environment, some modifications might be needed.  
In some services the following Environment will be set:
    
    Environment=TMUX_TMPDIR=%t/tmux

This will store the [tmux](https://tmux.github.io/) server socket in the users run directory. If after starting this service one wants to connect to that special [tmux](https://tmux.github.io/) session, it is necessary to either define the absolute path to the socket  

    tmux -S /run/user/<your-user-id>/tmux/<name-of-socket> attach

or to just set your *"$TMUX\_TMPDIR"* variable to the same directoy in your shells configuration files and then just attach to it, like so:  

    tmux -L <name-of-socket> attach

### compton
The [compton](https://github.com/chjj/compton/) user service will need a properly exported **$DISPLAY** variable to work. You can set this in */etc/systemd/user.conf*:  

    ...
    DefaultEnvironment=DISPLAY=:0
    ...

The compton user service is anti-dependent on the real-time kernel command line option. It will not start, when booting into a kernel with that option set.  
You can start and enable it like any other systemd user service:  

     systemctl --user start compton
     systemctl --user enable compton

### cpupower
The cpupower package (on Archlinux) has some [limitations](https://bugs.archlinux.org/task/44270?project=5&cat[0]=33&string=cpupower), that make it quite hard to apply CPU settings based on profiles.  
At least in a real-time environment, the modified version of cpupower - called cpupower-rt - makes it easy to apply differing settings **after** the usual cpupower settings have been applied.  
Once the above mentioned feature request is resolved, it will be as easy as just copying the *cpupower.service* file and modify it slightly in */etc/systemd/sytem/*.  
For now, there needs to be a separate config file **and** a separate script. For setting it up, just modify */etc/default/cpupower-rt* as you would for */etc/default/cpupower*.

This service is dependant on the real-time kernel command line option. It will only start, if that condition is met.  
You can start and enable it like any other systemd service:  

    systemctl start cpupower-rt
    systemctl enable cpupower-rt

### dbus
Some systemd user services will need a dbus message bus, started by the user. Until [kdbus](https://en.wikipedia.org/wiki/Kdbus) is finished (and thus dbus will be automatically started by PAM), activate it like this:  

    systemctl --global enable dbus.socket

### irssi
The systemd user service *irssi.service* starts the [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) client [irssi](http://irssi.org/) in a separate [tmux](https://tmux.github.io/) environment for the current user.
To connect to it after starting the service, just do  

    tmux -S /run/user/<your-user-id>/tmux/irssi attach

or (if you've setup *$TMUX_TMPDIR* properly in your shell)  

    tmux -L irssi attach

### JACK
JACK2 comes with a dbus interface. Unfortunately systemd's efforts regarding [kdbus](https://en.wikipedia.org/wiki/Kdbus) and integrating kernel CPU [cgroups](https://www.kernel.org/doc/Documentation/cgroups/) (and thereby also real-time scheduling) is still somewhat in limbo.  
The included jack@.service starts JACK using */usr/bin/jackd"* (so no dbus), according to a profile. The name of that profile follows after the *@* on starting/ activating the unit.  

    systemctl --user start jack@fw1
    systemctl --user enable jack@fw1

This service is dependant on the real-time kernel command line option. It will only start, if that condition is met.  

### Monitoring
The systemd user service *monitoring.service* is just a useful tool, that's hopefully going to expand in features in the near future. It starts htop, glances and a *"loginctl user-status"* for the current user in a separate [tmux](https://tmux.github.io/) environment.  
To connect to it after starting the service, just do  

    tmux -S /run/user/<your-user-id>/tmux/mon attach

or (if you've setup *$TMUX_TMPDIR* properly in your shell)  

    tmux -L mon attach

### MPD
The specialized systemd user service *mpd@.service* starts MPD with a separate configuration located in *~/.config/mpd/mpd-<name-of-server>.conf*. It will also use [pax11publish](http://linux.die.net/man/1/pax11publish) to connect pulseaudio to that server!
Start and enable it like any other systemd user service:

    systemctl --user start mpd@myserver
    systemctl --user enable mpd@myserver

The systemd user service mpd-new.service is a drop-in replacement for mpd.service. It properly starts MPD with a real-time budget and will remain in this repository as long as [upstream decides to ship a version broken for newer systems](http://bugs.musicpd.org/view.php?id=4227).  
You can use it instead of mpd.service, if you want to use real-time scheduling on newer systemd (>205) based systems.  

    systemctl --user start mpd-new
    systemctl --user enable mpd-new

### postpone-screensaver
With the systemd user service and timer *postpone-screensaver.{service,timer}* one can - as the name implies - postpone one's screensaver from blanking the screen. The script checks for programs set in *~/.config/postpone-screensaver* and can be started and activated like any other timer/service:  

    systemctl --user start postpone-screensaver.timer 
    systemctl --user enable postpone-screensaver.timer 

### Pulseaudio
The pulseaudio user service comes with a socket. In some cases or environments it can be quite useful to be able to start and stop pulseaudio as you please. To be able to to that, there's *pulse.service*. It can be started and enabled like any other service:  

    systemctl --user start pulse
    systemctl --user enable pulse

Make sure to also disable autospawn in your *~/.config/pulse/client.conf*, like so:

    autospawn = no

### rtorrent
rtorrent doesn't really come with any systemd service. Here it is started within a separate [tmux](https://tmux.github.io/) environment. It will automatically create *~/Downloads/rtorrent/{tmp,session}*, if non-existent, set its working directory to *~/Downloads*.  
The systemd user service is started/ enabled like this:  

    systemctl --user start rtorrent
    systemctl --user enable rtorrent

The systemd system service is quite similar in functionality, but on top offers the possibility of dependency to a system service - like [OpenVPN](http://openvpn.net/). The default is a OpenVPN profile called *ipredator*.   
**Note:** In a separate configuration file (*"/etc/conf.d/rtorrent@.conf"*), the *TMUX_TMPDIR* should be set, as it otherwise defaults to using *"/tmp/"*!   
The system service can be started and enabled like this:  

    systemctl start rtorrent@<your-user-name>
    systemctl enable rtorrent@<your-user-name>

To connect to the user and system service after starting the service, just do  

    tmux -S /run/user/<your-user-id>/tmux/rt attach

or (if you've setup *$TMUX_TMPDIR* properly in your shell and for the **rtorrent@.service**, too)  

    tmux -L rt attach

### syndaemon
The [xf86-input-synaptics](https://www.archlinux.org/packages/extra/x86_64/xf86-input-synaptics/) package comes with */usr/bin/syndaemon*. This tool is used to disable the touchpad while typing. While desktop environments like KDE and Gnome use it integrated, it can also be started as a systemd user service:  

    systemctl --user start syndaemon
    systemctl --user enable syndaemon

### systemd-analyze-plot
Systemd comes with a functionality to plot the system's boot up process in svg and other file formats. This user service uses */usr/bin/systemd-analyze* to plot a svg to a predefined directory. Configuration takes place in *~/.config/systemd/plot.conf*.  
To start/enable the service afterwards just do:  

    systemctl --user start systemd-analyze-plot
    systemctl --user enable systemd-analyze-plot

### tmux
[tmux](https://tmux.github.io/) is a very useful tool to multiplex your terminals. It offers tiling and a high configurability.  
The systemd user service for tmux starts it in a separate environment (set in *$TMUX\_TMPDIR*). This way it is started as soon as the *user@.service* starts, but will also close, when your last session closes!  
To start/enable it, just do:  

    systemctl --user start tmux
    systemctl --user enable tmux

To connect to the user service after starting it, just do  

    tmux -S /run/user/<your-user-id>/tmux/default attach

or (if you've setup *$TMUX_TMPDIR* properly in your shell)  

    tmux attach

## update-mirrorlist
[Udpate-mirrorlist](https://github.com/ushis/update-mirrorlist) is a program to update the system's pacman mirrorlist according to some predefined settings. Here it is started on a weekly basis according to a timer unit.
To start/enable it, just do:  

    systemctl start update-mirrorlist.timer
    systemctl enable update-mirrorlist.timer

### weechat
The systemd user service *weechat.service* starts the [IRC](https://en.wikipedia.org/wiki/Internet_Relay_Chat) client [weechat](http://irssi.org/) in a separate [tmux](https://tmux.github.io/) environment for the current user.
To connect to it after starting the service, just do  

    tmux -S /run/user/<your-user-id>/tmux/weechat attach

or (if you've setup *$TMUX_TMPDIR* properly in your shell)  

    tmux -L weechat attach

## LICENSE
**uenv** and all of its components are licensed under the GPLv3.