Table of Contents

About DTOS

DTOS scrot

Figure 1: DTOS Scrot

DTOS is the name that I have chosen for my post-installation script that will deploy my Xmonad config, my Emacs config, as well as associated programs that are needed to create a proper “desktop” experience. DTOS should work on Arch Linux or any Arch-based distribution. The programs that will be installed include Xmonad, Xmobar, Doom Emacs, Fish and other programs needed to recreate DT’s XMonad desktop.

Installing DTOS

Installation instructions

To install DTOS, you need to clone the DTOS GitLab repository and run the dtos script.

git clone https://gitlab.com/dtos/dtos
cd dtos/

Where is the DTOS source code?

The source code for DTOS can be found in the following GitLab repos:

  • dtos - The DTOS installation script
  • dtos-core-repo - The DTOS core repository of software. Binaries are built from the PKGBUILDs in dtos-pkgbuild.
  • dtos-pkgbuild - The PKGBUILDs used to create the binary packages in dtos-core-repo.
  • etc - Contains most of the dtos-* packages, which are config files that get placed in /etc/dtos.

The /etc/dtos directory

Most of the custom packages for DTOS are really just config files for various programs. For example, the dtos-xmonad package is really just the custom XMonad config files for DTOS. The dtos-bash package is just the default .bashrc file for DTOS. All of the various dtos-* packages install their config files to a special directory: /etc/dtos. They are not placed in $HOME automatically because we don’t want to overwrite any existing configs. So it is up to you to copy any new configs in /etc/dtos over to your $HOME if you want them. The /etc/dtos directory is structured exactly like a user’s $HOME directory. So if you installed dtos-xmonad and dtos-bash, then you would find their config files in the following locations:


When you run the DTOS installation script, it installs all of the dtos-* packages, which place their config files into /etc/dtos, and then the installation script copies the entire /etc/dtos directory into the user’s HOME directory. The installation will create a backup copy of some critical files and directories (such as .config) in case the user accidentally overwrites some important files.

How does DTOS handle updates?

Simply update your system as you would any Arch-based system:

sudo pacman -Syu

Remember, the dtos-* packages are just config files that are placed into /etc/dtos. So if installing or updating those packages, if you want to use them, you will have to copy the appropriate files from /etc/dtos into your $HOME directory. Be careful not overwrite any of your own custom config files!

Setting a wallpaper

To set a wallpaper, launch dm-setbg (part of dmscripts) with the keybinding ’SUPER+p b’. This will launch the image viewer sxiv which will display the wallpapers in /usr/share/backgrounds/dtos-backgrounds. Navigate to the wallpaper you want to set and hit ’m’ to mark it. Then close sxiv and the marked wallpaper will be set.


The following tables of keybindings are just a few of the most useful ones to know to get started. To list all possible keybindings (especially in Doom Emacs) would be an enormous undertaking, and I doubt anyone would find such a massive document useful, so I have tried to keep these keybindings lists to a user-friendly size.

Window manager keybindings

SUPER + RETURN opens terminal (alacritty)
SUPER + SHIFT + RETURN opens run launcher (dmenu)
SUPER + b opens qutebrowser
SUPER + TAB rotates through the available layouts
SUPER + SPACE toggles fullscreen on/off (useful for watching videos)
SUPER + SHIFT + c closes window with focus
SUPER + SHIFT + r restarts xmonad
SUPER + SHIFT + q quits xmonad
SUPER + 1-9 switch focus to workspace (1-9)
SUPER + SHIFT + 1-9 send focused window to workspace (1-9)
SUPER + j windows focus down (switches focus between windows in stack)
SUPER + k windows focus up (switches focus between windows in stack)
SUPER + SHIFT + j windows swap down (swap windows in the stack)
SUPER + SHIFT + k windows swap up (swap the windows in the stack)
SUPER + h shrink window (decreases window width)
SUPER + l expand window (increases window width)
SUPER + w switches focus to monitor 1
SUPER + e switches focus to monitor 2
SUPER + r switches focus to monitor 3
SUPER + period switch focus to next monitor
SUPER + comma switch focus to prev monitor
SUPER + SPACE toggles fullscreen on/off (useful for watching videos)
SUPER + t force floating window back into tiling
SUPER + p h dm-hub allows access to all dmscripts
SUPER + p a dm-sounds choose an ambient background
SUPER + p b dm-setbg set a background
SUPER + p c dm-colpick pick color from our scheme
SUPER + p e dm-confedit edit config files
SUPER + p i dm-maim screenshots (images)
SUPER + p k dm-kill kill processes
SUPER + p m dm-man manpages
SUPER + p n dm-note store one-line notes and copy them
SUPER + p o dm-bookman qutebrowser bookmarks/history
SUPER + p p passmenu passmenu
SUPER + p q dm-logout logout menu
SUPER + p r dm-reddit reddio (a reddit viewer)
SUPER + p s dm-websearch search various search engines
SUPER + p t dm-translate translate text (Google Translate)
CTRL + e e emacsclient launches Doom Emacs (dashboard)
CTRL + e a emms Emacs multimedia system
CTRL + e b ibuffer lists emacs buffers
CTRL + e d dired file manager inside Emacs
CTRL + e i erc irc client
CTRL + e n elfeed rss reader
CTRL + e s eshell shell written in elisp
CTRL + e t mastodon mastodon client
CTRL + e v vterm one of the terminals inside Emacs
CTRL + e w eww Emacs web wowser (distro.tube)

Doom Emacs keybindings

M-x command Runs a command M-x is a command prompt
SPC period find-file Opens dired file manager in a split
SPC f r counsel-recentf Open recent files
SPC h r r doom/reload Reloads Doom Emacs
SPC t b big mode Toggles big font mode
SPC t l doom/toggle-line-numbers Toggle line numbers
SPC t t toggle-truncate-line Toggle truncated lines
SPC TAB TAB comment-line Comment/uncomment lines
SPC w d evil-window-delete delete window (split)
SPC w s evil-window-split split window horizontally
SPC w v evil-window-vsplit split window vertically

Qutebrowser keybindings

yy Copy/yank URL
yY Copy URL to selection
yt Copy title to clipboard
yT Copy title to selection
pp Open URL from clipboard
pP Open URL from selection
Pp Open URL from clipboard in new tab
PP Open URL from selection in new tab
wp Open URL from clipboard in new window
wP Open URL from selection in new window
[[ Click “previous”-link on page
]] Click “next”-link on page
{{ Click “preious”-link on page in new tab
}} Click “next”-link on page in new tab
ctrl+a Increment no. in URL
ctrl+x Decrement no. in URL
ctrl+f Page down
ctrl+b Page up
ctrl+d Half page down
ctrl+u Half page up
go Open based on cur. URL
gO Open based on cur. URL in new tab
xO Open based on cur. URL in background tab
xo Open in background tab
wo Open in new window
th Back (in new tab)
wh Back (in new window)
tl Forward (in new tab)
wl Forward (in new window)
;b Open hint in background tab
;h Hover over hint (mouse-over)
;i Hint images
;I Hint images in new tab
;o Put hinted URL in cmd. line
;O Put hinted URL in cmd. line in new tab
;y Yank hinted URL to clipboard
;Y Yank hinted URL to selection
;r Rapid hinting
;R Rapid hinting in new window
;d Download hinted URL
gm Move tab
gl Move tab to left
gr Move tab to right
gC Clone tab
gf View page source
gu Navigate up in URL
gU Navigate up in URL in new tab
sf Save config
ss Set setting
sl Set temp. setting
sk Bind key
Ss Show settings
wi Open web inspector
gd Download page
ad Cancel download


Copyright © 2020-2021 Derek Taylor (DistroTube)

This page is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License (CC-BY-ND 4.0).

The source code for distro.tube can be found on GitLab. User-submitted contributions to the site are welcome, as long as the contributor agrees to license their submission with the CC-BY-ND 4.0 license.

Author: dt

Created: 2023-03-01 Wed 11:17