Marty Oehme
6fd8fcf8ca
With bootstrap files no longer linked to config directory, we can have an easier directory structure with less nesting for them. Install.sh needs to use the new structure when calling its bootstrap scripts. |
||
---|---|---|
alacritty/.config/alacritty | ||
bootstrap | ||
fontconfig/.config/fontconfig | ||
gopass/.config/gopass | ||
home | ||
i3/.config/i3 | ||
libinput-gestures/.config | ||
nvim/.config/nvim | ||
picom/.config/picom | ||
polybar/.config/polybar | ||
qutebrowser | ||
rofi/.config/rofi | ||
rofi-surfraw/.config/rofi-surfraw | ||
scripts/.local/bin | ||
shell/.config/shell | ||
sxhkd/.config/sxhkd | ||
tmux/.config/tmux | ||
vifm/.config/vifm | ||
xdg-user-dirs/.config | ||
xresources/.config/xresources | ||
install.sh | ||
LICENSE | ||
README.md |
dotfiles Read-Me and Roadmap
What's in these dotfiles
- vim configuration for simple programming tasks (especially go/typescript/python/bash) and prose
- academic workflow tools, to allow quick citation, pdf compilation, and preview
- simple, efficient polybar with package update notification, and spotify integration
- tmux session management through
tm
andtl
tools - quick terminal-wide color management through
sd
/sD
/sl
/sL
commands, allowing two light and dark color-schemes - many vim color-schemes with quick light/dark switching (
F8
) and theme switch (<Space>+F8
) - quick directory jumping using z, with fzf integration
- fzf integrations for bibtex citation, vim buffer management, most recently used switching, shell command history, and more
Quick-Start
The dotfiles are based on a bare-repository residing in your home directory. To enable a faster usage of the dotfile git commands, a dot
command is supplied which mirrors the usual git
functionality, but solely applies it to your dotfiles.
To install you need git on your system; to effectively use the dotfiles you should be using zsh (chsh -s /bin/zsh
to switch your current user to the shell).
Clone the bare repo, rename it and force a checkout with the following command - NOTE this WILL OVERWRITE YOUR EXISTING FILES, so have a look at what is contained beforehand.
git clone https://gitlab.com/marty-oehme/dotfiles.git df && cp -rf df/.git ~/.dotfiles && rm -rf df && cd ~ && git --git-dir=$HOME/.dotfiles/ checkout -f master
It will clone your dotfiles into the .dotfiles directory in your home directory and then force a checkout of the current master branch. Open a new terminal window and you should live in the dotfiles.
What's in these dotfiles
- vim configuration for simple programming tasks (especially go/typescript/python/bash) and prose
- academic workflow tools, to allow quick citation, pdf compilation, and preview
- simple, efficient polybar with package update notification, and spotify integration
- tmux session management through
tm
andtl
tools - quick terminal-wide color management through
sd
/sD
/sl
/sL
commands, allowing two light and dark color-schemes - many vim color-schemes with quick light/dark switching (
F8
) and theme switch (<Space>+F8
) - quick directory jumping using z, with fzf integration
- fzf integrations for bibtex citation, vim buffer management, most recently used switching, shell command history, and more
Notable Folders
- generally, most configuration for applications follows the XDG specifications, keeping configuration in .config directory and supplementary files in .local/share directory
.config/shell
contains all the general zsh/bash/sh configuration and environment variables usually contained in .zshrc/.zprofile/..; it is divided in login shell config (loginrc.d), general shell config (rc.d) and zsh specific (zsh.d).config/rofi
contains additional scripts and a simple theming framework for rofi and should probably be migrated into the correct directories at some point.local/bin
contains most executable user scripts.local/share/pandoc
contains configuration for academic latex (pandoc, really) writing and is of interest if you want to use this functionality.xinitrc
is used for x initialization and program startup, customize to your needs.gitlab-ci.yml
is only used for simple CI code linting and static analysis on gitlab, can be deleted on individual deployments
NOTE:
THE BELOW README IS OUT OF DATE DO NOT FOLLOW ITS INSTALL INSTRUCTIONS
At some point I will get around to updating it
Quick-Start
There are two ways of using these dotfiles:
To fully provision a completely new arch linux setup
$ curl -Lks http://bit.do/marty-dot | sudo /bin/bash
Or, to only use these dotfiles two steps are necessary
- install git & zsh if not already installed on your machine (should often already be available)
- run
chsh -s /bin/zsh
to switch the shell to zsh - go to home directory & run
git clone https://gitlab.com/marty-oehme/dotfiles.git df && cp -rf df/.git ~/ && rm -rf df && cd ~ && git checkout -f master
- install tmux (or remove the corresponding tmux config entries) [this should not be necessary anymore since tmux scripts check for an installation]
- install a powerline compatible font (nerdfont patched fira code is what I use)
Checklist and Things to look at for dotfiles and Linux workflow
-
Bring this readme up to date with new dotfiles structure/installation/content
-
Überzug as terminal picture preview, here
-
irssi as irc client
-
vifm as ranger replacement - check the individual advantages, disadvantages
-
neomutt / mutt-wizard as terminal email-client
-
newboat as rss client
-
think about calcurse as calendar app (would have to import/export from gcal)
- get some kind of todoist integration going, so we can use todoist from the cmdline
- set up qutebrowser for quicklinks, bookmarklets, url-redirection
- set up better clipboard integration across vim, tmux, x
Introduction & Idea
My Set-Up -- just exchange alias config with alias dotfiles (is already done in the dotfiles)
Examples & Inspiration
holman dotfiles -- dotfiles from the dotfiles-are-meant-to-be-forked dude. Peruse and steal what looks good
LukeSmith dotfiles / LARBS setup, use it for my initial bootstrap
Github does dotfiles, a whole array of dotfile setups to choose from
awesome dotfiles -- way more info on dotfiles than you ever needed
VSCode & Vue focused dotfiles setup -- looks interesting, maybe steal some tidbits
dotfiles from the author of above link
Roadmap
Perfectly setting up Arch
- Fix ReadMe.txt being copied into home dir when cloning dotfiles.
- Re-Map caps lock to ctrl
- Automatically switch between US/DE keyboard layout for laptop/pc this should probably be done with loadkeys and keymap per pc in zshrc or a config derivative see esp https://wiki.archlinux.org/index.php/Linux_console/Keyboard_configuration#Creating_a_custom_keymap so we could load de-latin1/en-us, specified in the branch that is checked out. and then apply a custom keymap over it to apply universal customizations, like Capslock=Control and so on.
- automatically install xcape to enable capslock remapping functionality
Overall Roadmap
- Set up Copy and Paste in X -- using clipmenud&clipnotify. I can copy stuff to and from urxvt w alt+ctrl+c/v, w/o alt for the rest of the system. invoke clipmenu to show last clips.
- [-] Install & Configure Compton Put on hold for now. What do I need it for? transparency? shadows? maybe removing screen-tearing. : Will perhaps re-investigate when i want to use e.g. windowsflash - to highlight the currently active i3 window
- Setup i3
- Window switching shortcuts
- Set up leaving question w/o mouse
- Closing/Opening of windows shortcuts
- Multi-monitor setup (w/ barrier)
- Set up initial load of windows to specific screens
- Get Barrier running Barrier by default installs the deps for its GUI (qt5 etc) -- if no GUI is necessary run it with build args to not make GUI (available in aur) : try to get a nicely working setup in the gui in antergos and then copy this to this .file repo, no gui necessary
- [-] Install & Configure rofi Happy with dmenu for now Could use https://github.com/enkore/j4-dmenu-desktop to get a faster menu, independent of i3.
- Install & Configure polybar
- theme ideas
- community scripts
- Set up ranger Set up video: https://www.youtube.com/watch?v=L6Vu7WPkoJo
- set up fzf for ranger
- set up movement,newtab,copy,move behavior
- set up visual selection
- set up tar-ing/untar-ing
- Set up sxiv/feh
- set up (n)vim set jk to get out of modes -> using xcape can accomplish mapping escape to capslock when released on its own. That way we can get out of insert mode with jk AND capslock, whichever we prefer.
- Get Password Sync going (enpass?)
- Set up integrations with my hosted setup
- dmenu script and look see ~10minutes in for automounting using dmenu example
- Set up in the cloud ide and dev environment (gce perhaps)
- Investigate mondo - automatic re-theming (can cycle through multiple themes and reload your .files etc)
- Use tmux for one main editing session. Use a single vim instance within this session. for music, quick exporations etc other urxvt instances are fine? can we use i3 to, when pressing mod+enter, not just open a new term but find out if tmux is running and either open new tmux pane or new term if it is not?
- Look at ack to replace grep (https://beyondgrep.com/why-ack/) -> look at the talk for ideas of customization
Restoration & Atomicity
- Make it possible to get an arch install up and running with the same settings with a couple commands either
- Set up file system backup to restore from (borg backup)
- Set up meta-packages & dotfiles to clone from
- Set up ansible to automatically bootstrap Arch for both desktop & laptop
Dotfiles
- Make the dotfiles status command automatically not show untracked files (i.e. most files in homedir) -- fix
ZSH, dotfile installation
-
~
-
.zgenrc
-
.zshrc
-
.zgenrc.d/
-
.Xresources
-
.xres/
-
.config/
-
.tmux/
-
.zsh/
-
.zgen/
-
I would like my home folder to be a bit more manageable, ideally it would only contain
-
.zshrc
-
.bashrc
-
.xinitrc
-
.Xresources as files and:
-
.ssh/ -- ssh related configuration -> secret stuff which should not be kept in the repo (an ssh setup script e.g. should be kept in dotfiles if it does not contain keys etc.)
-
.config/ -- program configuration. If it changes how another program on the computer runs, it should go in configuration.
-
.dotfiles/ -- the version history etc of my dotfiles (i.e. handled by git)
- Re-Organize zsh.d/ config files after organizational pattern in .zshrc (e.g. move k-alias script to internal script dependencies)
- Modify larbs setup script to ask for dotfile installation,
- Installation should ask which submodules of programs in csv to install: (should be distinguished somehow, perhaps with tags) as in 'Audio' packages, 'Music' packages, 'xorg' packages, 'Window Manager' packages (maybe use pkg groups?)
-
todo command alias to open up a preconfigured todo file OR a todoist cli (if i find a good one) https://github.com/sachaos/todoist looks good. Needs to be synched and works best with peco -- see readme. A working alias set might be useful here to set up commands for interaction Todo Alias opens ROADMAP.md for now.
- readme command alias to open up the current project README.md or ask to create a new one if none is found in current dir / parent dirs
- check for existence of xcape before trying to invoke its command in 5-capslock-to-ctrl
- make :q quit the terminal (perhaps doing alias as exit), :wq save the session in tmux and quit out of it
URxvt
- Enable Ctrl+Arrows to jump back/forward word-wise;
- enable (easy) copy/paste - Ctrl+Shift+C/V? Copy paste works with Alt+Ctrl+C/V, text needs to be selected (only mouse for now) - does not work in tmux yet
- Select text with Shift keys
- enable some sort of command mode a-la vim?
- Unify tab switching -- mod+num for workspaces, alt+num for tabs (in qutebrowser,urxvt,fm,...)
- enable unified copy paste throughout whole system
- enable vim quitting - q to exit session, wq to save as tmux session and quit
mpv
- Enable Seeking with vim controls (hjkl)
- Open file shortcut?
- Set up playlist creation from browser/yt etc https://github.com/mpv-player/mpv/blob/master/TOOLS/umpv will have 'umpv' command be a unique mpv instance for which any additional play item will get appended -> perfect for playists. (see script for more info)
qutebrowser
- Open current page/ hint link in mpv (Ctrl + m / M)
https://qutebrowser.org/FAQ.html - commands for settings.
- Make it use umpv script in dotfiles confing to enable playlist queuing.
- Fix for getting stuck in text-field: Either press tab (works sometimes to select next element) or do this https://github.com/qutebrowser/qutebrowser/issues/2668
i3
- Switch to hjkl
- Make custom workspaces: 1 - browser, 2 - term, 9 - agenda, 0 - music
- Superkey to Right Shift
- Alias Capslock to shift - aliased to Ctrl now
- make it work with laptop as 2nd monitor if I switch over to left window from i3, i want to land on the right window of my laptop as the next selection
Various important packages
- i3 [i3blocks, i3gaps]
- tmux
- pulseaudio (&pavucontrol)
- lightdm, lightdm-mini-greeter
- nvidia, nvidia-utils etc
- xorg-xinit, xorg-server, xorg-apps
- mopidy, mopidy-spotify, mopidy-spotify-tunigo, ncmpcpp or iris
- xcape - to enable capslock to act as control and escape at the same time