This repository contains my (2art) personal desktop configuration on Arch Linux, for the Bspwm window manager. This theme configuration uses and configures the following default applications:
- Window Manager: Bspwm
- Compositor: Picom
- Notification Daemon: Dunst
- App Launcher/Switcher: Rofi
- File Manager: Thunar
- Web Browser: LibreWolf
- Keyboard Shortcuts: Sxhkd, Xorg-Xmodmap
- Terminal Emulator: Alacritty
- Top Bar: Polybar
- Editors: Nano, Mousepad
- Media: Mpv, Viewnior, Feh
Configs and default apps that are used are updated as this project develops; For example, terminal editor (nvim) config is not included yet, although it may get it's own repository instead.
# First, find symlinks in home directory that are broken and delete any. Ask the
# user before deleting any to confirm.
broken_symlinks=( $(find ~ -type l -xtype l -and \( -not -path "*dxo.profile*/*" -and -not -ipath "*/Steam*" -and -not -path "*.steam*" -and -not -path "*/systemd* \) -print) )
if (( $#broken_symlinks > 0 )); then
printf '\e[34;1mFound following broken symlinks from home directory:\n\e[22;33m'
for d in "${broken_symlinks[@]}"; do echo $d; done
printf '\e[0m\n\nDelete these broken symlinks? [y/N]: '
read -k1 ans
printf '\n'
if [[ $ans =~ '^[yY]$' ]]; then
for d in "${broken_symlinks[@]}"; do rm -fv "$d"; done
fi
fi
# Find directories to be symlinked; Process each one by one, to see if the symlink is missing so far.
find /home/dxo/.2c/bspwm/home/.config/* -maxdepth 0 -type d -not -path '*/.git/*' -and -not -path "*/systemd*" | while read f; do
tgt="/home/dxo/.config/${f##*.config/}"
if [[ ! -h "$tgt" ]]; then
printf '\e[32;1mCreating symlink: %s\n\e[33;22m' "${tgt}"
ln -sfv "${f}" "${tgt}"
printf '\e[0m\n'
fi
done
-
Theme: xfce-simple-dark (included in pacman command lines below)
-
Icons: candy-icons-git (included in pacman command lines below)
-
Fonts: Mainly 'EnvyCodeR Nerd Font'
-
Cursors: xcursor-menda-git
Clone NerdFonts with
git clone --depth 1 https://github.com/ryanoasis/nerd-fonts
and follow the installation instructions inREADME.md
.Optionally, just install 'ttf-envycoder-nerd' via
pacman -Syu ttf-envycoder-nerd
to only use this one recommended font.
# Required packages
sudo pacman -Syu --needed bspwm picom dunst rofi thunar sxhkd xorg-xmodmap alacritty polybar nano mousepad mpv viewnior feh lxappearance-gtk3
yay -Syu --needed librewolf-bin xfce-simple-dark candy-icons-git xcursor-menda-git
# Optional Applications:
sudo pacman -Syu thunar-volman thunar-media-tags-plugin thunar-archive-plugin ttf-envycoder-nerd bat
yay -Syu profile-sync-daemon-librewolf
The model detailed here is somewhat followed in all repos. Below are general rules for branching and merges, for all repositories.
-
Merges should never be fast-forwarded, but merge-commits instead. This means using either
git merge --no-ff <branch>
, or specifyinggit config merge.ff false
in.gitconfig
. This way the command-line option doesn't need to be specified each time. -
Branches should provide a description (
git branch --edit-description
), which helps in organizing, and is also appended into merge messages. -
main
contains a working-state copy from a certain point in development. -
dev
is used as a base for all development, and the repository usually sits in this state. Only this branch merges tomain
when appropriate. -
Feature and bugfix branches branch from
dev
and should generally not be long-lived. They should always be deleted after being merged, withgit branch -d
. Same branch name may be used again later, but still delete right after merge. -
Version releases are done using tags when it feels appropriate (e.g. structure changes, finished scripts, modules or plugins). Read more about it here: Git Tagging Basics and Git Tag Reference.