diff --git a/flake.nix b/flake.nix index 7d13be8..40f66d2 100644 --- a/flake.nix +++ b/flake.nix @@ -8,6 +8,7 @@ baseline = ./modules/baseline.nix; cli = ./modules/cli.nix; gnome = ./modules/gnome.nix; + gnome-monitor-settings-tweak = ./modules/gnome-monitor-settings-tweak; mouse-dpi = ./modules/mouse-dpi.nix; phpipam = ./modules/phpipam.nix; pipewire = ./modules/pipewire.nix; diff --git a/modules/gnome-monitor-settings-tweak/control-center.patch b/modules/gnome-monitor-settings-tweak/control-center.patch new file mode 100644 index 0000000..4dbeb4e --- /dev/null +++ b/modules/gnome-monitor-settings-tweak/control-center.patch @@ -0,0 +1,13 @@ +diff --git a/panels/display/cc-display-panel.c b/panels/display/cc-display-panel.c +index f9d4ae044..ef2a8a693 100644 +--- a/panels/display/cc-display-panel.c ++++ b/panels/display/cc-display-panel.c +@@ -853,7 +853,7 @@ rebuild_ui (CcDisplayPanel *panel) + n_outputs = g_list_length (outputs); + type = config_get_current_type (panel); + +- if (n_outputs == 2 && n_usable_outputs == 2) ++ if (n_outputs == 2 && n_usable_outputs == 99) + { + /* We only show the top chooser with two monitors that are + * both usable (i.e. two monitors incl. internal and lid not closed). diff --git a/modules/gnome-monitor-settings-tweak/default.nix b/modules/gnome-monitor-settings-tweak/default.nix new file mode 100644 index 0000000..0a352b9 --- /dev/null +++ b/modules/gnome-monitor-settings-tweak/default.nix @@ -0,0 +1,25 @@ +{ config, pkgs, lib, ... }: +let + cfg = config.sconfig.gnome-monitor-settings-tweak; +in +{ + options.sconfig.gnome-monitor-settings-tweak = lib.mkOption { + default = true; + type = lib.types.bool; + description = "Replace displays=2 settings screen with the displays>2 one"; + }; + + config = lib.mkIf cfg { + nixpkgs.overlays = [ + + (self: super: { + gnome = super.gnome // { + gnome-control-center = super.gnome.gnome-control-center.overrideAttrs (attr: { + patches = attr.patches ++ [ ./control-center.patch ]; + }); + }; + }) + + ]; + }; +}