Skip to content
/ dotfiles Public

Configuration files for common *nix tools

License

Notifications You must be signed in to change notification settings

ovk/dotfiles

Repository files navigation

🏠

Overview

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).

Screenshots

image

image

image

Included configuration

Colors

In general, Nord-like low contrast colors are used in most places (except GTK and Qt themes, see below).

Basic tools

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

Desktop

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.

Fonts and themes

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.

XDG

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.

Environment

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).

How to use

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.