How do you start a program after X has started?

There's a little app called F.Lux that sets your screen temperature based on the time of day. The Linux version is a little spartan with just a console interface but it works perfectly well.

Where can I invoke it so that it starts up after X has started?


Solution 1:

.xinitrc is the one to use if you start your window manager from there. If you use KDE or GNOME you will need to add the program to the services that autostart on login.

Solution 2:

first of all, read 'man X':

 STARTING UP

   There are two main ways of getting the X server and an initial  set  of
   client  applications  started.   The  particular method used depends on
   what operating system you are running and whether or not you use  other
   window systems in addition to X.

you will learn, that, depending on how you bring up the xserver, 2 scripts are used for starting things after the xserver came up:

  • .xinitrc (for when you launched the session via startx (which fires up xinit))
  • .xsession (for when you logged into your system via a display manager (xdm))

(i personally ln -s .xinitrc .xsession, so it does not matter, how i bring up the xserver).

depending on what you use to log into your system (and i think it is either gdm or kdm these days), things get a bit different. normally gdm and kdm (and other display managers as well) offer the user to select the "user session" or something similar labeled. if you pick this "user-session" then mostly these display managers will launch ~/.xsession. you would be responsible for bringing up your applications AND the desktop environment / windowmanager.

the other possible solution is to find out how the different desktop environments / windowmanagers support the concept of "autostart". i personally avoid these mechanisms and stick to the good old .xinitrc / .xsession way.

an example .xinitrc would look like:

xmodmap ~/.Xmodmap
xsetxkbmap de
autocutsel &
xflux -l 52
exec /usr/bin/fluxbox

Solution 3:

Try placing a script named .xinitrc in your home directory. KDE and Gnome also have the ability to run scripts/applications on login if you're using one of those. I believe .Xstartup or .xstartup might also do what you want if .xinitrc doesn't. My linux is getting a bit rusty it seems. >.>

Solution 4:

The XDG Autostart Specification works for any XDG-compliant desktop environment, including Gnome, KDE, XFCE, and others.