My AwesomeWM configuration for Qubes OS.
Changes and additions to the standard Qubes OS AwesomeWM install:
- Split
rc.lua
into 11 separate files for ease of use and more accessible auditing. - Make tasklist client buttons reflect clients’ Qubes titlebar colors
- Programatically increase contrast between titlebar font and titlebar color
- Improve and add widgets, some specific to Qubes OS.
- Add the tiny
sharedtags
library to share tags over multiple screens.
There are no complex, bloated widgets and every modified Awesome widget is kept nearly identical to its original.
For a detailed overview of the project, see <doc.md>.
- Install
awesome
: see qubes-os.org/doc/awesome. - Clone this repo and make a tarball of everything you want to copy to dom0. To use this with no modifications, the minimum you need to transfer to dom0 is:
assets/
qubes-logo-icon-dark.png
qubes-logo-icon.png
- everything under
bin/
,core/
,lib/
,themes/
config.lua
rc.lua
- Extract the tarball to
~/.config/awesome
. - Log out and log in again, making sure to select Awesome in the login manager.
- Mononoki Nerd Font, Ubuntu Mono Nerd Font, and Open Sans. If you don’t want to use these fonts, change the fonts in the theme files to ones you want to use. You need a Nerd Font to get the widget icons.
- The
xset
program, which should be already installed.
- The commands to run when Awesome starts (in
bin/autorun.sh
) will only run if your username islhess
to prevent them accidentally running on another system. - Review
bin/brightness.sh
to confirm you have access to those brightness files under/sys
.
Non-critical things to do.
- Make clicking on desktop hide all popups (system, calendar, menus)
- Use
awful.spawn.easy_async
instead ofio.popen
on line 119 - Use
awful.spawn.with_line_callback
instead ofio.popen():lines()
on line 236
Have the shell scripts supply slightly different icons based on the theme:
- light theme -> outline icons
- dark theme -> solid icons
Instead of setting widgets against a rounded rectangle backdrop, underline them with a line and remove the background.
-
Mouse finder popup
Draw some wibox identifier (e.g. circle or ring) under mouse to help locate it. Possibly achieve an “animation” effect by drawing and then deleting ring of increasing radii.
-
Status of camera and microphone
Show something if they’re attached to a VM (helps prevent forgetting to disconnect after use).
-
System qubes status
-
“Airplane mode” button with status icon
Detach all VMs attached to sys-net and shutdown sys-net
-
Simple ASCII network graph using unman’s viewer
-
-
Qubes Elevator Pitch
A popup that gives a basic outline of how Qubes OS works which you can use as a quick visual explanation tool. Also an excuse to use Ostrich Sans somewhere.
This would cover all the basic points:
- Compartmentalization -> VMs
- Template system (read-only access security, shared root storage, quick VM creation, centralized updates)
- Copy/Paste -> Global Clipboard
- Inter VM communication -> Qrexec framework?
- Device handling -> USB qube
- Windows -> Windows HVM
And list benefits of the Qubes setup and architecture:
- Disposable VMs
- Whonix integration
- Split “You-Name-It”
- Per-Qube networking
-
Volume
-
Icon with percentage (like brightness)
-
Dropdown slider?
-
-
Compose key indicator
I sometimes set the compose key to right control on a per-VM basis with
setxkbmap -option compose:rctrl
. This indicator will be yellow if active, and hovering over it will show a popup with the VMs in which the compose key is set to rctrl. This will require writing to a file the VMs with the active compose key (done in a separate script). -
Swap caps with escape
When I find myself in Vim for prolonged periods (if my Emacs config is broken, for example), I swap the Escape key with the Caps Lock key. This indicator will be yellow if this is active, and hovering over it will show a popup with the VMs in which escape and capslock have been swapped. This will require writing to a file the VMs with the swapping (done in a separate script).
- Add next/previous month toggles
- Make focused border appear only with more than one window in the workspace
- add restart button
- Move to dropdown with text
A text widget with total system RAM used.
- Dropdown with dom0 RAM
- Add domU RAM to dropdown
- Add toggle for full version (5.15 -> 5.15.94-1)
- Send notification (sound?) every minute when battery reaches 10%
- Invert colors of icons (close window, tile, etc)
- Pick more stylish icons
- Draw inverted border around application icon
Use this command in Vim to help replace double quotes surrounding 0-4 character strings with single quotes, while avoiding double quotes with a comma in between (e.g. with comma-separated strings): :%s/"\([^",]\{0,4}\)"/'\1'/g
.