/dotfiles

Linux dotfiles for openbox/tint2/conky. Managed with chezmoi and ansible. Used on Gentoo, Debian/Devuan and Void.

Primary LanguageLuaGNU General Public License v2.0GPL-2.0

The Dotfiles

These are my personal dotfiles which I desided to publish.

Installation

Install chezmoi.

Clone the contents of this repository in ~/.Dots/chezmoi (NB: specifying this directory is a must):

chezmoi init vbrand1984 --source ~/.Dots/chezmoi

See what files are going to be changed upon applying this configuration:

chezmoi status --exclude=encrypted

See detailed differences in the files managed by this configuration (there will be a lot):

chezmoi diff --exclude=encrypted

Apply the configuration:

chezmoi apply --exclude=encrypted

Screenshot(s)

A screenshot

List of Used Programs and Theming Packages

Expand
Applications and utilities
Dotfiles managerchezmoi
Window managerOpenbox
PanelTint2
X Compositorpicom
Wallpaper managernitrogen
System monitorConky
Openbox menusobmenu-generator
Application launcherrofi
Text processorsVim, Emacs
Terminal emulatorLXTerminal, Alacritty
File managersmc, PCManFM or caja
Sound volumevolumeicon
Clipboard managerClipIt
ScreensaverXScreensaver
X settings daemonXSettingsD
CalendarGsimplecal
ScreenshotsScrot
MiscellaniaCaffeine-ng, Redshift
Theming
GTK and Openbox themeGreylooks
IconsPapirus-Light
Mouse cursorDMZ-White a.k.a. Vanilla-DMZ
System fontRoboto Regular 11
Monospace fontJetBrains Mono Medium
Other fonts usedUbuntu, DejaVu

Cheatsheet

Openbox keybindings

Expand
Application launchers
Super-Ctrl-BWeb Browser
Super-Ctrl-CLibreOffice Calc
Super-Ctrl-EEmacs client
Super-Ctrl-FFile manager
Super-Ctrl-ILibreOffice Impress
Super-Ctrl-OObconf
Super-Ctrl-PPavucontrol
Super-Ctrl-QQalculate!
Super-Ctrl-RTor Browser launcher
Super-Ctrl-SOBS-Studio
Super-Ctrl-TTerminal emulator
Super-Ctrl-WLibreOffice Writer
Ctrl-Alt-DelSystem monitor
rofi
Super-Enterrun module (run a command)
Super-Shift-Enterdrun module (run desktop application)
Super-F1calc module (not working in Debian-based installs)
Super-Tabwindow switching module
Screenshots
PrtScrTake a screenshot (fullscreen)
Alt-PrtScrScreenshot of the current window
Ctrl-PrtScrScreenshot of selection
Super-PrtScrFullscreen screenshot with a 5 sec delay
Super-Alt-PrtScrScreenshot of the current window with a 5 sec delay
Inherent Openbox stuff
Super-Shift-AReconfigure whole appearance
Super-Shift-CReconfigure Openbox
Super-EscShow Openbox menu
Super-DShow/hide desktop
Session management
Super-Ctrl-LLock screen
Super-Ctrl-EscShutdown dialogue
Super-Shift-EscExit Openbox
Navigating between desktops
Super-[1..4]Go to desktop 1, 2, 3 or 4
Super-Ctrl-LeftGo to the desktop to the left
Super-Ctrl-RightGo to the desktop to the right
Super-Ctrl-UpGo to the desktop above
Super-Ctrl-DownGo to the desktop below
Moving windows between desktops
Super-Shift-[1..4]Move current window to desktop 1, 2, 3 or 4
Super-Shift-LeftMove current window to the desktop to the left
Super-Shift-RightMove current window to the desktop to the right
Super-Shift-UpMove current window to the desktop above
Super-Shift-DownMove current window to the desktop below
Window handling
Alt-F4, Super-QClose current window
Alt-EscDrown the window into the bottom of the stack
Alt-SpaceShow window's context menu
Super-FToggle fullscreen
Super-IIconify current window
Super-MToggle maximize
Super-OToggle omnipresent
Alt-TabSwitch to the next window
Ctrl-Alt-TabSwitch to the previous window
(Semi)-Tiling
Super-LeftShift current window to the left half of the screen
Super-RightShift current window to the right half of the screen
Super-UpShift current window to the top half of the screen
Super-DownShift current window to the bottom half of the screen
Super-HomeShift current window to the upper-left corner of the screen
Super-PageUpShift current window to the upper-right corner of the screen
Super-PageDownShift current window to the bottom-right corner of the screen
Super-EndShift current window to the bottom-left corner of the screen

Dunst mouse bindings

Expand
  • Left click: Open context menu for actions and URLs.
  • Right click: Close current notification.
  • Middle click: Close all notifications.

Features

Supported distributions

These dotfiles are tested in Gentoo, Debian/Devuan and Void Linux. Theoretically, this config should also work in other Debian-based distros (non-systemd ones included), and in Ubuntu and Ubuntu-based distributions as well, but not all features may be supported.

The dotfiles are managed by chezmoi. In Void Linux, the package for chezmoi is in the official repository; in Gentoo, there is an ebuild in the guru overlay. There is no official support for chezmoi in Debian though. One can install chezmoi in Debian and Debian-based distros in different ways. Personally, I prefer manual installation of the prebuilt .deb package (link). After that it is possible to update chezmoi by running chezmoi upgrade (see the docs).

Automated installation of packages

In Debian-based distros, this config will automatically install needed packages using aptitude. The list of the packages to install is stored in the $CHEZMOI_SOURCE_DIR/.chezmoidata/packages-debian.yaml file. Further package installation and configuration is performed by my ansible playbook (WIP).

Local bin directory

~/.Dots/bin is added in $PATH after everything else. This directory contains several scripts which have executable bit on.

~/.Dots/bin has the exact_ chezmoi's prefix in the config** (see the docs) which means that anything not managed by chezmoi in this directory will be deleted upon executing chezmoi init --apply, chezmoi update or chezmoi apply. If this behaviour is undesirable, rename the directory in the chezmoi source directory and wipe off the exact_ prefix before applying the configuration.

The name ~/.Dots/bin was chosen deliberately because this path does not belong to any known to me standard, so that this config doesn't touch the ~/bin and ~/.local/bin directories.

Local scripts directories

Utility scripts without executable flag are stored in the ~/.Dots/scripts directory. Openbox pipemenu scripts are stored in ~/.Dots/scripts/openbox-pipemenus. All these scripts are invoked from other scripts directly, so that there is no need to either add them in $PATH or enable executable bit at all.

These directories both have the exact_ prefix in the config as well.

Most config files are readonly

Most of the configuration files managed by chezmoi here are private_ and readonly_. The reason for that is not only security, but also convenience. This prevents user from accidently editing a config file which is managed by chezmoi. Instead, the chedit alias is defined in bash for the chezmoi edit --apply command. This command is also available via the mc user menu: just navigate your cursor over the desired file, press F2 and e.

The chezmoi.toml file

This config excessively abuses templating features of chezmoi. Many settings are stored in the main configuration file of chezmoi, ~/.config/chezmoi/chezmoi.toml (see the docs), which is defined by $CHEZMOI_SOURCE_DIR/.chezmoi.toml.tmpl (see the docs).

Theming and fontconfig options

GTK options like theme, system font, mouse cursor theme, as well as fontconfig options like DPI, antialias and hinting are kept on a centralized basis in the ~/.config/chezmoi/chezmoi.toml file in the gtk<whatever> and fc<whatever> variables. One should not use programs like lxappearance in order to adjust these settings. Instead, edit the ~/.config/chezmoi/chezmoi.toml file, run chezmoi apply and reconfigure-appearance.sh (or just press Super-Shift-A in order to invoke this script).

The default Greylooks GTK and Openbox theme is downloaded and installed in the ~/.local/share/themes directory automatically upon applying the configuration.

Caveats

  • This config may delete several config files in $HOME, see the $CHEZMOI_SOURCE_DIR/.chezmoiremove file for more details. The reason for that is, configuration files for these programs are stored inside the ~/.config directory instead (and Vim config is stored in ~/.vim).
  • Git configuration is also affected. The ~/.gitconfig and ./git-credentials files are deleted, and the ~/.config/git/config file is created according to its template. Thus, be sure you've backed up your git configuration before applying these dotfiles!
  • The ~/.config/autostart directory has the exact_ chezmoi's prefix in the config which means that anything not managed by chezmoi in it will be deleted upon executing chezmoi init --apply, chezmoi update or chezmoi apply (this is done partly for security, partly for convenience reasons). You have been warned.

License

This project is free software and is published under the terms of the GPL-2.0 license.

The project is provided AS IS and WITHOUT ANY WARRANTY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.