Quickshell's FileView + JsonAdapter combo is great for smaller configuration files, or when said objects don't change much. But if you do need to change an object (e.g. like I did a while back, barConfig -> bar) then it's a bit of a pain since you can't retain the user's set values in the transition without some schizo convoluted JSON.* hack.
All configuration options have been properly migrated to the new plugin, and should not break current configuration files.
I have also fixed the greeter.
Related issue
No response
Type
Refactor / style
Tested
Build succeeds
Existing tests pass
Manually verified
Breaking changes?
User
As far as the user is concerned; only the greeter's configuration options do not work currently. For example, if transparency was set to enabled previously then currently that will not be respected. I need to figure out a clean solution to this since it could get ugly. Previously we were able to separate the configuration files for the greeter and the user, $HOME/.config/zshell/config.json and /etc/zshell-greeter/config.json, but because the plugin that reads the config is now the same code for both the greeter and the shell, there isn't a simple way for me to tell the plugin to read from a different path.
This is why it breaks, too. The plugin tries to read from $HOME, which expands to /home/greetd before login.
Developer
DynamicColors has been renamed to Colors and has moved into a new directory called Services. Configuration options still have the same path spec, for example: Config.bar.tray.showOnHover. Static values from the previous Appearance singleton has changed to become Tokens instead. For example: Appearance.rounding.normal -> Tokens.rounding.normal.
Font assignment has also changed, it used to be Appearance.font.family.* but has changed to be part of the Config singleton: Config.appearance.font.family.*.
Checklist
CI passes (format, lint, typecheck)
Clean commits
No new warnings
Docs updated if needed
### What & why
Quickshell's `FileView` + `JsonAdapter` combo is great for smaller configuration files, or when said objects don't change much. But if you do need to change an object (e.g. like I did a while back, `barConfig` -> `bar`) then it's a bit of a pain since you can't retain the user's set values in the transition without some ~~schizo~~ convoluted `JSON.*` hack.
All configuration options have been properly migrated to the new plugin, and should not break current configuration files.
I have also fixed the greeter.
### Related issue
_No response_
### Type
Refactor / style
### Tested
- [x] Build succeeds
- [x] Existing tests pass
- [x] Manually verified
### Breaking changes?
### User
As far as the user is concerned; only the greeter's configuration options do not work currently. For example, if transparency was set to enabled previously then currently that will not be respected. I need to figure out a clean solution to this since it could get ugly. Previously we were able to separate the configuration files for the greeter and the user, `$HOME/.config/zshell/config.json` and `/etc/zshell-greeter/config.json`, but because the plugin that reads the config is now the same code for both the greeter and the shell, there isn't a simple way for me to tell the plugin to read from a different path.
This is why it breaks, too. The plugin tries to read from `$HOME`, which expands to `/home/greetd` before login.
### Developer
`DynamicColors` has been renamed to `Colors` and has moved into a new directory called `Services`. Configuration options still have the same path spec, for example: `Config.bar.tray.showOnHover`. Static values from the previous `Appearance` singleton has changed to become `Tokens` instead. For example: `Appearance.rounding.normal` -> `Tokens.rounding.normal`.
Font assignment has also changed, it used to be `Appearance.font.family.*` but has changed to be part of the `Config` singleton: `Config.appearance.font.family.*`.
### Checklist
- [x] CI passes (format, lint, typecheck)
- [x] Clean commits
- [x] No new warnings
- [x] Docs updated if needed
Everything seems to work just fine after building.
I like what you changed within the developer stuff.
Also appreciate you documenting this within the PR.
Whoever I am curious/wonder why you renamed Appearance to Tokens.
Not a bad thing at all just like to hear your reason.
Did you put font underneath config to directly take whatever the user provides?
Everything seems to work just fine after building.
I like what you changed within the developer stuff.
Also appreciate you documenting this within the PR.
Whoever I am curious/wonder why you renamed `Appearance` to `Tokens`.
Not a bad thing at all just like to hear your reason.
Did you put `font` underneath `config` to directly take whatever the user provides?
Since a huge changelog is present, it is going to be a incredibly long time before any of this got a proper runtrough. Many changes seem to be just variable name changes as well.
It would be hard to individually test changes (unless we had written tests, which I am unfamiliar with on the qml side). My suggestion would be to merge it to main as is. We could then create issues as we go. It is regrettable, but this will likely save us more time than trying/testing each changed component. Have been running this branch for a couple days; has been fine apart from a few reverts that were easy fixes new users would not be running into.
Since a huge changelog is present, it is going to be a incredibly long time before any of this got a proper runtrough. Many changes seem to be just variable name changes as well.
It would be hard to individually test changes (unless we had written tests, which I am unfamiliar with on the qml side). My suggestion would be to merge it to main as is. We could then create issues as we go. It is regrettable, but this will likely save us more time than trying/testing each changed component. Have been running this branch for a couple days; has been fine apart from a few reverts that were easy fixes new users would not be running into.
zach
merged commit 6c80862ce8 into main2026-08-14 18:54:33 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What & why
Quickshell's
FileView+JsonAdaptercombo is great for smaller configuration files, or when said objects don't change much. But if you do need to change an object (e.g. like I did a while back,barConfig->bar) then it's a bit of a pain since you can't retain the user's set values in the transition without someschizoconvolutedJSON.*hack.All configuration options have been properly migrated to the new plugin, and should not break current configuration files.
I have also fixed the greeter.
Related issue
No response
Type
Refactor / style
Tested
Breaking changes?
User
As far as the user is concerned; only the greeter's configuration options do not work currently. For example, if transparency was set to enabled previously then currently that will not be respected. I need to figure out a clean solution to this since it could get ugly. Previously we were able to separate the configuration files for the greeter and the user,
$HOME/.config/zshell/config.jsonand/etc/zshell-greeter/config.json, but because the plugin that reads the config is now the same code for both the greeter and the shell, there isn't a simple way for me to tell the plugin to read from a different path.This is why it breaks, too. The plugin tries to read from
$HOME, which expands to/home/greetdbefore login.Developer
DynamicColorshas been renamed toColorsand has moved into a new directory calledServices. Configuration options still have the same path spec, for example:Config.bar.tray.showOnHover. Static values from the previousAppearancesingleton has changed to becomeTokensinstead. For example:Appearance.rounding.normal->Tokens.rounding.normal.Font assignment has also changed, it used to be
Appearance.font.family.*but has changed to be part of theConfigsingleton:Config.appearance.font.family.*.Checklist
Everything seems to work just fine after building.
I like what you changed within the developer stuff.
Also appreciate you documenting this within the PR.
Whoever I am curious/wonder why you renamed
AppearancetoTokens.Not a bad thing at all just like to hear your reason.
Did you put
fontunderneathconfigto directly take whatever the user provides?Since a huge changelog is present, it is going to be a incredibly long time before any of this got a proper runtrough. Many changes seem to be just variable name changes as well.
It would be hard to individually test changes (unless we had written tests, which I am unfamiliar with on the qml side). My suggestion would be to merge it to main as is. We could then create issues as we go. It is regrettable, but this will likely save us more time than trying/testing each changed component. Have been running this branch for a couple days; has been fine apart from a few reverts that were easy fixes new users would not be running into.