How To Save And Restore The Unity Session In Ubuntu (Using A Script)

  • restore geometries of existing windows – restores the window geometry and position (including workspace) for all running windows;
  • restore matching windows – restores the window geometry and position (including workspace) for both apps that are still running as well as those that were restarted;
  • restore running applications: restores all application windows that were running (even if they are now closed) when the session was saved, along with their position (including workspace) and window geometry;

Important note: The script can only restore app windows that were open when the session was saved and can’t restore applications that were running in the background (so to be able to restore an app, that app needs to have at least one open window when the session is saved).

Obviously, if you don’t want to restore the session manually, you can add the script to startup so it restores your last saved session at login, but you’ll still have to save the session manually.Arnon’s original session save and restore script doesn’t work properly in Unity, but I was able to get it to work with some very simple fixes.

  • it doesn’t work for every single application. For instance, it can’t restore an open Nemo window because Nemo lacks the “–new-window” command line option (which does exist in Nautilus);
  • when using “restore 2” (so the apps that aren’t running are restored along with their window position and size): there’s a delay between launching the app and resizing / positioning its window – that’s because the script waits a few seconds to make sure the app actually starts before trying to manipulate its window.


Unity session save and restore script installation and usage

1. The script requires perl, xprop (available in the x11-utils package), wmctrl and xdotool. To install these in Ubuntu, use the command below:

sudo apt-get install perl x11-utils wmctrl xdotool

2. To download my modified script, install it in /usr/local/bin and make it executable, use the following commands:

wget -O /tmp/session
sudo install /tmp/session /usr/local/bin/
sudo chmod +x /usr/local/bin/session

You can check out the script code HERE. Or, if you want to download Arnon’s script (without my Unity fixes), see his post HERE.

That’s it!

To save the current session, simply use the following command:

session save

Then, when you want to restore the session, use:

session restore X

where X is:

  • 2 – Restore geometries of missing windows (opens any previously running app windows and restores both windows positions and geometries);
  • 1 – Restore geometries of matching windows (restores window geometry and position for all running apps, even if they were restarted since the session was saved);
  • 0 – Restore geometries of existing windows (restores window geometry and position for apps that weren’t closed since the session was saved).

For instance “session restore 2” to restore geometries of missing windows, etc.

(direct video link)

One Response

  1. beaucoder

Leave a Reply