▄▄ ▄▄▄▄ ██ ▄▄▄▄
██ ██ ██▀▀▀ ▀▀ ▀▀██
▄███▄██ ▄████▄ ███████ ███████ ████ ██ ▄████▄ ▄▄█████▄
██▀ ▀██ ██▀ ▀██ ██ ██ ██ ██ ██▄▄▄▄██ ██▄▄▄▄ ▀
██ ██ ██ ██ ██ ██ ██ ██ ██▀▀▀▀▀▀ ▀▀▀▀██▄
▀██▄▄███ ▀██▄▄██▀ ██▄▄▄ ██ ▄▄▄██▄▄▄ ██▄▄▄ ▀██▄▄▄▄█ █▄▄▄▄▄██
▀▀▀ ▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀ ▀▀▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀▀
- Bar:
polybar
(or i3blocks) - Browser:
firefox
(or qutebrowser) - Compositor:
compton
- IRC Client:
weechat
- File Manager:
thunar
&ranger
- Font:
Hack
- Program Launcher:
rofi
- Text Editor:
spacemacs
&vim
- Terminal Emulator:
termite
&oh-my-zsh
- Window Manager:
i3-gaps
yadm
dotfile managernvm
node version manager, defaults to lts/boronemacs
spacemacsyadm
dotfile manageri3-gaps
window managerpolybar
status line & bar for i3tumbler
enables thumbnail view of images for thunartermite
terminal (repo link)oh-my-zsh
& z shellfeh
terminal based image viewer, also used for desktop backgroundswakatime
for those interested in quantifying code usagevim
vundle
vim package managerwakatime
helps you track how much time you code [see website]ccat
colorized cat (nixcraft)exa
colorized ls written in rust (nixcraft)tree
see tree folder/file structure from command linetask
"Taskwarrior", a terminal based TODO list manager see websitertv
a terminal based reddit browser see their githubgtop
pretty neat terminal based visualtop
(many more undocumented)
How you choose to install this repo will depend on the state of your linux system.
This dotfile repo is intended to be an entire environment, not just dotfiles. It includes scripts for setting up an entire operating system from scratch. In order for the full installation to work, there are a few assumptions:
- Your operating system is a clean install of Arch, with no desktop environment, display server, nothing, just a terminal to interact with.
- You have git installed and are able to clone a fork of this repo.
I recommend installing Arch using Antergos because it gives a nice gui for installing Arch. It also has the option to install Arch without a desktop environment. I recommend that option because the setup scripts in this repo install your environment for you. Having an existing environment already will probably break these setup scripts.
Managing your dotfiles in source control is important. This project uses YADM, a dotfile manager that employs git. With YADM you can start with a new repo, or clone an existing repo. Both approachs are explained in depth on the YADM website's getting started section.
- Fork this repo (or clone this repo directly and change it's upstream to your fork after install is done)
- Install Arch using Antergos, choose the "no desktop environment" option.
- Follow the instructions outlined in install.md
- report any bugs or manual steps as issues to this repo so that the install process can be improved.
Make sure to read the setup script before executing it. It installs my entire environment, tweak it to meet your needs.
Currently using neotree icons.
Install using M-x all-the-icons-install-fonts
Restart after install SPC q r
in vim: :PluginInstall
fcron: cronjob utility
feh: command line utility for interacting with images
Make sure fcron daemon is enabled (runs at startup):
sudo systemctl enable fcron && sudo systemctl start fcron
Load the preconfigured cronjobs for this repo:
fcrontab ~/.config/fcron/my-fcrontab
This will run set up a cron job that will call a tool script update_background
. Every x minutes the background will change to a new image in the directory.
To change number of between image changes, edit my-fcrontab
and reload the crontab (step 2).
To change where the cron job searches for images, edit the directory in
update_background
.
All aliases are currently listed in ~/.zshrc
. This list is not comprehensive.
alias | Description |
---|---|
setup-edit | Run this command if you would like to edit the install(dotfiles installer). (i.e. you want to install new packages) |
decrypt | Decrypts yadm files and makes sure they are placed in ~/. Use this instead of yadm's decrypt command. |
tools | cd to ~/.local/bin/tools directory in terminal |
sz | source ~/.zshrc |
ez | edit ~/.zshrc |
xrl | reload changes to ~/.Xresources |
bgf | If you're in virtualbox and your desktop background is jank, this fixes it temporarily. I'm working on a better solution |
kl | kubectl |
Tools are scripts included as part of this repo that are used either in config files (like polybar & i3), or you can use directly.
Tools are located in ~/.local/bin/tools
& ~/.local/bin/setup
Action | Command | Location | Description |
---|---|---|---|
update pacman/aur | update | setup/update | updates pacman and aur packages (there is an indicator in polybar that shows you if there are updates available) |
install dotfiles | setup-install | setup/install | installs everything included in this repository, see setup instructions for more context |
take screenshot | screenshot | Places screenshot with data+time in ~/Dropbox/Screenshots/{YEAR} , pass -h flag for additional options. |
Action | Command | Type | Description |
---|---|---|---|
open rofi | alt+d | key combo | Opens rofi |
rofi switch view | alt+n/p (next/previous) | rofi key combo | Switches between views in rofi when rofi is open. Views: run, ssh, windows |
Mode | Action | Command | Description |
---|---|---|---|
* | open .spacemacs |
SPC f e d |
spacemacs/find-dotfile : opens .spacemacs in buffer |
reload .spacemacs |
SPC f e R |
dotspacemacs/sync-configuration-files : reloads .spacemacs config changes | |
view major mode commands | , |
major mode leader key (quickest way to issue a major mode command) | |
Org | toggle TODO | t |
toggle TODO item between TODO & DONE state in .org file |
insert TODO | alt-shift-RET |
insert new TODO in .org file |
using oh-my-zsh vi mode:
"/" vi-history-search-backward "?" vi-history-search-forward "n" vi-repeat-search "N" vi-rev-repeat-search
Tool | Command | Description |
---|---|---|
xbindkeys | xbindkeys -k | Uses xbindkeys to output key code of pressed key or mouse button. Useful for mapping key codes to commands in i3 config |
add "2>&1 |logger" to end of script:
* * * * * echo "test message" 2>&1 |logger
then view the output:
sudo systemctl status fcron
more info here
Custom themes are downloaded to /usr/share/themes/
Instructions for setting the GTK 2 & 3 themes can be found on the arch wiki
Settings for gtk 3:
~/.config/gtk-3.0/settings.ini
Settings for gtk 2:
~/.gtkrc-2.0
how to import & export cron jobs
- Howard Abrams
- Jeff Lindsay
- Ilya Grigorik - vimgolf creator
- Charles Leifer - Suffering for fashion: a glimpse into my Linux theming toolchain
- rust lib for creating rules for windows and workspaces in i3
examples of problems it could solve:
- when opening a terminal, make it open with a fixed or relative height and width
- configure and restore workspace layouts, beyond the functionality of i3
-
a polybar extension or stand alone application like rofi that provides a gui with functionality like emacs helm (spacemacs variety), to make common tasks, scripts, and functions discoverable and callable using symantic keybinds. (would love to use rust for the engine and maybe a language like lua, lisp, or python for scripting it)
-
short of the system variety of helm, a cheatsheet overlay that behaves like rofi and can hook into my config files and scripts to generate and display a cheatsheet would be amazing.
-
look into using taskwarrior for task management
-
look into using oh-my-zsh custom plugins for better management of .zshrc oh-my-zsh wiki "Customization" section
-
script to create issues in github repo for dotfiles from commandline using vim buffer (or maybe emacs plugin if i'm feeling ambitious.)
Things I want to know but didn't have time to look into when I thought of it.
-
i3wm: How to move a window below the window to the right or left of it without moving it below the entire tree
-
how to do snippets in emacs (per mode would be really nice)
Some things I'd like snippets for:
- Javascript console logs (figured this out once then promptly forgot how i did it)
- argument parsing template for bash scripts (i always end up copy pasting from other scripts)
- documentation templates for bash scripts (they're inconsistent between my scripts right now)