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

Conversation

GaetanLepage
Copy link
Member

@GaetanLepage GaetanLepage commented Jan 4, 2023

Description

i3 4.22 has been released. The main change is the merge of i3-gaps features.
This (now merged) PR brings this update to nixpkgs/NixOS.

Hence, we should update the services.window-managers.i3 module by removing all the "i3 vs i3-gaps" distinctions.

My only interrogation is the default value of the i3.config.floating.titlebar and i3.config.window.titlebar options.
Before, there were set to false by default when using i3-gaps. The i3 documentation suggests that setting them to true is still valid so this is what I have done... TO BE TESTED
I didn't updated the test cases in consequence. Hence, some are failing because of this change of default value.

Checklist

  • Change is backwards compatible.

  • Code formatted with ./format.

  • Code tested through nix-shell --pure tests -A run.all.

  • Test cases updated/added. See example.

  • Commit messages are formatted like

    {component}: {description}
    
    {long description}
    

    See CONTRIBUTING for more information and recent commit messages for examples.

  • If this PR adds a new module

    • Added myself as module maintainer. See example.

    • Added myself and the module files to .github/CODEOWNERS.

@teto
Copy link
Collaborator

teto commented Jan 5, 2023

I can test once you fix the test

@GaetanLepage GaetanLepage mentioned this pull request Jan 6, 2023
13 tasks
@GaetanLepage
Copy link
Member Author

I can test once you fix the test

Thank you @teto for your proposition. Actually, I would like to be sure about what would be the best default to set.
Is there a technical reason to not use default_[floating_]border normal when using gaps ?
Or is it more of a sensible default ?

My guess would be to either set what i3 is defaulting to (i.e. normal) or set the option default value to null and in this case not write anything in the config.

I am not an i3 user anymore. It would be great to have feedback from actual experienced users :)

@uvNikita
Copy link
Collaborator

uvNikita commented Jan 6, 2023

I think I found the reason for these defaults on i3-gaps: https://github.com/Airblader/i3/blob/gaps-next/README.md#gaps

Note: In order to use gaps you need to disable window titlebars. This can be done by adding the following line to your config.

# You can also use any non-zero value if you'd like to have a border
default_border pixel 0

@GaetanLepage
Copy link
Member Author

Thank you for finding the reference !
I don't know what is the current situation since the 4.22 release... I will change the tests to let @teto test the behavior.

@GaetanLepage
Copy link
Member Author

GaetanLepage commented Jan 6, 2023

Actually, the sway tests are failing, because initially, the default_[floating_]border options were set by default to:

  • true if the package was i3
  • false if the package was i3-gaps or sway

And I actually have no idea why it is false in the case of sway. Do you know why this is the case @alexarice ?

@alexarice
Copy link
Collaborator

Sway has always had the equivalent of the i3-gaps feature so the default option for sway was probably copied from the default option for i3-gaps. I can't remember a specific reason for it.

As a side note, I believe in the past when making changes like this we've hidden them behind a stateVersion change. I'm not sure if this is still the way of doing things

@GaetanLepage
Copy link
Member Author

All the tests are passing.
It could be nice if some i3/i3-gaps/sway users could test this update (@teto).
Anyway, I think it should be ok to merge.

@rycee

@alexarice
Copy link
Collaborator

Changing the border should at least have a changelog/news item so that people can find out why they suddenly have titlebars

@GaetanLepage
Copy link
Member Author

Changing the border should at least have a changelog/news item so that people can find out why they suddenly have titlebars

Yes, it seems logical to me. Where should I mention this change ?

@alexarice
Copy link
Collaborator

I haven't changed anything in home manager for a while so I'm not sure how things are done at the moment, probably best to wait for someone who knows what they are talking about to input.

@olmokramer
Copy link
Contributor

@GaetanLepage news items go in modules/misc/news.nix.

"xsession.windowManager.i3.package != nixpkgs.i3-gaps (titlebar should be disabled for i3-gaps)"
else
"false";
default = true;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this seems to change the default for sway as is shown in the test. Is that because the default in sway/i3 changed ? otherwise remove "default" probably ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was what I was wondering about previously.
After checking in the upstream projects code, the default value for those options is indeed normal (and not pixel) for both i3 and sway.
The author of the sway module confirmed that at the time he just wanted to copy what was done for i3-gaps.

Setting titlebar to true is consistent with the default value used in i3 and sway, i.e. default_[floating_]border normal.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I completely ignored your previous posts very sorry. One bad example of context switching :( if normal is the default then yes we should have that. #3563 (comment) comments on using stateVersion and this seems like a good idea as it's easy to do. Pair it with a docs/release-notes/rl-2305.adoc entry (which can replace/complete the news.nix change)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All right ! How should I handle the stateVersion check ?
If stateVersion >= 23.05, then put *titlebar settings default to true with sway, else false ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neither preserve the original behaviour for people who had gaps activated right?

Copy link
Member Author

@GaetanLepage GaetanLepage Jan 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are right. If we go for preserving the previous behavior, let's do it seriously.
Latest push fixes that:

default = if versionOlder stateVersion "23.05" then
  (isI3 && (cfg.config.gaps == null))
else
  true;

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The tests are failing. What is the stateVersion used in the tests ?

Copy link
Member Author

@GaetanLepage GaetanLepage Jan 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems that getting the stateVersion here:

  inherit (config.home) stateVersion;

Leads to the crash of nix-shell . -A install:

Creating initial Home Manager configuration...

Creating initial Home Manager generation...

error: The option `home.stateVersion' is used but not defined.
(use '--show-trace' to show detailed location information)
Uh oh, the installation failed! Please create an issue at

    https://github.com/nix-community/home-manager/issues

if the error seems to be the fault of Home Manager.
Error: Process completed with exit code 1.

Other modules seem to do it succesfully...

It works if I hardcode it:

stateVersion = "20.09";

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wow, this error was not easy to fix because the message was really misleading.
What caused the problem was adding a dependence on the stateVersion without providing a defaultText.
It was not obvious to me that the lack of defaultText lead to this error during nix-shell . -A install.

Anyway, I think everything is now correct.

@GaetanLepage
Copy link
Member Author

@GaetanLepage news items go in modules/misc/news.nix.

I added an entry in news.nix :)

@teto teto merged commit 684bdb3 into nix-community:master Jan 8, 2023
15cm pushed a commit to 15cm/home-manager that referenced this pull request Feb 9, 2023
soywod added a commit to soywod/home-manager that referenced this pull request Feb 9, 2023
add none backend and sender

fix typos

run ./format -C

add notify service

add watch service

run ./format -C

add sync options

starship: fix nushell integration

Overwrite starship/init.nu if already exists, since this is a cache
file for sourcing in `init.nu`.

starship: re-add ion integration

which was apparently mistakenly removed in commit 7ae7250

broot: update test to match upstream changes

Fixes nix-community#3527

broot: simplify test slightly

flake.lock: Update

Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/757b82211463dd5ba1475b6851d3731dfe14d377' (2022-12-16)
  → 'github:nixos/nixpkgs/fad51abd42ca17a60fc1d4cb9382e2d79ae31836' (2022-12-25)

direnv: enable nushell integration

This enables nushell integration by default for direnv, similar to
bash/zsh/fish. The slightly verbose way of setting this is to ensure
that peoples' existing nushell configuration isn't overwritten, only
appended to, as would be the case if we just used the integration
example from the nushell docs:

  https://www.nushell.sh/cookbook/direnv.html

Closes nix-community#3520

fish: set tmp $HOME to silence errors

parcellite: add extraOptions option

Even though `--no-icon` is currently the only viable option for both
parcellite and clipit, other options may be added to later releases.

parcellite: add basic test case

clipman: add module

gitui: update default theme to match upstream

Fixes nix-community#3506

neovim: fix extraLuaPackages type. (nix-community#3533)

Assigning to `programs.neovim.extraLuaPackages` a function taking a lua package set as input
and returning a list of packages, as described in the documentation,
threw an error because the rest of the code assumed that the value was always a plain list.
Using `lib.types.coercedTo`, we can accept such functions, as per the documentation,
as well as plain lists, which we then convert to a function ignoring its input argument.
We print a warning when a plain list is assigned, since the function
form is preferred, as it ensures that the right lua package set is used.

For the lua packages, we also get the lua package set from the
finalPackage, to make sure that we are always using the same package set
as the actual unwrapped neovim package being built.

For `programs.neovim.extraPythonPackages` I did the same.

I updated the test case so that we test both ways of setting these options.

kakoune: update hooks (nix-community#3418)

Some hooks were removed in Kakoune, and some were added. This PR updates the list so they are aligned with the latest version of Kakoune.
Removed

mawww/kakoune@e4fb70e

    NormalBegin
    NormalEnd
    InsertBegin
    InsertEnd

mawww/kakoune@78419bc

    InsertCompletionSelect

Added

mawww/kakoune@c8839e7

    ClientCreate
    ClientClose

mawww/kakoune@47ba36c

    RegisterModified

mawww/kakoune@f2cc7bc

    User

man: update database cache generation

Specifically, use the configured man-db package for generating the
database cache.

i3: Fix escaping in documentation

In nix `${` is escaped like this `''${` and not like this `\${`

home-environment: use `lazyAttrsOf` for `home.sessionVariables` (nix-community#3541)

* home-environment: use `lazyAttrsOf` for `home.sessionVariables`

`attrs` has unreasonable merge semantics and is deprecated. `attrsOf`
doesn't support variables depending on each other as is recommended in
the option's description.

* home-environment: restrict `sessionVariables` type

The consumer is `toString`, but we don't want to accept e.g. lists.

vim,neovim: add `defaultEditor` (nix-community#3496)

Also rename `vim_configurable` to `vim-full` per NixOS/nixpkgs#204438

feh: Add package option (nix-community#3552)

Co-authored-by: Naïm Favier <n@monade.li>
Co-authored-by: Sumner Evans <me@sumnerevans.com>

i3-sway: Use foot as default terminal on sway (nix-community#3490)

fluxbox: fix a typo, windowMenu -> windowmenu (nix-community#3544)

home.pointerCursor: use mkDefault to set XCURSOR_PATH (nix-community#3553)

fixes nix-community#3551

docs: bump nmd

- Simplifies DocBook build by generation version DocBook 5 files
  directly.

- Make DocBook generate consistent anchor IDs.

easyeffects: add package option (nix-community#3568)

docs: bump nmd

- Introduces support for Markdown documentation in modules.

ncmpcpp: Allow `str` type values for `mpdMusicDir` option (nix-community#3565)

The default value of `programs.ncmpcpp.mpdMusicDir` is taken from
`services.mpd.musicDirectory` if the mpd module is enabled, which has
type `either path str`. `programs.ncmpcpp.mpdMusicDir` did not accept
`str` values, though, so an error was raised when the default value was
used and `services.mpd.musicDirectory` was set to a value of type `str`.

This commit changes the type of `programs.ncmpcpp.mpdMusicDir` to also
accept `str` to reflect the type of `services.mpd.musicDirectory`.

Fixes nix-community#3560

docs: bump nmd

Fixes nix-community#3573

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

firefox: remove https-everywhere from example

See https://gitlab.com/rycee/nur-expressions/-/commit/b70c44e8575e65ff63c5f52eb726aa3fc9a86af7

files: avoid surprises when linking files (nix-community#3018)

docs: bump nmd

Fixes nix-community#3579

Translate using Weblate (Norwegian Bokmål)

Currently translated at 87.5% (28 of 32 strings)

Co-authored-by: Petter K <petterkarlsrud@me.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/nb_NO/
Translation: Home Manager/Home Manager CLI

Translate using Weblate (Chinese (Traditional))

Currently translated at 92.8% (13 of 14 strings)

Co-authored-by: Eric Ho <eric913@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/modules/zh_Hant/
Translation: Home Manager/Home Manager Modules

Add translation using Weblate (Lithuanian)

Co-authored-by: Kornelijus Tvarijanavičius <kornelitvari@protonmail.com>

Add translation using Weblate (Lithuanian)

Co-authored-by: Weblate <noreply@weblate.org>

Translate using Weblate (Lithuanian)

Currently translated at 84.3% (27 of 32 strings)

Co-authored-by: Kornelijus Tvarijanavičius <kornelijus@tvaria.com>
Translate-URL: https://hosted.weblate.org/projects/home-manager/cli/lt/
Translation: Home Manager/Home Manager CLI

i3: Do not set i3 package (nix-community#3585)

Resolves nix-community#3584

home-manager: Add home-manager search path to EXTRA_NIX_PATH (nix-community#3241)

docs: bump nmd

- Fix paragraphs in option field texts containing Markdown.

- Fix generation of documentation for options with Markdown in
  multiple fields.

- Support AsciiDoc in module option documentation.

i3-sway: config.focus.wrapping deprecates forceWrapping (nix-community#3467)

Stop using the legacy syntax described in the i3 documentation:
https://i3wm.org/docs/userguide.html#_focus_wrapping

opam: fix enableFishIntegration (nix-community#3597)

Fish shell doesn't require arguments to `eval` to be double quoted
like in a bash shell. At the moment doing so gives us the following
error:

~/.config/fish/config.fish (line 12): $(...) is not supported. In fish, please use '(/nix/store/8asq…)'.
eval "$(/nix/store/8asqgnhs89wzyjvs8p1n5hvxn7lkn9wa-opam-2.1.3/bin/opam env --shell=fish)"
      ^
from sourcing file ~/.config/fish/config.fish
	called during startup
source: Error while reading file “/home/user/.config/fish/config.fish”

This commit fixes the above error.

docs: mention how to override the home-manager flake input (nix-community#3556)

docs: fetch nmd from sourcehut

docs: bump nmd

firefox: refactor search.json.mozlz4 generation

The new setup should be easier to read.

gpg-agent: fix SSH support for fish

docs: bump nmd

Fixes nix-community#3605

flake.lock: Update (nix-community#3549)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

docs: bump nmd

Fixes nix-community#3612

treewide: fix typos (nix-community#3618)

files: allow disabling creation of a file

PR nix-community#3622

ci: bump DeterminateSystems/update-flake-lock from 15 to 16

Bumps [DeterminateSystems/update-flake-lock](https://github.com/DeterminateSystems/update-flake-lock) from 15 to 16.
- [Release notes](https://github.com/DeterminateSystems/update-flake-lock/releases)
- [Commits](DeterminateSystems/update-flake-lock@v15...v16)

---
updated-dependencies:
- dependency-name: DeterminateSystems/update-flake-lock
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

bash: format using nixfmt

PR nix-community#3609

papis: add module

wlogout: add module (nix-community#3629)

rbenv: add module

pass-secret-service: various improvements

Allow setting the application package and storePath used by the
config. Since the `programs.password-store` Home Manager module sets
config values via global environment variables, the default behavior
of the module should continue to behave as before for the user.

Additionally,

- Adds a few tests.

- Use "escapeShellArg" function call to the path parameter call to
  ensure paths with spaces work.

- Allow not setting storePath, which will cause `pass_secret_service`
  to default to using `~/.password-store`.

- If `pass-secret-service` is enabled, set its store path to default
  to the one defined in our password-store environment settings.

- Add myself (houstdav000) as maintainer.

home-manager: edit `homeManagerConfiguration` err (nix-community#3632)

* home-manager: edit `homeManagerConfiguration` err

This adds https://nix-community.github.io/home-manager/release-notes.html#sec-release-22.11-highlights
to the homeManagerConfiguration arguments error.

* home-manager: `homeManagerConfiguration` indent

Moved URL of the release notes for 22.11 to the same line so that
./format doesn't add extra whitespace

---------

Co-authored-by: zaporter <opensource@zackporter.com>

git: unset `pager` while using difftastic (nix-community#3633)

flake.lock: Update (nix-community#3619)

Flake lock file updates:

• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/5ed481943351e9fd354aeb557679624224de38d5' (2023-01-20)
  → 'github:nixos/nixpkgs/2caf4ef5005ecc68141ecb4aac271079f7371c44' (2023-01-30)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

services.autorandr: add module

mbsync: make passwordCommand escaping consistent (nix-community#3630)

* Fix mbsync passwordCommand escaping

* email: use lib.escapeShellArgs

Co-authored-by: Naïm Favier <n@monade.li>

* mbsync: update tests

---------

Co-authored-by: Naïm Favier <n@monade.li>

tmux: mouse support (nix-community#3642)

Co-authored-by: Sleroq <sleroq@sleroq.link>

modules: java: fix setting JAVA_HOME (nix-community#3638)

Some JVMs pass through `home` as a derivation rather than as a string, as `openjdk` does. Since the module option for session variables expects a string, this is a type error. I suspect that this incorrect, and have changed the assignment here to coerce the `cfg.package.home` attribute to a string to be safe.

After discussing with @NobbZ, we have decided it is best to mitigate this problem in HM rather than to make potentially breaking changes to Nixpkgs.

Please do mention if you think we ought to propose a change to Nixpkgs instead.

vim-vint: add module (nix-community#3604)

* vim-vint: add module

* vim-vint: add tests

* maintainers: add tomodachi94

* vim-vint: fix tests

---------

Co-authored-by: Naïm Favier <n@monade.li>

borgmatic: Do not inhibit idle in service (nix-community#3637)

This reflects a systemd service sample file change made in borgmatic
1.7.6, commit 2e9f70d49647d47fb4ca05f428c592b0e4319544:

    When backing up a machine with a monitor using logind to control
    idle timeout and things like DPMS, borgmatic can block the screen
    from turning on/off with systemd-inhibit. This is because by
    default systemd-inhibit will block
    "idle:sleep:shutdown". Borgmatic does not need to care about idle,
    only about suspend and shutdown. So, add an explicit `--what` flag
    for what borgmatic should inhibit.

    For more information see systemd-inhibit(1).

home-manager: pass --refresh to nix (nix-community#3624)

This flag is useful to force Nix to re-fetch cached flakes. Without it,
you cannot deploy from a non-local flake in quick succession, since the
caching causes the flake to not be re-fetched.

tmux: fix secureSocket environment variable (nix-community#3593)

firefox: support passing any json value to settings (nix-community#3580)

Firefox internally only supports bool, int, and string types for
preferences, but often stores objects, arrays and floats as strings.

This change makes it nicer to specify those type of preferences in
Nix, and it also makes it possible to merge objects & arrays across
multiple modules.

programs.neovim: add extraLuaConfig (nix-community#3639)

* programs.neovim: add extraLuaConfig

Add a configuration option to add custom lua configuration lines to
`lua.init`.

* apply review: formatting

* apply review: fix test

firefox: manage add-ons per-profile

Internally we already managed them per-profile but exposed a global
option to maintain backwards compatibility. The benefit to having
per-profile extensions is quite large though, so it is time to switch.

Users of the global extensions option will get an error message that
indicates how to edit their configuration to work again.

nix: fix package assertion

Sync it with the condition for generating nix.conf so that it triggers
if `extraOptions` is set but `package` isn't.

activation-init.sh: remove shebang, execute bit

This is not a standalone script, it's only meant to be included from the
activation script.

modules: add platform assertions

systemd: remove platform assertion

Allow modules to define systemd services on macOS. It won't actually
have any effect, but it would allow modules to define both systemd
services and launchd agents without boilerplate conditionals.

As a consequence of this change, each module would have to check for
compatibility with the OS target instead.

scmpuff: clean up tests

Stub the scmpuff package. Also remove unnecessary `config` wrapping.

docs: bump nmd

Fixes cross-compilation.

xsuspender: fix typo that made debug option a noop (nix-community#3653)

vscode: add extensions.json file in extensions dir (nix-community#3588)

* vscode: add extensions.json file in extensions dir

This change generates an 'extensions.json` file the same way that
nixpkgs' vscode-with-extensions does, and makes sure it is placed in the
directory with the extensions.

* vscode: remove leftover trace

Co-authored-by: Naïm Favier <n@monade.li>

* vscode: fix adding extensions.json with mutable extension dir

Co-authored-by: Naïm Favier <n@monade.li>

* vscode: let vscode regenerate the mutable extensions.json

* Remove nixpkgs duplication; only apply on vscodes new enough to need it

* Use lib.versionAtLeast

Co-authored-by: Naïm Favier <n@monade.li>

* Format vscode.nix

---------

Co-authored-by: Naïm Favier <n@monade.li>

vscode: fix erroneous application of lib.optional (nix-community#3655)

Revert "mbsync: make passwordCommand escaping consistent" (nix-community#3657)

This reverts commit e2c1756.

himalaya: add missing service options

Also improved doc in general.
spacekookie pushed a commit to spacekookie/home-manager that referenced this pull request Feb 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants