Qubes OS: Startup Tips and Tricks
Qubes is great! I'm assuming you're using it because you take your privacy and security seriously. I'll also assume that you shut down your machine whenever you are not physically attached to it. With that being said, getting your system in to a usable state can be a deterrent to shutting down. Let's see if we can fix that...
Auto-start Qubes
You can set different qubes to autostart upon logging in. This will save you a few clicks each time you log in and potentially waiting on qubes to start up later.
From the Qubes Manager, enter the settings for the qubes want to auto-start and set them up to
Auto-start applications
You can set up each qube to automatically start applications every time the qube starts. There a few different ways to go about this:
Auto-start applications installed systemwide
These would anything you installed with the distro's package manager or that came packaged up with the template. Things like Firefox fall in to this category.
- Open up a terminal
- create an autostart directory:
mkdir ~/.config/autostart
- navigate to that new directory:
cd ~/.config/autostart
- Symlink whatever application you want to autostart. These applications will be found in
/usr/share/applications
- With the example of Firefox, you would
ln -s /usr/share/firefox-esr.desktop firefox.desktop
This places a symobolic link in~/.config/autostart
that points back to the actual.desktop
file that can start Firefox. Each time this qube starts, Firefox will open up
Auto-start applications not installed systemwide
Sometimes you have an app vm where you've downloaded a .appimage
on to. We'll assume that Obsidian.AppImage
lives in your home directory. Here you can just create the .desktop
file and place it directly in to the autostart directory.
mkdir ~/.config/autostart && cd ~/.config/autostart
- Create the desktop file:
nano obsidian.desktop
- Inside the text editor you will add in the following information
[Desktop Entry]
Name=obsidian
Comment=obsidian
Exec=/home/user/Obsidian.AppImage
Icon=obsidian
Type=Application
Categories=Notes;
- save the file and you're all set. Each time the qube starts it will run the
Obsidian.AppImage
that lives in your home directory
Arrange windows from auto-started applications
Cool. So now we can auto-start qubes and automatically open applications from those qubes. Now we're going to programitcally move those windows around to various desktops to organize our workspace.
Using wmctrl
we can place a script in dom0
that will move windows around for us and change settings like "visible on all work spaces".
- After all the windows are open you would normally have open, run
wmctrl -x -l
This will give you information about the open windows.
- Think of the third column as the name assigned to each window. We can then use
wmctrl
to move these windows around and change other things about them.-r
refers to the window name,-t
designates which desktop to move the window to
wmctrl -x -r anon-whonix:xfce4-terminal.anon-whonix:Xfce4-terminal -t 3
wmctrl -x -r anon-whonix:Navigator.anon-whonix:Tor Browser -t 3
wmctrl -x -r obsidian:obsidian.obsidian:obsidian -t 0
wmctrl -x -r bitwarden:bitwarden.bitwarden:Bitwarden -t 0
wmctrl -x -r personal:Navigator.personal:Firefox-esr -t 1
wmctrl -x -r qubes-qube-manager.Qube Manager -t 0
wmctrl -x -r xfce4-terminal.Xfce4-terminal -t 0
wmctrl -x -r bitwarden:bitwarden.bitwarden:Bitwarden -b add,sticky,hidden
wmctrl -x -r obsidian:obsidian.obsidian:obsidian -b add,sticky,hidden
wmctrl -x -r qubes-qube-manager.Qube Manager -b add,sticky
wmctrl -x -r xfce4-terminal.Xfce4-terminal -b add,sticky
- The first block of text moves each window to one of 4 different desktops.
- The second block of text makes some of the windows visible on all workspaces and initially minimizes others.
- You can throw the above code in to a shell script and run from dom0 terminal once all your windows open after boot.
Conclusion
So everytime my system starts I just have to wait a minute for all the qubes to start, all the apps to launch and then run my script from dom0
. This makes the process of frequently shutting down m y machine much easier to deal with.