I have setup some applications to startup on each login (e.g., redshift-gtk, gtg) automatically but after adding these to startup applications (System -> Preferences -> Startup Applications
) obviously the time taken to login has increased. Due to all this the time it takes for my panels, desktop etc to appear is too long - until which I am forced to wait.
I don't need these apps to be available immediately, but it would be good if they startup eventually, meanwhile the ubuntu menu/panel is available for running other apps that I might need to.
I tried using at command, with the intention of editing all startup applications to put the commands in the at queue, but this didn't work since the apps don't get the necessary environment variables (like DISPLAY).
Is this what nice
command is used for? Any other ideas how I can accomplish this? If possible, I would like to avoid editing the startup applications commands, since this would mean a lot of effort to replicate on other machines I use.
The number of seconds needed to wait for your desktop to load is arbitrary and can change depending on the situation. Instead of
sleep
, try using the following to run startup applications as soon as the system load has declined:(Edit: Added koushik's suggestion.)
Save it as
~/bin/run-when-load-low
and addrun-when-load-low 'COMMAND'
in Startup Applications Preferences.Notes on this method:
DISPLAY
environment variable to the application. For most desktop applications this will be all you need. With that said, be sure to consider any special cases and keep this fact in mind when troubleshooting anything that isn't behaving correctly. A good place to start if you think an application might need other environment variables passed isprintenv
and the application's documentation, though I personally haven't run into this problem yet.batch
only affects when applications are run; it does not alter their priority/niceness.run-when-load-low 'gedit My\ Notes.txt'
. If you really need to pass single-quoted parameters to your application, you'll have to use double quotes in the startup command:run-when-load-low "gedit 'My Notes.txt'"
. For anything more complicated than this, you're probably best off just modifying a copy of the script with your command hard-coded.I found that just using
sleep 10 && COMMAND
as the command name didn't work. I had issues with both conky and xchat loading too early and getting corrupted somehow. I had to write a little script called~/bin/startup
and put this in it:You need change its permissions to be allowed to be executed with
chmod +x ~/bin/startup
and then just replace the start-up applications entry with the commandstartup
and it'll fire off everything in the script.You could have one file for each application if you were that way inclined.
Use the 'sleep' command.
In System -> Preferences -> Startup Applications, edit the command for the programs you want to delay to:
Replace 10 with the number of seconds you want it to wait and COMMAND with what was in the command box originally.