/dotfiles

Coffebar's personal dotfiles repo for Arch Linux daily driver with tiling window managers and Neovim

Primary LanguageLua

Screenshot

dotfiles backup

Overview

Table of Contents

Interesting features

Neovim

  • PDE with code completion from many sources (including ripgrep, LSP, path and copilot), a bunch of LSP servers, autosave sessions and files, clipboard history, code formatting, color picker, fuzzy finder, git integration, incremental selection, quick project switching, code snippets, syncing of everything across devices.

  • Super + F quick search files inside $HOME using ripgrep with a custom ignore file.

  • Neo-tree has custom mappings: Y Copy absolute path, t Open directory in Thunar, <c-r> Replace in folder via Spectre, <c-f> Search with Telescope live grep.

  • dotfiles bare repository will be detected by vim-fugitive, because my config updates environment variables on DirChanged event.

  • Super + er open Telescope to select *.sh script inside project and run it. Useful for build, run, deploy, any automation. Output will be shown in the quickfix window and hidden after timeout.

  • Super + t opens Neovim's builtin Terminal. Super + sa opens external Alacritty in the current working directory.

  • Super + b close editor's buffer or q - close any other window (help, fugitive, spectre)

  • Different colorscheme and options for TTY.

  • Automated setup with all dependencies from scratch in 10 minutes.

  • Neovim opens images in the external viewer instead of binary view.

  • Extra keybindings for copy-pasting: file path, current line, entire file contents.

  • And a bunch of other useful plugins. See Neovim plugins full list.

Common for Window managers

  • Notifications when the battery level is low or fully charged.

  • Alt + f opens a file manager in the directory found in the clipboard. For example, if you copied a file from some program, you can open its directory by pressing this shortcut.

  • Partially different config for each machine depending on hostname.

  • CapsLock's behavior is changed to Backspace.

  • Super + P pull dotfiles from this repo and shows a notification with an icon.

  • Super + ` open ssh servers menu to connect.

  • No Display Managers (LightDM or GDM).

i3

  • Automatic tiling via autotiling script. Split direction depends on the currently focused window dimensions. I'm using vim-style HJKL to navigate inside WM.

  • UI scale options depend on the current display setup and autorandr profile name.

  • Super + \ open fuzzy finder to search for local text files in the home directory to edit in Neovim.

  • Some of wm's binds were improved by Lua script. Lua has more flexibility than i3config syntax. I like to switch automatically to the appropriate workspace after opening programs using a keyboard shortcut.

Terminal

  • Alt + e execute suggested command from zsh-autosuggestions.

  • Ctrl + x after typing # comment question provides OpenAI generated suggestion.

  • Command + c Command + v copy & paste. Ctrl + c and Ctrl + p in neovim.

  • Nice aliases: i to install package, md2pdf to convert markdown file to pdf, v to open Neovim, yy to perform system upgrade.

  • Custom pacman hook updates the list of explicitly installed packages (pkglist-intel.txt) when install or remove something.

Neovim project management

neovim-project-manager-.mp4

๐Ÿ“ฆ neovim-project plugin

Neovim plugins full list

Restore Neovim config

Preview Neovim setup in Docker

Full Neovim setup can be tested inside docker container.

git clone https://github.com/coffebar/docker-test-fetch-nvim-conf.git
cd docker-test-fetch-nvim-conf && sh ./build.sh

See docker-test-fetch-nvim-conf repo for more details.

Replace config on your machine

fetch-nvim-conf.sh script helps me to get my full Neovim config installed on any Arch Linux machine with all dependencies.
It's not just clone repo. This script requires Arch Linux with pacman, sudo and git installed. It will install required packages, pnpm package manager and node modules for LSP & formatting.

It will overwrite the entire ~/.config/nvim folder!

Review source

# export PATH="$PATH:$HOME/.local/share/pnpm:$HOME/.node_modules/bin"
sh -c "$(wget -O- https://raw.githubusercontent.com/coffebar/dotfiles/main/fetch-nvim-conf.sh)"

Install dotfiles

Please don't do this if you're not me

This instruction will work as is for coffebar only!

  1. Before proceeding you need to restore SSH and GPG keys.

  2. SSH config must point to the GitHub's private key.

Review source

sh -c "$(wget -O- https://raw.githubusercontent.com/coffebar/dotfiles/main/dotfiles-restore.sh)"