Couple a years ago the following specification has been written. It specifies the way to autostart applications on login and after mounting devices. As this is a desktop environment feature, most of the explanations assume using GUI to set the startup applications.
However, it’s perfectly possible to do this from the command line. As per the above specification, to start the application on login, you need to create a .desktop file and put it in a specific location. Usually, this is ~/.config/autostart, but read Autostart Directories from the specification for further rules. Format of the .desktop files is explained in a separate document. Most of the entries are optional, but some are required.
Let’s test this. First, obviously there’s a need to run something. Let’s write a dummy script for our test purposes:
#!/bin/bash echo I ran after you logged in, around `date +"%F %T"` > /tmp/run-at-logon.out
Save it as ~/run-at-logon.sh and then:
$ chmod u+x ~/run-at-logon.sh
to make it runnable. Test it:
$ ~/run-at-logon.sh $ cat /tmp/run-at-logon.out I ran after you logged in, around 2011-03-21 23:11:53
Now, let’s make a sample .desktop file for our test script. Here it is:
[Desktop Entry] Type=Application Name=Run at logon Exec=/home/icyrock.com/run-at-logon.sh
That’s it. Save the file to ~/.config/autostart/run-at-logon.desktop.
Multiple XWindow sessions
To test the above, we need to logout and login. Tiresome – let’s make it easier. As per this thread, you can switch to some console (e.g. Ctrl+Alt+F1), login there and then run the following command:
$ xinit /usr/bin/gnome-session -- :1
This will run another session on the next available pts, which in my case was 3, so to get to it you do Ctrl+Alt+F3, to return to your normal Gnome session you do Ctrl+Alt+F7. Now, while in the new session, open the terminal with Ctrl+Alt+T and check that /tmp/run-at-logon.out was created.
If all went well, just kill xinit on pts 1 and also remove the scripts we created unless you still want to have them running each time you login.