foxygit / dotfiles Log in
commits tags

/rebuild-sxwm.sh · 1.85 KB

raw
#!/bin/bash
# Minimal, standalone rebuild of sxwm with all local patches applied.
#
# Does exactly one thing: clone upstream sxwm, apply every *.patch in this
# directory that install.sh's step_sxwm() applies (same order), build, and
# `sudo make install`. No other install.sh steps (deps, sxbar, dmenu, st,
# configs, ...) run. Useful when you only changed an sxwm patch and want to
# rebuild+install it directly, without the interactive prompts.
#
# Usage: ./rebuild-sxwm.sh
set -eu

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SXWM_REPO="https://github.com/uint23/sxwm.git"
BUILD_DIR="$(mktemp -d /tmp/sxwm-rebuild.XXXXXX)"

PATCHES=(
    cursor-dpi-fix.patch
    net-active-window.patch
    multi-monitor-struts.patch
    monitor-hotplug-remap.patch
    fullscreen-monitor-fix.patch
    strut-fresh-screen-size.patch
    focus-follows-mouse.patch
)

echo "==> Klonar sxwm i $BUILD_DIR..."
git clone --depth=1 "$SXWM_REPO" "$BUILD_DIR"
cd "$BUILD_DIR"

echo "==> Applicerar patchar..."
for p in "${PATCHES[@]}"; do
    echo "    $p"
    patch -p1 < "$SCRIPT_DIR/$p"
done

echo "==> Bygger..."
make

echo "==> Installerar (kräver sudo)..."
sudo make install

BIN_HASH=$(md5sum "$BUILD_DIR/sxwm" | cut -d' ' -f1)
INSTALLED_HASH=$(md5sum /usr/local/bin/sxwm | cut -d' ' -f1)
if [ "$BIN_HASH" = "$INSTALLED_HASH" ]; then
    echo "==> Installerat och verifierat (samma md5: $BIN_HASH)."
else
    echo "==> VARNING: /usr/local/bin/sxwm matchar inte det nybyggda binaryt." >&2
    echo "    byggt:      $BIN_HASH" >&2
    echo "    installerat: $INSTALLED_HASH" >&2
    exit 1
fi

echo ""
echo "Filen på disk är uppdaterad, men sxwm läser inte om sig själv."
echo "Starta om sxwm för att den nya binären ska börja gälla, t.ex.:"
echo "  killall sxwm   (X-sessionen startar om sxwm om .xinitrc/en supervisor gör det)"
echo "eller logga ut och in igen."

rm -rf "$BUILD_DIR"