diff --git a/nix/default.nix b/nix/default.nix index a6b1b4c..faec47b 100644 --- a/nix/default.nix +++ b/nix/default.nix @@ -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