Detect X autostart a bit better with a separate service. The service
relies on a shell script which searches for a socket which X creates on
startup and only finishes when it finds the socket succesfully.
This makes services which need X to start successfully a bit more
robust, and while it can still break if X takes too long, it should be
more stable now.
Finally, services can restart more quickly when ended since they don't
require the 2+ `RestartSec` option to be present anymore to successfully
start.
Flashfocus did not start up correctly since it was not required for the
`default.target` which is the only (?) valid target when systemd
operates in user-mode.
Instead of overwriting just part of the flashfocus service file, and
subsequently having it enabled for default.target and a non-existent
graphical.target user environment, we overwrite the whole file and set
it to `default.target`.
Additionally, the service should be restarted when it fails and slow
down on its restart attempts (I kept 5 seconds for this one, since it is
not as time critical as others -- no one cares if windows only flash
5 seconds after starting the machine.)
Added (wishful) After components to many service units, in case I figure
out one day how to make a useful target for the systemd user mode.
Removed manual initialization of flashfocus from xinitrc, enabled the
service in systemd.
Changed the restart timer to 5 seconds, to mirror other X-dependent user
services to circumvent systemd being too eager to start the service
before X is ready on booting.
Main issue the restart delay fixes is that services don't wait for X to
be ready on startup (which is bad if the application being started
requires X being ready to actually work.)
I have still not found a way to work around waiting for X being ready
other then the ugly delay hack (for systemd --user modules at least).
However, the delay can be --- in most cases --- smaller than 5 seconds.
All my machines start reasonably fast and have X up and running from
pressing login to staring at the wallpaper in a couple seconds at most.
If services don't start correctly and the error is X not being ready,
increase the startup delay once again.
Fixed bug when line in todo dropdown starts with `vim:`, `vi:`, or `:ex`
which would automatically be read by vim and tried to be set in the
editor. Removed modeline reading from vim to fix the bug, and since it
provides quite an attack vector anyway.
Added Limelight to its startup procedure to highlight the current to-do
paragraph.
Dropdown services need an X server to connect to and fail autostarting
if there's no available server.
HACK
Increasing their restart timer will alleviate this problem, *but* it
also means the dropdowns will start more slowly when closed by the user.
There should be another way to alleviate one issue (start automatically
after X is available) without exacerbating the other (restart when you
have been closed).
Autostarts an2linuxserver, dunst, kbfs, keybase, and the keybase://
redirector.
Will (presumably) complain if one of the programs is missing. Either
this should not be enabled by default or the startup service should
contain a sanity check for the program before attempting to launch
itself.
Both greenclip and redshift did not automatically start on system start,
since they needed X to be running but their restart was almost
instantaneously. So, they restarted their alloted 5 times before X was
ready and gave up.
Restart time has been set to 5 and 10 seconds, so their startup takes a
little longer but should, in most cases, succeed.
Used wrong 'after' designation which would wait forever since it needed
to start after the runlevel which it was designated to run at.
Committed default.target.wants symlink to service file to automatically
enable its autostart on new machines.
This wil only really work for my directory set-up, so perhaps either the
service module should be disabled by default for the installation, be
asked during installation, or simply be manually enabled to autostart
during initial set-up (maybe mention in readme for the module).
Added service to automatically commit changes in notes directory (every
2 minutes) and automatically push them to their remote origin (after no
changes occured for an hour).
Uses git and systemd to work as a service in the background. Gets
restarted on failure.