fix: HiDPI-Scaling im Nix-Launcher — liest Xft.dpi, erzwingt Xwayland
All checks were successful
Build AppImage / build (push) Has been skipped

GTK3 kann unter Wayland kein natives fractional Scaling. Der Launcher
liest jetzt Xft.dpi aus xrdb, setzt GDK_DPI_SCALE entsprechend (fuer
scharfe Fonts) und erzwingt unter Wayland GDK_BACKEND=x11, damit der
Compositor die Fenstergroesse skaliert. Override per CLAUDE_DESKTOP_SCALE
oder abschaltbar mit CLAUDE_DESKTOP_SCALE=off.

Funktioniert transparent auf X11-VM und KDE-Wayland-Desktop.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Eddy 2026-04-20 17:10:56 +02:00
parent be38b6e700
commit 3913e1cce8

View file

@ -80,6 +80,29 @@ pkgs.stdenv.mkDerivation {
export CLAUDE_DESKTOP_NIX_WRAPPER=1
export CLAUDE_DESKTOP_BIN="$BIN"
# HiDPI/Fractional-Scaling — GTK3 unter Wayland kann kein natives fractional
# scaling. Workaround: Xwayland erzwingen (der Compositor skaliert das Fenster)
# und GDK_DPI_SCALE aus Xft.dpi ableiten, damit Fonts scharf bleiben.
# Override-bar ueber CLAUDE_DESKTOP_SCALE (z.B. "1.5") oder komplett
# deaktivierbar mit CLAUDE_DESKTOP_SCALE=off.
if [ "''${CLAUDE_DESKTOP_SCALE:-}" != "off" ]; then
SCALE="''${CLAUDE_DESKTOP_SCALE:-}"
if [ -z "$SCALE" ] && command -v xrdb >/dev/null 2>&1 && [ -n "''${DISPLAY:-}" ]; then
DPI="$(xrdb -query 2>/dev/null | awk -F':\\s*' '/^Xft.dpi:/ {print $2; exit}')"
if [ -n "$DPI" ] && [ "$DPI" -gt 96 ] 2>/dev/null; then
# bash-only float-Division: auf 2 Stellen runden
SCALE="$(awk -v d="$DPI" 'BEGIN { printf "%.2f", d/96 }')"
fi
fi
if [ -n "$SCALE" ] && [ "$SCALE" != "1.00" ] && [ "$SCALE" != "1.0" ]; then
export GDK_DPI_SCALE="$SCALE"
# Unter Wayland: Xwayland nutzen, damit der Compositor-Scale greift
if [ "''${XDG_SESSION_TYPE:-}" = "wayland" ]; then
export GDK_BACKEND="''${GDK_BACKEND:-x11}"
fi
fi
fi
exec "$BIN" "$@"
LAUNCHER
chmod +x $out/bin/claude-desktop