Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

i3: remove i3/i3-gaps distinction #3563

Merged
merged 1 commit into from
Jan 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion docs/release-notes/rl-2305.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
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 = ''
'xsession.windowManager.i3.config.[window|floating].titlebar' and
'wayland.windowManager.sway.config.[window|floating].titlebar' now default 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