This repo contains all of the configuration files that I use on my main linux machines which run some version of Arch or Artix linux.
Below is the list of programs that this repo has configurations for. Each program contains a list of custom documented keybindings.
The default window manager. This config should work on single or multi monitor setups. Each monitor gets 9 independant workspaces.
See BSPWM Movement.
lf is a terminal file manager. The left column is the parent directory, the middle column is the current directory, and the right column is the contents of the selected file, or child directory.
Note: Icons are defined in .zprofile. if they don't work for you, simply comment out set icons in ~/.config/lf/lfrc
You can move around with h j k l, or with the arrow keys.
-
gGoto top of dir. listing. -
GGoto bottom of dir. listing. -
spaceAdd/Remove file/folder from selection. -
vInvert selection in current dir. -
uCancel selection. -
DDelete file/folder/selection. -
yCopy file/folder/selection. -
dCut file/folder/selection. -
pPaste file/folde/selection. -
cCompletely rename file/folder. -
ARename file/folder (beggining). -
IRename file/folder (end). -
aRename file/folder (before extension). -
iRename file/folder (after extension). -
ctrl + nCreate a new folder the in current dir. -
ctrl + vCreate a new file in the current dir. & open it with the default text editor.
-
enterOpens new terminal window in current dir. -
ctrl + fFuzzy Find from current dir.- Needs
fzfto be installed
- Needs
-
shift + vOpen current dir. in default text editor (nvim) -
~Goes home. -
eEncfs encrypt/decrypt secure directory (if it exists). -
xExecute selected file. -
XExecute selected file in the background. -
bSet current file as wallpaper (must be an image).
For more info, see lf tutorial.
The terminal multiplexer. The tmux theme should match the system theme. Mouse mode is enabled. Vi mode is enabled.
All the following keybinds are preceded by the leader: ctrl + a.
You can move between panes with h j k l.
-
ctrl + sToggle status bar. -
ctrl + rReload config file. -
nCreate new window. -
qKill window. -
sSpawn new pane horizontally. -
iSpawn new pane vertically. -
xKill pane. -
ctrl+h,j,k, orlResize panes. -
shift+j, orkMove panes. -
ctrl + aCycle panes.
Note: The nvim part of this config was moved to
llGaetanll/nvim. In short: Over the
years, the config grew large and complex. It even became the majority of the
code in this repo. I think this is not in the spirit of these dotfiles, which
are meant to be kept simple. If you still want to use that configuration, you
can of course git clone its repository as usual, and set a symlink.
ln -s /path/to/nvim/repo $XDG_CONFIG_HOME/nvim
If perhaps you want an simpler configuration, see
llGaetanll/nvim-lite.
Neovim is a community rewrite of vim. The config file .config/nvim/init.lua is well
documented if you want to see what features are included.
If you don't know how to find your local neovim config directory, you can open neovim and use the following command
:echo stdpath('config')
Note: The config should mostly work out of the box, except for Telescope
which may require ripgrep to be installed. See Searching for more info.
All keybinds are accessible through WhichKey by pressing <Space><Space>. Below are some important ones.
(space) The leader key.
Tabs are styled using bufferline.
<ctrl> + lmove to next tab. Same asgt<ctrl> + hmove to previous tab. Same asgT
Window keybinds are handled through use of the arrow keys.
up/down/left/rightMove to different window.ctrl + up/down/left/rightResize current window.
Custom search is handled through Telescope.
Note that telescope might require ripgrep to be installed. You can run
:checkhealth Telescope to see if you need it.
-
<leader> + ffFind files: Fuzzy find file names in the current directory. -
<leader> + fgLive Grep (requiresripgrep): Fuzzy find text content of any file in the current working directory. -
<leader> + fbFind Buffers: Fuzzy find currently opened buffers. -
<leader> + fhFind Help
The file tree is NvimTree.
<leader> + tToggle NvimTree<leader> + TFocus NvimTree
When visually selecting lines, the following commenting keybinds are available.
gccToggle line commenting on current selectiongbToggle block commenting on current selection
Commenting is also context aware thanks to TreeSitter, and will work in JSX files.
This is what gives neovim the amazing autocompletion settings.
gDGoto declaration of tokengdGet definition of tokengIGet infogSGet SignaturegiGet implementation<leader> + rnRename tokengrGet references<leader> + caGet code actions<leader> + fGet info about errors[dGoto previous error]dGoto next error<leader> + qSet loc list
Git signs are handled by gitsigns.
TODO: Assign mappings
Neovim can automatically display markdown documents and live changes. To do this, use the following command
:MarkdownPreview
<leader> + m + pEnablesMarkdownPreviewin the default browser.
VimTeX handles the compilation of LaTeX documents through neovim.
\lltoggles compilation of current document- Opens in default pdf viewer
\leclose the quickfix window\ltdisplay a table of contents\lkstops compilation\lcclears auxiliary files
For more commands available through VimteX, see Motion Commands.
These can be changed in ~/.config/nvim/lua/al/ui/theme.nvim by changing the
variable
local colorscheme = "gruvbox"Other included colorschemes are
- gruvbox (default)
- melange
- oceanic-next
- blue-moon
- everforest
- darkplus
Changing the polybar depends on your system. At startup in ~/.xprofile, a
script named polybar-start (located at ~/.local/bin/polybar/polybar-start)
is ran. In previous versions, this script would launch the polybar defined by
$POLYBAR on every visible display.
However to allow users to load different polybars on different screens, this
script is now symlinked by the user. It is recommended to define your
polybar-start scripts next to your polybars in ~/.config/polybar/. By
default, the polybar-start is linked to the single.sh script which has the
same functionality as before.
Back up the existing start script using
mv "$HOME/.local/bin/polybar/polybar-start" "$HOME/.local/bin/polybar/polybar-start.bak"
You can link a new script with the following command
ln -s "$HOME/.local/bin/polybar/polybar-start" "$XDG_CONFIG_HOME/polybar/<PATH>"
Where <PATH> is replaced by the relative path of your custom start script.
- wifi/ethernet (network module)
- volume
- cpu
- memory
- date
- bspwm
The simple x hotkey daemon. This is the program that handles all keyboard shortcuts on the system. Note that it also handles all keyboard shortcuts for bspwm, since it does not come with any shortcuts by default
You can change all of these shortcuts at ~/.config/sxhkd/sxhkdrc
Note: the keybinds for bspwm are handled through sxhkd.
Note: super is the windows key.
super+qclose the focused windowsuper+shift+qforce close the focused windowsuper+drun any script or program through dmenu- This is how you open programs that don't have direct keybinds
super+enteropens a terminalsuper+ropens the file manager (lf)super+wopens the default web browser (firefox)super+popens pulsemixer- This is how you change your audio settings
super+topens the torrent manager (tremc)- Only works when the VPN is on.
super+h/j/k/lto change the focused windowsuper+shift+h/j/k/lto switch the position of the focused windowsuper+1-9switch between workspacessuper+shift+1-9moves the focused window to that workspace
BSPWM offers different types of windows, here is how to switch between them.
super+alt+tTiled (default)super+alt+fFullscreensuper+alt+sFloatingsuper+shift+alt+tPseudo-Tiled
-
super++Volume + 5 -
super+shift++Volume + 15 -
super+-Volume - 5 -
super+shift+-Volume - 15 -
super+alt++Screen brightness + 10% -
super+alt+-Screen brightness - 10% -
super+PrintScreenTake a screenshot -
super+BackTickOpen emoji menu -
super+shift+escReload sxhkd -
super+backspaceShutdown Computer -
super+alt+backspaceReboot Computer
The simple x image viewer.
nnext image (if any in current dir)pprevious image (if any in current dir)
The prefix to use these commands is ctrl + x
wchange the selected image to be your wallpaperccopy the file to a given directorymmove the file to a given directoryrrotate the image 90 degrees clockwise and saveRrotate the image 90 degrees counterclockwise and savefflips image across the y axisycopies file name to clipboardYcopies full path to clipboardddelete the filegopen the file in Gimp- note that Gimp is not installed by default so you will need to install it to be able to use this
The zoomer shell of course. Comes with syntax highlighting and a nice prompt. Prompt powerlevel10k, Plugins
escorcaps lockGo into vi mode
It is highly recommended you only install these dotfiles on a clean arch-based system using llGaetanll/autorice since the script performs some automatic post installation cleanups not covered by this repo.
I have successfully installed these dotfiles on both Arch and Artix.
- With lf
- Navigate to the picture of your choice
- Press
b
- With sxiv
- Go to the picture of your choice
- Press
ctrl+xfollowed byw
This triggers the setbg script which changes the file at ~/.local/share/bg.
All system-dependent environment variables are placed in ~/.config/xinitrc. Change the
$POLYBAR variable to the path of the bar you want to use.
Different polybars are available in ~/.config/polybar.
Note that you may need to install any required fonts by the polybar. Such fonts are listed
in the bar's ini file and can be downloaded directly from the AUR.
Finally to apply the changes simply restart bspwm using the following command
killall bspwm
In this system, I remapped caps lock to escape. This is to help me work in vim more easily
but I can understand how this may turn off some people. To bring back caps lock simply
comment out or delete the following line in .xprofile.
# remap caps lock to escape. I absolutely need this to survive in vim
setxkbmap -option caps:escapeIf you're installing this on a laptop, there's a chance you might want to reverse the scrolling direction like me. This blog post describes how to do this very well.
In my case, swapping 4 and 5 reversed vertical scrolling, and switching 6 and 7 reversed horizontal scrolling.
If like me you got multiple slave pointer devices, simply try switching these numbers around on each of them, and undo your changes if you don't notice a difference in scrolling direction.
The system DPI can be controlled in 3 different places across the system.
- In
~/.config/Xresourcesfor web browser and other system apps - In
~/.config/polybar/modules.inifor polybar scaling - In
config.h, inst's configuration files for the terminal
Network Manager is installed so you have access to nmtui. It's not the best
terminal user interface, but for easily connecting to wifi quickly, it does the
trick.
If your keyboard backlight doesn't change when you perform the system shortcut, it might be because of file permissions.
For more information, check the script in .local/bin/system/setbacklight.
- Add docs and list of shortcuts
- Add more pictures (never enough)
- Remap Caps Lock to Esc at a udev level
- programs outside of xorg won't respond to it. vscode and minecraft have already stopped
- Look for pywal alternatives.
- pywal does not generate enough colors for nvim, which I rather would match system colors than a custom theme.
- see: https://github.com/warpwm/lule
- Battery Notification Module
- Git diff support?
- More autocomplete
- Latex/Markdown keybinds for italicizing, bolding, underlining...
- Not sure if this is possible?
- Latex/Markdown keybinds for italicizing, bolding, underlining...
- tmux integration
- Add
rsynckeybind - Add
encFSkeybind - Add symlink keybind
- Add image previews
- Make window spawn in tiling mode.
- Add Mullvad VPN module
- should prompt user for server through dmenu.
- server list should be updatable from mullvad.net
- Add package update module
- auto download packages through crontab every hour or so
- format:
<pacman packages> <aur-packages> - left click: refresh update count
- right click: 1-click update
- Add bluetooth module
- Recording Module
- Disk Space Module
- Add keybind to switch highlighted window to the current workspace of a monitor
- Add keybind to fullscreen window across all monitors
- Hide all other windows behind a currently fullscreen window
- Fullscreen transparent windows will show other windows behind it which doesn't look nice
- Close vim if QuickFix is the only window left
- lukesmithxyz/voidrice for the base dotfiles (my dots are quite different to these now though)
- lukesmithxyz/LARBS for my auto-install script at llGaetanll/autorice
- BrodieRobertson/dotfiles for more dotfile ideas
-
llGaetanll/autorice Installs these dotfiles as well as the required programs on any clean install of arch linux.
-
llGaetanll/suckess Contains my suckless programs which this repo also uses.