Skip to content

Commit

Permalink
i3: remove i3/i3-gaps distinction
Browse files Browse the repository at this point in the history
  • Loading branch information
GaetanLepage committed Jan 7, 2023
1 parent 9e565f0 commit 13027c8
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 32 deletions.
4 changes: 3 additions & 1 deletion docs/release-notes/rl-2305.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@ 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-services.window-managers.[i3|sway].config.[window|floating].titlebar>> options now
default to `true` which is consistent with the default values for those options used by `i3` and
`sway`.
9 changes: 9 additions & 0 deletions modules/misc/news.nix
Original file line number Diff line number Diff line change
Expand Up @@ -877,6 +877,15 @@ in
A new module is available: 'services.clipman'.
'';
}

{
time = "2023-01-07T10:47:03+00:00";
condition = hostPlatform.isLinux;
message = ''
'services.window-managers.[i3|sway].config.[window|floating].titlebar' now defaults to
'true'.
'';
}
];
};
}
17 changes: 2 additions & 15 deletions modules/services/window-managers/i3-sway/i3.nix
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down
43 changes: 27 additions & 16 deletions modules/services/window-managers/i3-sway/lib/options.nix
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
{ config, lib, moduleName, cfg, pkgs, capitalModuleName ? moduleName
, isGaps ? true }:
{ config, lib, moduleName, cfg, pkgs, capitalModuleName ? moduleName }:

with lib;

let
isI3 = moduleName == "i3";
isSway = !isI3;

inherit (config.home) stateVersion;

fontOptions = types.submodule {
options = {
names = mkOption {
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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";
};
Expand Down Expand Up @@ -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.";
};

Expand Down Expand Up @@ -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.";
};

Expand Down Expand Up @@ -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";
Expand Down Expand Up @@ -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.
'';
};

Expand Down

0 comments on commit 13027c8

Please sign in to comment.