SkillAgentSearch skills...

Dotfiles

My personal dotfiles - GNU stow version

Install / Use

/learn @storax/Dotfiles

README

  • Dotfiles [[file:.assets/neofetch.png]]

This repository contains my personal dotfiles managed with [[http://www.gnu.org/software/stow/][GNU stow]]. I made some additions heavily inspired by [[https://github.com/xero/dotfiles][xero's dotfiles.]]

The main reason I chose [[http://www.gnu.org/software/stow/][GNU stow]] is it's minimal dependencies. I used homesick before but it requires ruby. Choosing GNU stow made moving to Gentoo much easier and faster. On the other hand, a lot of nice commands, especially the track command, are missing.

This repo is not meant to be used verbatim. These are my personal dotfiles and they only work for my setup. But if you are crafting your own dotfiles, you might find one or two interesting things in here.

Features:

  • [[http://www.alsa-project.org/][alsa]] config to set my soundcard (hardware dependent)
  • [[https://dunst-project.org/][dunst]] notification daemon config
  • [[https://www.gnu.org/software/emacs/][Emacs]] configuration using [[http://spacemacs.org/][Spacemacs]]
  • Fonts
  • fun shell scripts
  • Gentoo management scripts
  • [[https://git-scm.com/][git]] configuration
  • [[https://www.gtk.org/][gtk]] configuration to set the theme
  • [[http://hisham.hm/htop/][htop]] configuration
  • [[https://i3wm.org/][i3]] tiling window manager configuration which makes heavy use of modes
  • [[https://rybczak.net/ncmpcpp/][ncmpcpp]] ncurses mpd client configuration
  • [[https://notmuchmail.org/][notmuch]] for mail
  • [[http://parcellite.sourceforge.net/][parcellite]] clipboard manager configuration
  • [[https://github.com/jaagr/polybar][polybar]] status-bar configuration
  • [[https://docs.python.org/2/library/pdb.html][pdb]] python debugger configuration
  • browser startpage
  • [[https://tmux.github.io/][tmux]] terminal multiplexer configuration
  • [[https://github.com/streamlink/streamlink-twitch-gui][steamlink-twitch-gui]] configuration
  • wallpapers
  • [[https://www.x.org/wiki/][x11]] =startx= and =.Xresources= script for [[http://software.schmorp.de/pkg/rxvt-unicode.html][urxvt]] and [[https://davedavenport.github.io/rofi/][rofi]]
  • [[https://www.freedesktop.org/wiki/Software/xdg-utils/][xdg]] configuration for mimetypes and user directories
  • [[https://www.x.org/archive/current/doc/man/man1/xmodmap.1.xhtml][xmodmap]] configuration to make =Cap Lock= a second =Ctrl= key
  • [[http://www.zsh.org/][zsh]] configuration using [[https://github.com/zplug/zplug][zplug]]

This repo deprecates: [[https://github.com/storax/storaxcastle][storaxcastle]] [[https://github.com/storax/emacs-castle][emacs-castle]] [[https://github.com/storax/zsh-castle][zsh-castle]] [[https://github.com/storax/i3-castle][i3-castle]]

** Installation [[http://www.gnu.org/software/stow/][GNU stow]] is very easy to use. For each directory in this repo, you simply call:

#+BEGIN_SRC sh :exports code stow -t ~/ -D <directory> #+END_SRC

I added a simple script to automate most of the required steps. #+BEGIN_SRC sh :exports code ./install.zsh #+END_SRC

** Packages Here is some little documentation about each package. *** emacs The main features:

  • [[http://spacemacs.org/][spacemacs]] with vim bindings.
  • [[https://github.com/emacs-helm/helm][helm]] over [[https://github.com/abo-abo/swiper][ivy]] because =helm= has a couple of advanced features that are quite nice. Although I have to say =ivy= looks very good but so far there was no reason to change.
  • [[https://github.com/magit/magit][magit]] completely replaces the git commandline interface or any other GUI.
  • [[http://orgmode.org/][org-mode]] for taking notes, and organizing. Agendas etc have been configured but I rarely use it anymore.
  • [[https://github.com/bbatsov/zenburn-emacs][zenburn]]: I like low contrast themes and this on of the best.
  • =python= has the most configuration because it is my main programming language.
  • some 'advanced' [[https://github.com/joaotavora/yasnippet][yasnippets]]
  • [[https://notmuchmail.org/][notmuch]] for mail
  • icons for dired/helm-find-file/modes/...
  • [[https://github.com/areina/helm-dash][helm-dash]] for browsing documentation

I've written some emacs plugins that I sometimes use (or use at work):

  • [[https://github.com/storax/org-tfl][org-tfl]]: Transport for London meets org-mode
  • [[https://github.com/storax/emaci][emaci]]: A silly CI-server inside emacs
  • [[https://github.com/storax/lame][lame]]: Manual task streamlining **** Python I use the spacemacs python layer with a couple of customizations. Running tests has been customized to run tests at point/module/project with tox and pdb.

The GUD interface has been extended. There is support for setting breakpoints at point, printing variables/region and a couple helm sources for navigating breakpoints etc. Most of the pdb functions are accessible via keybindings. It's not as good as [[https://github.com/inducer/pudb][pudb]] but I like it as I can stay in emacs and browse files with all my keybindings and settings.

*** i3 My i3 config is simple but I love it.

Startscreen: [[file:.assets/startscreen.jpg]]

Rofi run menu: [[file:.assets/rofi.png]] **** Requirements

  • =urxvt= as a terminal emulator
  • =feh= for wallpapers
  • =rofi= for dmenu and window selection
  • [[https://github.com/seamus-45/roficlip][roficlip]] for clipboard selection
  • =i3lock= for screensaver/lock screen
  • =ncmpcpp= for starting the music client
  • =mpc= for controlling the =mpd= media player daemon
  • =alsa-utils= for controlling the volume
  • =xbacklight= for controlling the display brightness
  • =unclutter= to hide the mouse after a period of inactivity
  • =gnome-settings-daemon=
  • =compton= as a composite manager to render transparency
  • =polybar= as a statusbar replacement
  • =xautolock= for activating i3lock
  • =xset= for setting display sleep mode **** Keybindings The keybindings rely heavily on modes. The default mode only has one keybinding =AltR= (as in the right =ALT= key) configured to enter the main mode. You can always go back to the default mode with =ESC= or =SPC=

I chose this setup because I mostly have to press one key at a time. =SPC= is always in reach, so quitting is really fast and becomes part of the muscle memory really fast.

=Backspace= will always go to the parent mode. =Escape= will always go to the default mode.

For moving =i= =j= =k= =l= is used in multiple contexts.

=F-12= is bound in default mode and switches to my 'quiet place'. It is the startscreen shown above, which is a transparent urxvt terminal. I was a big fan of dropdown consoles. When they are semitransparent you can type while reading something. But I now use this only for certain actions. In other cases I quickly open a new terminal side by side the browser/other application. ***** Main mode To enter the main mode press =AltR=. This gives you quick access to switch focus and workspaces. Other modes can be entered from here. | Key | Action | |---------+--------------------------| | =i j k l= | focus up/left/down/right | | =0-9= | switch workspace | | =Return= | open terminal | | =d= | rofi run mode | | =Q= | quit application | | =;= | i3-message | | =c= | roficlip | | =f= | focus mode | | =m= | move mode | | =r= | resize mode | | =t= | layout mode | | x | system mode | | w | workspace mode | ***** Focus mode Mode focus changing keybindings | Key | Action | |---------+-------------------------------| | =i j k l= | focus up/left/down/right | | =0-9= | switch workspace | | =p= | focus parent | | =c= | focus child | | =f= | toggle between floating focus | | =d= | rofi window mode | | =Tab= | next workspace | | =S-Tab= | previous workspace | | =m= | move mode | ***** Move mode Move windows | Key | Action | |---------+-------------------------| | =i j k l= | move up/left/down/right | | =0-9= | move to workspace | | =t= | floating toggle | | =f= | focus mode | ***** Resize mode Resize windows | Key | Action | |---------+----------------------------| | =i j k l= | resize window in direction | | =f= | fullscreen | | =h= | hide | | =s= | show | ***** Layout mode Change layouts | Key | Action | |---------+--------------------------| | =i j k l= | focus up/left/down/right | | =p= | focus parent | | =c= | focus child | | =f= | fullscreen | | =d= | default layout | | =h= | horizontal split | | =v= | vertical split | | =s= | stacking | | =w= | tabbed | | =e= | toggle split | | =t= | floating toggle | | =m= | move mode | ***** Workspace mode Manage workspaces | Key | Action | |-------+----------------------| | =r= | rename workspace | | =Tab= | next workspace | | =S-Tab= | previous workspace | | =d= | rofi workspaces mode | | =0-9= | swith to workspace | ***** System mode | Key | Action | |-----+------------------| | =e= | exit mode | | =s= | sound mode | | =d= | display mode | | =l= | lock | | =r= | restart i3 | | =c= | reload i3 config | ***** Exit mode | Key | Action | |-----+-----------| | =l= | lock | | =e= | logout | | =h= | hibernate | | =R= | reboot | | =P= | shutdown | ***** Sound mode | Key | Action | |-----+---------------| | =i= | volume up | | =k= | volume down | | =m= | mute | | =s= | ncmpcpp

View on GitHub
GitHub Stars26
CategoryDevelopment
Updated21d ago
Forks0

Languages

Emacs Lisp

Security Score

80/100

Audited on Mar 5, 2026

No findings