Why are dotfile repositories important? See https://dotfiles.github.io/.
See the modules folder to see what configs this repo manages.
The following are assumed to be installed:
- ag AKA the silver searcher (required by neovim for searching)
- acpi (required by polybar for battery indicator)
- color-blend (used for calculating colors)
- colorz (used as a backend for pywal)
- feh (required for background)
- Font Awesome (required by polybar)
- unifont (required by polybar)
- Source Code Pro font (used by oni)
- i3wm
- imagemagick
- pacman-contrib (required by polybar for update checking)
- powerline and powerline-fonts (for terminal)
- pulseaudio
- polybar
- ponymix (used for pulseaudio volume control)
- prezto (used for zsh config)
- python
- python neovim module
- pywal (used to generate colorscheme from wallpaper)
- Roboto font (required by polybar)
- rofi (required by i3)
- sysstat (required by polybar for cpu usage)
- task
- wireless_tools (make sure this is installed before compiling polybar)
- tig
- xbacklight (or light for acpi control instead)
- xss-lock (used to lock the screen before sleep)
The following are optional:
- compton (optional for cool animations and transparency)
- Franz (for cloud services)
- fzf (commandline fuzzy completion used by zsh and neovim)
- GNU Stow (recommended if you want to run the auto-install script)
- kitty (preferred terminal)
- mopidy (mpd compatible music server)
- mpc (control mopidy/mpd playback)
- Spotify
Here are more optional requirements related to the Language Server Protocol. You only have to install these if you want LSP-support in neovim:
- vls (vue)
- clangd (c/c++)
- typescript-language-server
- rls (rust)
You may have to remove existing dotfiles if they are not already managed by GNU stow. After cloning, running the install script will set up the symlinks for you, as well as install the default theme:
$ git clone https://github.com/towerism/dotfiles ~/.dotfiles
$ ~/.dotfiles/install
This dotfile setup is designed to allow the user to change the theme on the
fly. Themes can be loaded randomly, or selectively, on the fly based on
wallpapers stored in .wallpapers folder. In addition to Super+t
which allows
you to select a theme based on a wallpaper, there is a special theme mode for
loading and deleting themes.
Oni is a modern electron-based editor that combines neovim with the good parts of editors like Atom and VSCode. The main reason we like oni is because of its support of the Language Server Protocol. Combine this with the vim-polyglot, and you have a modern text editor with an authentic vim-feel that is unparalleled by any other text editor.
NOTE: oni is very unstable. I think it's a very good text editor, however I find a well configured (neo)vim setup preferrable for its stability and consistency. I will still be maintaining the oni module, just know that I primarily use neovim by itself.
Plugin manager: vim-plug
This is a modified version of the default config. Window navigation was modified to mirror vim bindings exactly, so horizontal splitting had to be remapped. I've also configured certain programs to open to certain workspaces, i.e. oni open in the code workspaces, and chromium opens in the www workspace. The configuration also automatically loads the theme that was most recently loaded.
Dunst is used for notifications. It hasn't been configured much from default other than wider notification window. The configuration is generated when changing themes in order to reflect the whatever the current colorscheme is.
The kitty default configuration is sufficient for now. The only thing changed is the default font.
This config shows a pretty status bar at the top of the screen. It shows battery, storage capacity used, volume, memory and cpu usage, wifi, power menu, and workspaces that are pinned to the corresponding monitor.
Shared scripts.
Task warrior configuration. Contains tasksh specific configs as well as inthe.am configs for task sync.
Ncurses git interface. Configured with vim-like keybindings. This configuration is also inspired by magit which I used for a while when I still used emacs.
The preferred application launchered. It is configured to match whatever the current colorscheme is.
Contains lockscreen-only wallpapers that don't work with pywal as well as the wallpapers that can be used with wal. The random-theme script pulls wallpapers from the wallpapers that are not lockscreen-only.
This provides good defaults through the prezto zsh configuration framework, including fuzzy completion, and git integration. It also uses keychain for managing ssh-agent across multiple terminals and Xsessions. It creates several aliases to neovim and makes it the default editor.