This repository contains my dotfiles (those that can be safely shared). Dotfiles are managed with dotref tool, which is a simple Python tool that I created to help me manage dotfiles for multiple devices.
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).
In general, Nord-like low contrast colors are used in most places (except GTK and Qt themes, see below).
The base
profile includes configurations for the most essential tools:
- 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
- Htop - interactive process viewer
The desktop
profile builds on top of the base
profile and contains configuration
for the desktop environment based on Sway:
- Foot - fast, lightweight and minimalistic Wayland terminal emulator
- Sway - tiling Wayland compositor
- Waybar - highly customizable Wayland bar for Sway and Wlroots based compositors
- Wofi - launcher/menu program for Wlroots based Wayland compositors such as Sway
- Swaylock - screen locker for Wayland
- 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
Please note, that this repository only contains user dotfiles and system config files (such as, for example, for login manager) are not part of this repo.
Graphical environment is configured to use Noto fonts, while terminal uses Ubuntu font. Nerd Fonts used for icons.
Dotfiles also include configuration for Qt and GTK themes. Arc is used at the main theme and Papirus as the icon theme.
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 user environment variables are configured in ~/.profile
file.
While this file is read by most login managers (e.g. Greetd, which is what I use) 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).
See dotref page for the complete documentation on
how to use Dotref for dotfile management.
The easiest way to start is to clone this repository somewhere, select base
profile and apply it
to the system.
Clone the dotfiles repository:
git clone --depth 1 https://github.com/ovk/dotfiles
cd dotfiles
Check Dotref profiles list with dotref profiles
and select base
profile:
dotref init -p base
See what will be changed with dotref status
command, and if it looks sane,
apply the dotfiles:
dotref sync
Please note, that if there are any conflicts (i.e. you already have a config file which should otherwise be overwritten by dotref) you have to resolve them manually, for example, by backing up and removing conflicting config files.