This repository contains my personal dotfiles for Linux.
Dotfiles are managed with Chezmoi tool.
During init, there will be prompt for a few variables:
email- Email address used for Git config.gitname- User name for Git.gitsignkey- ID of the signing key for Git.desktop- boolean flag,trueif this is a desktop machine (so Hyprland and other desktop-related tools will be installed), andfalsefor terminal-only.
Note
Many dotfiles in this repo require software to be on the most recent versions. While this is usually not a problem for distros like Arch, it may not work for distros that contain outdated software by default (like Debian or Ubuntu).
Overall, the goal was to keep the system pleasant looking but not visually distracting. So the colors were chosen to be somewhat muted and low-contrast. In most places, Catppuccin color theme, or some variation of it, was used (Frappe variant), while there are a few places that use Nord-like theme. The exception is GUI applications (GTK, Qt) which deliberately use light color theme (see below).
Dotfiles for the following tools are installed if the system is not desktop:
- Fish - smart and user-friendly command line shell
- Neovim - hyperextensible Vim-based text editor
- Vifm - file manager with curses interface, which provides Vim-like environment for managing objects within file systems
- Git - distributed version control system
- Tig - text-mode interface for Git
- Tmux - terminal multiplexor
- Btop - interactive process viewer
- GPG - complete and free implementation of the OpenPGP standard
For desktop, dotfiles for the following tools are additionally installed:
- Foot - fast, lightweight and minimalistic Wayland terminal emulator
- Hyprland - modern compositor with the looks
- Hyprlock - simple, yet fast, multi-threaded and GPU-accelerated screen lock for Hyprland
- Hypridle - Hyprland's idle management daemon
- Hyprpaper - fast, IPC-controlled wallpaper utility for Hyprland
- Waybar - highly customizable Wayland bar for Sway and Wlroots based compositors
- Fuzzel - app launcher and fuzzy finder for Wayland
- Satty - screenshot annotation tool
- Swayosd - on screen display for keyboard shortcuts like caps-lock and volume
- UWSM - Universal Wayland Session Manager
- Wlogout - a wayland based logout menu
- Mako - lightweight Wayland notification daemon
- Imv - command line image viewer intended for use with tiling window managers
- Newsboat - RSS/Atom feed reader for the text console
And the following config files are installed:
- Fontconfig
- GTK config and styles
- Kvantum styles
- Qt styles
Graphical environment is configured to use Noto fonts, while terminal uses Ubuntu font. Nerd Fonts used for icons.
For GUI applications, Arc is used at the main theme and Papirus as the icon theme.
This setup doesn't use any display manager, and Hyprland is started directly from TTY1 by UWSM.
Where possible, dotfiles follow XDG Base Directory specification. xdg-ninja is a great tool that can help to detect and move config files from home directory to appropriate XDG directory.
Dotfiles in this repository assume that all XDG user directories are at their default locations.
Making sure that user environment variables are consistent across all login sessions is notoriously
difficult in Linux (see this great article for a short overview).
Even more so, after pam_environment deprecation.
In this repository, all terminal-only (i.e. non-desktop) user environment variables are configured in ~/.profile file.
While this file is read by most login managers and POSIX shells (such as bash), fish shell doesn't read it.
As a workaround, config.fish runs this file in a bash login session and imports additional
environment. See import_posix_env function in the fish/functions/import_posix_env .fish file.
This is only done if environment variables from the ~/.profile weren't already imported (e.g. by login manager).
As for desktop-specific environment variables, they are set by UWSM and configured in ~/.config/uwsm/env file.
Dotfiles can be easily installed with Chezmoi using the following command:
chezmoi init --apply https://github.com/ovk/dotfiles.git