diff --git a/pkgs/tools/games/scarab/default.nix b/pkgs/tools/games/scarab/default.nix index 617f8f0e87b27..844d38ed00634 100644 --- a/pkgs/tools/games/scarab/default.nix +++ b/pkgs/tools/games/scarab/default.nix @@ -1,13 +1,10 @@ { lib, + bc, buildDotnetModule, fetchFromGitHub, - glibc, - zlib, - gtk3, copyDesktopItems, icoutils, - wrapGAppsHook3, makeDesktopItem, }: @@ -34,19 +31,12 @@ buildDotnetModule rec { ''; runtimeDeps = [ - glibc - zlib - gtk3 - ]; - - buildInputs = [ - gtk3 + bc ]; nativeBuildInputs = [ copyDesktopItems icoutils - wrapGAppsHook3 ]; doCheck = true; @@ -60,6 +50,8 @@ buildDotnetModule rec { size=''${sizes[$i]}x''${sizes[$i]} install -D omegamaggotprime_''$((i+1))_''${size}x32.png $out/share/icons/hicolor/$size/apps/scarab.png done + + wrapProgram "$out/bin/Scarab" --run '. ${./scaling-settings.bash}' ''; desktopItems = [ diff --git a/pkgs/tools/games/scarab/scaling-settings.bash b/pkgs/tools/games/scarab/scaling-settings.bash new file mode 100644 index 0000000000000..f4bfdfd6389fd --- /dev/null +++ b/pkgs/tools/games/scarab/scaling-settings.bash @@ -0,0 +1,24 @@ +# Keep existing value if it is already non-empty +if [[ -z "${AVALONIA_GLOBAL_SCALE_FACTOR-}" ]] && command -v gsettings >/dev/null; then + echo 'Attempting to get GNOME desktop interface scaling factor' >&2 + AVALONIA_GLOBAL_SCALE_FACTOR="$(gsettings get org.gnome.desktop.interface scaling-factor)" + AVALONIA_GLOBAL_SCALE_FACTOR="${AVALONIA_GLOBAL_SCALE_FACTOR##* }" +fi + +if [[ "${AVALONIA_GLOBAL_SCALE_FACTOR-}" == "0" ]]; then + echo 'Unset invalid scaling value' >&2 + unset AVALONIA_GLOBAL_SCALE_FACTOR +fi + +if [[ -z "${AVALONIA_GLOBAL_SCALE_FACTOR-}" ]] && command -v xrdb >/dev/null; then + echo 'Attempting to get scaling factor from X FreeType DPI setting' >&2 + dpi="$(xrdb -get Xft.dpi)" + if [[ -n "${dpi}" ]]; then + AVALONIA_GLOBAL_SCALE_FACTOR=$(echo "scale=2; ${dpi}/96" | bc) + fi +fi + +if [[ -n "${AVALONIA_GLOBAL_SCALE_FACTOR-}" ]]; then + echo "Applying scale factor: ${AVALONIA_GLOBAL_SCALE_FACTOR}" >&2 + export AVALONIA_GLOBAL_SCALE_FACTOR +fi