i3: remove i3/i3-gaps distinction (#3563)

This commit is contained in:
Gaétan Lepage 2023-01-08 22:05:36 +01:00 committed by GitHub
parent 9e565f0d9d
commit 684bdb386c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 32 deletions

View file

@ -16,4 +16,8 @@ This release has the following notable changes:
The state version in this release includes the changes below.
These changes are only active if the `home.stateVersion` option is set to "23.05" or later.
* No changes.
* The <<opt-xsession.windowManager.i3.config.window.titlebar>>,
<<opt-xsession.windowManager.i3.config.floating.titlebar>>,
<<opt-wayland.windowManager.sway.config.window.titlebar>>,
<<opt-wayland.windowManager.sway.config.floating.titlebar>>, options now default to `true` which
is consistent with the default values for those options used by `i3` and `sway`.

View file

@ -877,6 +877,15 @@ in
A new module is available: 'services.clipman'.
'';
}
{
time = "2023-01-07T10:47:03+00:00";
condition = hostPlatform.isLinux;
message = ''
'xsession.windowManager.i3.config.[window|floating].titlebar' and
'wayland.windowManager.sway.config.[window|floating].titlebar' now default to 'true'.
'';
}
];
};
}

View file

@ -9,7 +9,6 @@ let
commonOptions = import ./lib/options.nix {
inherit config lib cfg pkgs;
moduleName = "i3";
isGaps = cfg.package == pkgs.i3-gaps;
};
configModule = types.submodule {
@ -209,16 +208,7 @@ in {
xsession.windowManager.i3 = {
enable = mkEnableOption "i3 window manager";
package = mkOption {
type = types.package;
default = pkgs.i3;
defaultText = literalExpression "pkgs.i3";
example = literalExpression "pkgs.i3-gaps";
description = ''
i3 package to use.
If 'i3.config.gaps' settings are specified, 'pkgs.i3-gaps' will be set as a default package.
'';
};
package = mkPackageOption pkgs "i3" { };
config = mkOption {
type = types.nullOr configModule;
@ -260,10 +250,7 @@ in {
};
}
(mkIf (cfg.config != null) {
xsession.windowManager.i3.package =
mkDefault (if (cfg.config.gaps != null) then pkgs.i3-gaps else pkgs.i3);
})
(mkIf (cfg.config != null) { xsession.windowManager.i3.package = pkgs.i3; })
(mkIf (cfg.config != null) {
warnings = (optional (isList cfg.config.fonts)

View file

@ -1,5 +1,4 @@
{ config, lib, moduleName, cfg, pkgs, capitalModuleName ? moduleName
, isGaps ? true }:
{ config, lib, moduleName, cfg, pkgs, capitalModuleName ? moduleName }:
with lib;
@ -7,6 +6,8 @@ let
isI3 = moduleName == "i3";
isSway = !isI3;
inherit (config.home) stateVersion;
fontOptions = types.submodule {
options = {
names = mkOption {
@ -77,7 +78,7 @@ let
barModule = types.submodule {
options = let
versionAtLeast2009 = versionAtLeast config.home.stateVersion "20.09";
versionAtLeast2009 = versionAtLeast stateVersion "20.09";
mkNullableOption = { type, default, ... }@args:
mkOption (args // {
type = types.nullOr type;
@ -158,7 +159,7 @@ let
defaultText = "i3bar";
description = "Command that will be used to start a bar.";
example = if isI3 then
"\${pkgs.i3-gaps}/bin/i3bar -t"
"\${pkgs.i3}/bin/i3bar -t"
else
"\${pkgs.waybar}/bin/waybar";
};
@ -389,11 +390,17 @@ in {
options = {
titlebar = mkOption {
type = types.bool;
default = !isGaps;
defaultText = if isI3 then
"xsession.windowManager.i3.package != nixpkgs.i3-gaps (titlebar should be disabled for i3-gaps)"
default = if versionOlder stateVersion "23.05" then
(isI3 && (cfg.config.gaps == null))
else
"false";
true;
defaultText = if isI3 then ''
true for state version 23.05
config.gaps == null for state version < 23.05
'' else ''
true for state version 23.05
false for state version < 23.05
'';
description = "Whether to show window titlebars.";
};
@ -432,11 +439,17 @@ in {
options = {
titlebar = mkOption {
type = types.bool;
default = !isGaps;
defaultText = if isI3 then
"xsession.windowManager.i3.package != nixpkgs.i3-gaps (titlebar should be disabled for i3-gaps)"
default = if versionOlder stateVersion "23.05" then
(isI3 && (cfg.config.gaps == null))
else
"false";
true;
defaultText = if isI3 then ''
true for state version 23.05
config.gaps == null for state version < 23.05
'' else ''
true for state version 23.05
false for state version < 23.05
'';
description = "Whether to show floating window titlebars.";
};
@ -670,7 +683,7 @@ in {
bars = mkOption {
type = types.listOf barModule;
default = if versionAtLeast config.home.stateVersion "20.09" then [{
default = if versionAtLeast stateVersion "20.09" then [{
mode = "dock";
hiddenState = "hide";
position = "bottom";
@ -826,10 +839,8 @@ in {
};
});
default = null;
description = if isSway then ''
description = ''
Gaps related settings.
'' else ''
i3Gaps related settings. The i3-gaps package must be used for these features to work.
'';
};