2026-03-12 15:29:35 +00:00
2026-03-10 11:03:07 +00:00
2026-03-10 11:03:07 +00:00
2026-03-06 15:39:14 +00:00
2026-03-05 18:57:30 +00:00
2025-02-19 03:51:46 +00:00
2025-02-19 03:51:00 +00:00
2026-03-05 18:57:30 +00:00
2026-03-10 11:07:31 +00:00
2025-02-20 21:10:50 +00:00
2026-03-05 18:57:30 +00:00
2026-03-05 18:57:30 +00:00
2024-10-10 18:53:48 +01:00
2026-03-05 18:57:30 +00:00

Linux Scripts and Configs

Dotfiles and scripts for Arch Linux (Manjaro), targeting Wayland (Hyprland / Sway) with an i3 fallback.

IMPORTANT TODO

Inside scripts/wofi/styles.css, I have the colour css set to /home/adamf/scripts/wofi/colors.css, which is clearly ugly and not nice but it was quick to do.

Wofi is called in hypr/hyprland.conf and sway/swayconfig with the command wofi --style /home/adamf/scripts/wofi/styles.css. This is also not ideal but I couldn't find a way to get it to work with a relative path. I'm unsure when hyprland working directory is.

Setup

git clone --recurse-submodules <repo-url> ~/scripts

If already cloned without submodules:

git submodule update --init --recursive

Install all packages:

yay -S $(grep -v '^\s*$' ~/scripts/packages.txt | tr '\n' ' ')

Linking Configs

Pick a window manager section below, then add the shared configs.

Hyprland

ln -sf ~/scripts/hypr ~/.config/hypr
ln -sf ~/scripts/waybar ~/.config/waybar
ln -sf ~/scripts/wofi ~/.config/wofi

Sway

ln -sf ~/scripts/sway ~/.config/sway
ln -sf ~/scripts/waybar ~/.config/waybar
ln -sf ~/scripts/wofi ~/.config/wofi

The default waybar config (waybar/config) is set up for Hyprland. For Sway, rename the sway config as the active one:

mv ~/scripts/waybar/config ~/scripts/waybar/config.hypr.json
mv ~/scripts/waybar/waybar_sway_config.json ~/scripts/waybar/config

i3

ln -sf ~/scripts/i3 ~/.config/i3
ln -sf ~/scripts/i3blocks ~/.config/i3blocks
ln -sf ~/scripts/i3status ~/.config/i3status

Cursor

ln -sf ~/scripts/hatsune-miku-windows-linux-cursors/miku-cursor-linux ~/.local/share/icons/"Miku Cursor"

Shell

Add to ~/.bashrc or ~/.zshrc:

source ~/scripts/bashrc  # or zshrc
export PATH="~/scripts/sh:$PATH"

Terminals

Alacritty - add to ~/.config/alacritty/alacritty.toml:

import = ["~/scripts/alacritty.toml"]

Kitty - kitty.conf is used directly by the WM configs.

tmux

Install the plugin manager first:

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

Add to ~/.tmux.conf:

source ~/scripts/tmux.conf

Vim

Add to ~/.vimrc:

source ~/scripts/vimrc

Keybindings

All window managers and tmux use vim-style hjkl navigation. $mod is the Super key.

Shared across WMs

Key Action
$mod + Return Terminal (kitty)
$mod + Shift + q Kill window
$mod + d Launcher (wofi / dmenu)
$mod + h/j/k/l Focus left/down/up/right
$mod + Shift + h/j/k/l Move window left/down/up/right
$mod + g / $mod + v Split horizontal / vertical
$mod + f Fullscreen
$mod + Shift + Space Toggle floating
$mod + 1-8 Switch workspace
$mod + Shift + 1-8 Move window to workspace
$mod + Ctrl + 1-8 Move window silently
$mod + - Scratchpad show
$mod + Shift + - Move to scratchpad
$mod + b Previous workspace
$mod + 9 Lock screen
$mod + 0 System menu (lock/suspend/reboot/shutdown)
$mod + r Resize mode (hjkl)
$mod + m Toggle bar
$mod + Shift + c Reload config
$mod + Ctrl + m PulseAudio control
$mod + F2 Browser (Waterfox)
$mod + F3 File manager (ranger)
$mod + F5 Music (mocp)
Print Screenshot

System menu ($mod + 0)

Key Action
l Lock
s Suspend
h Hibernate
r Reboot
Shift + s Power off
e Exit session
Return / Esc Cancel

tmux

Prefix is Ctrl + f.

Key Action
Prefix + g Split horizontal
Prefix + v Split vertical
Prefix + h/j/k/l Select pane
Prefix + J/K Swap pane down/up
Prefix + Ctrl + H/J/K/L Resize pane
Prefix + 1-0 Select window 1-10
Alt + 1-0 Create window 1-10
Prefix + !/@ etc. Move pane to window 1-10
Prefix + w Choose window
Prefix + q Kill pane
Prefix + [ / ] Copy mode / Paste
Prefix + r Refresh
Prefix + R Reload config
Prefix + Space Send prefix (nested tmux)
Prefix + ? List keys
Prefix + Ctrl + s Save session (resurrect)
Prefix + Ctrl + r Restore session (resurrect)

Colorscheme

All colors are defined in a single file: colors.conf. A generator script produces format-specific fragments that each config sources or imports.

To change the theme:

# 1. Edit the palette
vim ~/scripts/colors.conf

# 2. Regenerate fragments
~/scripts/sh/gen-colors

# 3. Reload your WM / bar
hyprctl reload          # Hyprland
swaymsg reload          # Sway
killall waybar && waybar &  # Waybar

Generated files (committed so configs work after a fresh clone):

File Format Used by
hypr/colors.conf $color_name = rgb(HEXVAL) hyprland.conf (source)
sway/colors.conf set $color_name #HEXVAL swayconfig (include)
i3/colors.conf set $color_name #HEXVAL i3config (include)
waybar/colors.css CSS custom properties waybar/style.css (@import)
wofi/colors.css CSS custom properties wofi/style.css (@import)

Scripts

All in sh/, added to $PATH via the shell config above.

Script Description
sharefile <file> Upload a file to 0x0.st
getfile <id> Download a file from 0x0.st
waybar-history Stream the last zsh history entry to waybar
gen-colors Regenerate color fragments from colors.conf
Description
No description provided
Readme 7.2 MiB
Languages
Shell 44.8%
Lua 36.2%
CSS 18.8%
Vim Script 0.2%