Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vbrand1984/dotfiles

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

ansible-playbook bash chezmoi conky dotfiles dotfiles-linux dunstrc emacs-config fontconfig lua obmenu-generator openbox openbox-configuration picom-config python tint2rc vimrc

Last synced: about 15 hours ago
JSON representation

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

Awesome Lists containing this project

README

        

# The Dotfiles

These are my personal dotfiles which I desided to publish.

## Installation

Install [chezmoi](https://www.chezmoi.io/install/).

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](../assets/screenshots/screenshot01-gentoo.png?raw=true)

## 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](https://www.chezmoi.io/). 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](https://www.chezmoi.io/install/#download-a-pre-built-linux-package)). After that it is possible to update chezmoi by running `chezmoi upgrade` (see the [docs](https://www.chezmoi.io/reference/commands/upgrade/)).

### 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`](home/.chezmoidata/packages-deb.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](https://www.chezmoi.io/reference/source-state-attributes/)) 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`](home/exact_private_dot_Dots/exact_private_dot_scripts) directory. Openbox pipemenu scripts are stored in [`~/.Dots/scripts/openbox-pipemenus`](home/exact_private_dot_Dots/exact_private_dot_scripts/exact_private_openbox-menus). 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](https://www.chezmoi.io/reference/configuration-file/)), which is defined by [`$CHEZMOI_SOURCE_DIR/.chezmoi.toml.tmpl`](home/.chezmoi.toml.tmpl) (see the [docs](https://www.chezmoi.io/reference/special-files-and-directories/chezmoi-format-tmpl/)).

### 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` and `fc` 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`](home/private_dot_Dots/exact_private_bin/private_readonly_executable_reconfigure-appearance.sh.tmpl) (or just press `Super-Shift-A` in order to invoke this script).

The default [Greylooks](https://github.com/vbrand1984/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`](home/.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](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) license.

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