Skip to content

sgleizes/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Dotfiles

These are my personal, opinionated dotfiles.

The main goal is to be able to reproduce the bulk of my terminal and desktop environments, by versioning the things that I spent time configuring so that I do not have to spend that time ever again.

I try to keep things configurable, structured and documented, hoping that some bits might be understandable and usable by other people. But it's also more maintainable this way.

I try to adhere to the XDG basedir specification and file system hierarchy standard, or more exactly I try to hack these reluctant programs that are still doing it dirty roughly 20 years after the spec was first published, whenever I find it reasonable to do so. Because a $HOME should be clean.

I try to use modern yet mature programs which are being maintained, but sometimes changing long-lived habits is not worth it.

I try to integrate these programs together into a stable and coherent environment, but there is always a surprise waiting for me somewhere.

I try to have fun doing it, but sometimes it gets rough.

I do not try to support Mac OS. I don't use that.

What's in there

Requirements

  • zsh - The most powerful shell for interactive and scripting use.
  • git - To not be stuck with your own code.
  • yadm - A git wrapper for dotfiles management.

You can also optionally install svn, it is used by the zsh configuration to checkout specific parts of GitHub repositories.

Integrated terminal programs

These programs are all optional and can be selectively picked. The zsh configuration is organized into modules and will integrate the installed programs automatically. For some programs, a configuration file is provided in .config.

  • atool - A script for managing file archives of various types.
  • advcpmv - A patch for GNU Core Utilities cp, mv to add progress bars.
  • bat - A cat clone with wings.
  • btop - A resource monitor.
  • delta - A syntax-highlighter for git and diff output.
  • direnv - Update the environment based on the current directory.
  • docker / docker-compose - Container management.
  • elinks - Text-mode web browser.
  • emacs / doom-emacs - An extensible, customizable, free/libre text editor.
  • expac - Data extraction tool for alpm databases (pacman).
  • exa - A modern version of ls.
  • fasd - Quick access to frecent files and directories.
  • fd - A simple, fast and user-friendly alternative to find.
  • fortune / ponysay - A courtesy of the terminal.
  • fpp - Selecting files from command output.
  • fzf - A command line fuzzy finder.
  • git-extras - Extra git commands from the community.
  • gpg - Hybrid encryption software suite.
  • hex - Futuristic take on hexdump, made in Rust.
  • htop - Interactive process viewer and system monitor.
  • hub - GitHub from the command line.
  • jq - Command line JSON processor.
  • kmon - Linux kernel manager and activity monitor.
  • lazygit - Simple terminal UI for git commands.
  • nnn - n³ The unorthodox terminal file manager.
  • pistol - General purpose file previewer.
  • rclone - Rsync for cloud storage.
  • restic - Fast, secure, efficient backup program.
  • ripgrep - A modern version of grep.
  • rsync - Versatile file copying tool for remote and local files.
  • ssh - OpenSSH remote login client.
  • tldr / tealdeer - Simplified and community-driven man pages.
  • tmux - Terminal multiplexer.
  • tmux-xpanes - Awesome tmux-based terminal divider.
  • trash-cli - Move files and folders to the trash.
  • unison - Bidirectional file synchronization.
  • wget - Downloading remote files.
  • youtube-dl - Download videos from various platforms.

Zsh plugins

The zsh configuration is defined via xsh and uses zinit as plugin manager, allowing for asynchronous loading and lightning fast startup times. Some of the modules are inspired from prezto, and some prezto modules are also directly installed via zinit.

Here is a non exhaustive list of integrated external plugins:

Installation

yadm clone --bootstrap 'git@github.com:sgleizes/dotfiles.git'

Or, to install the desktop environment as well:

yadm clone --bootstrap 'git@github.com:sgleizes/dotfiles.git' -b desktop