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

treewide: wallpaper refactor #102

Closed
wants to merge 119 commits into from
Closed
Show file tree
Hide file tree
Changes from 114 commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
1e71220
fix waybar
SomeGuyNamedMay Mar 29, 2023
6bc7413
fix
SomeGuyNamedMay Mar 29, 2023
a9a0e9d
add bar to workspace button
SomeGuyNamedMay Mar 29, 2023
6860f44
fix for hyprland
SomeGuyNamedMay Mar 29, 2023
04658cd
trys to make bar in workspaces work correctly
SomeGuyNamedMay Mar 30, 2023
72cdcf6
try another fix
SomeGuyNamedMay Mar 30, 2023
48b610b
remove padding
SomeGuyNamedMay Mar 30, 2023
c91e6f1
change base05 to base00
SomeGuyNamedMay Mar 30, 2023
d8ea134
fix documentation
SomeGuyNamedMay Mar 30, 2023
04f3869
make workspaces without backgrounds look better
SomeGuyNamedMay Mar 30, 2023
bde16ee
change workspace color to contrast with base00
SomeGuyNamedMay Mar 30, 2023
9db1531
change the selected workspace to a lighter color as well
SomeGuyNamedMay Mar 30, 2023
58be697
add padding
SomeGuyNamedMay Mar 31, 2023
10a43c6
quick fix for fonts
SomeGuyNamedMay Mar 31, 2023
bb5731f
Merge branch 'danth:master' into master
SomeGuyNamedMay Mar 31, 2023
35e1ae7
Merge branch 'danth:master' into master
SomeGuyNamedMay Apr 23, 2023
bff10aa
Merge branch 'danth:master' into master
SomeGuyNamedMay Apr 30, 2023
a031f9c
Merge branch 'danth:master' into master
SomeGuyNamedMay May 24, 2023
32fb3b0
Merge branch 'danth:master' into master
SomeGuyNamedMay Jun 13, 2023
542b3d4
Merge branch 'danth:master' into master
SomeGuyNamedMay Jul 7, 2023
03c4569
Merge branch 'danth:master' into master
SomeGuyNamedMay Jul 8, 2023
2c1a3da
Merge branch 'danth:master' into master
SomeGuyNamedMay Jul 10, 2023
8f08e7b
Merge branch 'danth:master' into master
SomeGuyNamedMay Jul 15, 2023
b17f4d4
Merge branch 'danth:master' into master
SomeGuyNamedMay Aug 12, 2023
d586920
initial commit adding base types, and support generating a colorschem…
SomeGuyNamedMay May 30, 2023
af579eb
add module support for wallpapers, as well as make the peramiters of …
SomeGuyNamedMay May 31, 2023
3c1b528
move some stuff into the constructors
SomeGuyNamedMay Jun 1, 2023
83c99ab
move some logic to generators
SomeGuyNamedMay Jun 2, 2023
052e3b8
the image constructor works now
SomeGuyNamedMay Jun 2, 2023
a262a06
add optional colorscheme rather then generated image colorscheme
SomeGuyNamedMay Jun 2, 2023
d8d0986
all constructors now functional, now working on implementing the chan…
SomeGuyNamedMay Jun 3, 2023
0e4a944
sway is now working for every type of wallpaper
SomeGuyNamedMay Jun 3, 2023
88f6218
all wallpaper types now work with sway and depreciation message was a…
SomeGuyNamedMay Jun 4, 2023
621621b
Update stylix/palette.nix
SomeGuyNamedMay Jun 5, 2023
ab67b84
begin lib migration and add depreciation warning
SomeGuyNamedMay Jun 5, 2023
706e1a4
quick fix
SomeGuyNamedMay Jun 5, 2023
d153d57
bunch of fixes
SomeGuyNamedMay Jun 5, 2023
8752d05
move a bunch of logic into lib
SomeGuyNamedMay Jun 6, 2023
af14305
bunch of fixes
SomeGuyNamedMay Jun 7, 2023
fc52669
fix doc error
SomeGuyNamedMay Jun 7, 2023
fc13277
add xorg support
SomeGuyNamedMay Jun 8, 2023
2d26ebb
add legacy support
SomeGuyNamedMay Jun 10, 2023
1dc469d
fix
SomeGuyNamedMay Jun 10, 2023
72d6e95
all legacy options now working correctly
SomeGuyNamedMay Jun 11, 2023
f075b3b
properly do type checking
SomeGuyNamedMay Jun 11, 2023
470c536
better way of type checking
SomeGuyNamedMay Jun 11, 2023
725f74a
change to Fill constructor and added docs
SomeGuyNamedMay Jun 12, 2023
a316a53
update docs
SomeGuyNamedMay Jun 12, 2023
8d1702c
fix typos
SomeGuyNamedMay Jun 12, 2023
72ab9de
fix another typo
SomeGuyNamedMay Jun 12, 2023
c01c1f0
Support slideshow wallpapers on GNOME :sparkles:
danth Jun 13, 2023
4c0d3b4
update docs on gnome
SomeGuyNamedMay Jun 13, 2023
7da783e
Add table of supported wallpapers :memo:
danth Jun 14, 2023
3937413
finish xorg support
SomeGuyNamedMay Jun 14, 2023
e9e2df2
quick fix
SomeGuyNamedMay Jun 15, 2023
e199bcc
fix slideshow support on xorg
SomeGuyNamedMay Jun 15, 2023
945a586
just realised how qutebrowsers dark mode works, my bad lol
SomeGuyNamedMay Jun 23, 2023
169bb74
Update lib/constructors.nix
SomeGuyNamedMay Jun 27, 2023
2966ab4
Update lib/types.nix
SomeGuyNamedMay Jun 27, 2023
c4070bc
Update modules/sway/hm.nix
SomeGuyNamedMay Jun 27, 2023
390955f
variety of changes for slideshow
SomeGuyNamedMay Jun 28, 2023
aa24865
add docs for slideshow
SomeGuyNamedMay Jun 28, 2023
91b6990
formating
SomeGuyNamedMay Jun 28, 2023
babb14a
Improve option description and error messages :speech_balloon:
danth Jul 2, 2023
73cd697
update configuration.md
SomeGuyNamedMay Jul 3, 2023
f507cde
update some more of the docs
SomeGuyNamedMay Jul 3, 2023
7b710f1
further restrict types
SomeGuyNamedMay Jul 3, 2023
a4f58d7
gnome fix, further type restriction not possible as it disallows usin…
SomeGuyNamedMay Jul 7, 2023
c2708f0
another fix
SomeGuyNamedMay Jul 7, 2023
d1ceadc
sway default to swww, and adapt kde for the refactor
SomeGuyNamedMay Jul 15, 2023
71a7554
Add KDE to list of supported wallpapers :memo:
danth Jul 23, 2023
5213fd5
Simplify code for constructors :recycle:
danth Jul 26, 2023
776ea99
fix gnome
SomeGuyNamedMay Aug 12, 2023
7c46aac
Move extra CSS to the end of the file (#147)
y-syo Aug 13, 2023
b3c709e
epkgs.trivialBuild: set dummy version (#150)
bbigras Sep 10, 2023
55b210b
Add support for Hyprland (#145)
TotalChaos05 Sep 10, 2023
954a625
gnome fix
SomeGuyNamedMay Sep 10, 2023
05c8c15
add wallpaper support to hyprland and simplify sway wallpapers
SomeGuyNamedMay Sep 11, 2023
0e50578
finish hyprland support
SomeGuyNamedMay Sep 11, 2023
4756a1a
Merge branch 'master' into wallpaper-refactor
danth Sep 23, 2023
15ea085
Add Hyprland support to table :memo:
danth Sep 23, 2023
70bdef1
Rearrange options and update docs :children_crossing: :memo:
danth Sep 23, 2023
6ab1ef7
Adjust docs :memo:
danth Sep 24, 2023
7c50775
`config.lib.stylix.colors` → `config.stylix.colors` :wastebasket:
danth Sep 30, 2023
61cb583
Fix wallpaper not appearing on Hyprland :bug:
danth Oct 8, 2023
d73f0fe
changes swww script to systemd service
SomeGuyNamedMay Oct 9, 2023
d6a2dd3
add wallpaper for unsupported modules
SomeGuyNamedMay Oct 9, 2023
c176990
Merge branch 'master' into wallpaper-refactor
danth Oct 10, 2023
b3f0b9a
Improve swww service :bug: :recycle:
danth Oct 14, 2023
177d8d6
Disable fade in for static wallpapers on wlroots :dizzy:
danth Oct 19, 2023
78659ee
Link to supported software :memo:
danth Oct 22, 2023
1bd7093
Merge branch 'master' into wallpaper-refactor
danth Oct 28, 2023
f85672a
Update Qutebrowser module to use new polarity utils :alien:
danth Oct 28, 2023
88c4318
Update Xresources module to use new colors option :alien:
danth Oct 28, 2023
18b83cc
Adjust docs :memo:
danth Oct 28, 2023
c9a98dd
Refactor ffmpeg command into function :recycle:
danth Oct 28, 2023
1c3edf5
Fix group variable changes in Hyprland module :bug:
danth Oct 28, 2023
dd20511
Refactor xorg commands into shared module :recycle:
danth Nov 1, 2023
c720ab8
Tidy up Rofi module :art:
danth Nov 1, 2023
1d360e2
Merge branch 'master' into wallpaper-refactor
danth Nov 1, 2023
bd61e79
small fix
SomeGuyNamedMay Nov 3, 2023
3007cd4
small fix
SomeGuyNamedMay Nov 14, 2023
5d666dc
Move types into namespace :truck:
danth Nov 18, 2023
2481fc6
Tidy up overridable scheme type :recycle:
danth Nov 18, 2023
3ddd609
Store custom types in an attribute :technologist:
danth Nov 18, 2023
4ba0a07
Rename `static` to `image` :truck:
danth Nov 18, 2023
6f26e5f
Restore old behaviour for inheriting color scheme :bug:
danth Nov 18, 2023
d1b6ac5
Fix error with wallpaper symlink for slideshows :ambulance:
danth Nov 18, 2023
7a080cb
Implement black box type :recycle:
danth Dec 3, 2023
dee2709
Merge branch 'master' into wallpaper-refactor
danth Dec 3, 2023
3045cbb
Fix slideshow script for file names containing spaces :bug:
danth Dec 4, 2023
953b4c7
Merge branch 'master' into wallpaper-refactor
danth Dec 25, 2023
3019a34
Merge branch 'master' into wallpaper-refactor
danth Dec 29, 2023
6abdf39
Integrate new documentation with wallpaper refactor :memo:
danth Dec 29, 2023
25076e1
stylix: use functions in lib
Mar 5, 2024
a512ba8
Merge pull request #1 from Sntx626/wallpaper-refactor
SomeGuyNamedMay Mar 17, 2024
7d818a7
refactor(lib/utils): simplify math expression
trueNAHO Mar 18, 2024
ea1d3b1
fix(lib/utils): resolve syntax error
trueNAHO Mar 18, 2024
08299f4
stylix: remove local gitignore file
trueNAHO Mar 18, 2024
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
result
result-*
trueNAHO marked this conversation as resolved.
Show resolved Hide resolved
29 changes: 9 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,8 @@
# Stylix

Stylix is a NixOS module which applies the same colour scheme, font and
wallpaper to a range of applications and desktop environments.

## What's this?

[base16.nix](https://github.com/SenchoPens/base16.nix#readme) allows you to
import colours from [base16](https://github.com/chriskempson/base16#readme)
into Nix code. Stylix takes this a step further:

- Automatically colours and changes the font of apps
- Sets your wallpaper
- Exports the colour scheme to be used manually for anything we missed
- Can also generate themes based on an image
Stylix is a module which applies a chosen color scheme, font and
wallpaper to [supported
software](https://github.com/danth/stylix/tree/master/modules).

For those not familiar with [NixOS](https://nixos.org/) and
[Home Manager](https://github.com/nix-community/home-manager#readme):
Expand All @@ -22,17 +12,16 @@ For those not familiar with [NixOS](https://nixos.org/) and
- Both use the Nix language and package manager
- Both let you install programs and change settings via code

Stylix supports either NixOS + Home Manager, or Home Manager on its own.
Certain features are only available with NixOS.

## Resources
Stylix supports Home Manager on its own, but certain features are only
possible when combined with NixOS.

Please refer to the [Stylix book](https://danth.github.io/stylix/)
for instructions and a list of supported apps.
Please refer to the
[Stylix book](https://danth.github.io/stylix/installation.html)
for instructions and a list supported apps.

If you have any questions, you are welcome to
join our [Matrix room](https://matrix.to/#/#stylix:danth.me),
or ask on [GitHub Discussions](https://github.com/danth/stylix/discussions).
or use [GitHub Discussions](https://github.com/danth/stylix/discussions).

## Example configurations

Expand Down
28 changes: 7 additions & 21 deletions docs/settings.nix
Original file line number Diff line number Diff line change
@@ -1,26 +1,12 @@
# Dummy values to avoid errors when generating the documentation.
# Dummy wallpaper to avoid errors when generating the documentation.
danth marked this conversation as resolved.
Show resolved Hide resolved

{
stylix = {
image = "/a/b/c";
{ pkgs, config, ... }:

base16Scheme = {
base00 = "ffffff";
base01 = "ffffff";
base02 = "ffffff";
base03 = "ffffff";
base04 = "ffffff";
base05 = "ffffff";
base06 = "ffffff";
base07 = "ffffff";
base08 = "ffffff";
base09 = "ffffff";
base0A = "ffffff";
base0B = "ffffff";
base0C = "ffffff";
base0D = "ffffff";
base0E = "ffffff";
base0F = "ffffff";
{
stylix.wallpaper = config.lib.stylix.types.wallpaper.from.image {
file = pkgs.fetchurl {
url = "https://picsum.photos/seed/stylix/1920/1080.jpg";
sha256 = "tow7DBO+/tgkDDD8diif+0V/6aDzrYl02/J7SCA8RCU=";
};
};
}
1 change: 1 addition & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

- [NixOS options](options/nixos.md)
- [Home Manager options](options/hm.md)
- [Wallpaper support](wallpaper-support.md)

# Contributing

Expand Down
176 changes: 29 additions & 147 deletions docs/src/configuration.md
Original file line number Diff line number Diff line change
@@ -1,163 +1,45 @@
# Configuration

## Wallpaper
## Getting started

To start theming, you need to set a wallpaper image.
The options you will be most interested in are as follows:

```nix
{
stylix.image = ./wallpaper.png;
}
```
- Choosing a wallpaper: [`stylix.wallpaper`](./options/nixos.html#stylixwallpaper)
- Choosing a color scheme: [`stylix.colors`](./options/nixos.html#stylixcolors)
- Changing fonts: [`stylix.fonts.*`](./options/nixos.html#stylixfontsemoji)
- Making apps transparent: [`stylix.opacity.*`](./options/nixos.html#stylixopacityapplications)

The option accepts derivations as well as paths, so you can fetch an image
directly from the internet:
Only the wallpaper is required as the others default to something reasonable.

```nix
{
stylix.image = pkgs.fetchurl {
url = "https://www.pixelstalk.net/wp-content/uploads/2016/05/Epic-Anime-Awesome-Wallpapers.jpg";
sha256 = "enQo3wqhgf0FEPHj2coOCvo7DuZv+x5rL/WIo4qPI50=";
};
}
```
Rebuild the configuration to apply any changed settings. Most software needs to
be restarted for a new theme to take effect, so you may wish to reboot too.

## Color scheme

### Generated schemes

If you only set a wallpaper, Stylix will use a
[genetic algorithm](https://en.wikipedia.org/wiki/Genetic_algorithm)
to create a color scheme. The quality of these schemes can vary, but more
colorful images tend to have better results.

You can force a light or dark scheme using the polarity option:

```nix
{
stylix.polarity = "dark";
}
```

The current scheme can be previewed in a web browser at either
[`/etc/stylix/palette.html`](file:///etc/stylix/palette.html) for NixOS, or
`~/.config/stylix/palette.html` for Home Manager.

### Handmade schemes

If you prefer a handmade color scheme, you can choose anything from
[the Tinted Theming repository](https://github.com/tinted-theming/base16-schemes):

```nix
{
stylix.base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
}
```

This option also accepts other files and formats supported by
[`mkSchemeAttrs`](https://github.com/SenchoPens/base16.nix/blob/main/DOCUMENTATION.md#mkschemeattrs).

### Overriding

For convenience, it is possible to override parts of `stylix.base16Scheme` using
`stylix.override`. Anything that
[base16.nix](https://github.com/SenchoPens/base16.nix) accepts as override is
valid.

When using both the Home Manager and NixOS modules, both the system overrides
and the user-provided one are used in the user configuration if
`stylix.base16Scheme` is not changed in the user config. If that is the case,
only the user override is used.

## Fonts

The default combination of fonts is:

```nix
{
stylix.fonts = {
serif = {
package = pkgs.dejavu_fonts;
name = "DejaVu Serif";
};

sansSerif = {
package = pkgs.dejavu_fonts;
name = "DejaVu Sans";
};

monospace = {
package = pkgs.dejavu_fonts;
name = "DejaVu Sans Mono";
};

emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
}
```

These can be changed as you like.
## Turning targets on and off

To make things look more uniform, you could replace the serif font with
the sans-serif font:
A target is anything which can have colors, fonts or a wallpaper applied to
it.

```nix
{
stylix.fonts.serif = config.stylix.fonts.sansSerif;
}
```
Each target has an option like `stylix.targets.«target».enable` to choose
whether it gets themed. By default, targets are enabled automatically when
they are installed - you can opt out of this via
[`stylix.autoEnable`](./options/nixos.html#stylixautoenable).

Or even choose monospace for everything:
The available targets differ between Home Manager and NixOS. If a target
is available in both, it is always fine to enable both.

```nix
{
stylix.fonts = {
serif = config.stylix.fonts.monospace;
sansSerif = config.stylix.fonts.monospace;
emoji = config.stylix.fonts.monospace;
};
}
```
The reference pages have a list of targets for [NixOS](options/nixos.md) and
[Home Manager](options/hm.md) respectively.

## Multi-user configurations

For those apps which are configured through Home Manager, Stylix allows you to
choose a different theme for each user. This can be done by setting the theme
within Home Manager for that user rather than at the system level.

By default, all users follow the system theme. This can be turned off by
setting `stylix.homeManagerIntegration.followSystem = false`, in which case you
must explicitly set a theme for each user. Setting that option is not required
just to be able to override an individual theme.
For those apps which are configured through Home Manager, Stylix can set a
different theme for each user.

If you would like to disable all Home Manager activity for a user, you can set
`stylix.homeManagerIntegration.autoImport = false`, then manually import the
Home Manager module for the users for which it should be enabled.
If Home Manager and NixOS are configured together, then the system theme will
be copied into the Home Manager configuration for each user. You can adjust
the settings in Home Manager for a particular user, and this will override the
system theme.

Note that if the wallpaper image for a user is different to the rest of the
system, a separate theme will always be generated for them, even though their
`base16Scheme` option has not been overridden. If you want that user to follow
the system theme while having a different wallpaper, you will need to manually
copy the system theme into their configuration. (This behaviour is necessary as
otherwise it would be impossible to use a generated theme for a user while
having a manually created theme for the rest of the system.)

## Turning targets on and off

In Stylix terms, a target is anything which can have colors, fonts or a
wallpaper applied to it. Each module in this repository should correspond to a
target of the same name.

Each target has an option like `stylix.targets.«target».enable` to turn its
styling on or off. Normally, it's turned on automatically when the target is
installed. You can set `stylix.autoEnable = false` to opt out of this
behaviour, in which case you'll need to manually enable each target you want to
be styled.

Targets are different between Home Manager and NixOS, and sometimes available
in both cases. If both are available, it is always correct to enable both.
The reference pages have a list of targets for [NixOS](options/nixos.md) and
[Home Manager](options/hm.md) respectively.
If you only want Stylix to affect certain accounts, you can set
`stylix.homeManagerIntegration.autoImport = false`, then manually import Stylix
into Home Manager for the accounts which should be themed.
4 changes: 3 additions & 1 deletion docs/src/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,9 @@ let
in {
imports = [ (import stylix).homeManagerModules.stylix ];

stylix.image = ./wallpaper.jpg;
stylix.wallpaper = config.lib.stylix.types.wallpaper.from.image {
file = ./wallpaper.jpg;
};
}

```
Expand Down
47 changes: 39 additions & 8 deletions docs/src/modules.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,12 @@ The human readable name must fit into the following sentence:
Refer to the [style guide](./styling.md) to see how colors are named,
and where to use each one.

The colors are exported under `config.lib.stylix.colors`, which originates from
[`mkSchemeAttrs`](https://github.com/SenchoPens/base16.nix/blob/main/DOCUMENTATION.md#mkschemeattrs).

You can use the values directly:
The colors are exported under `config.stylix.colors`. You can use the values
directly:

```nix
{
environment.variables.MY_APPLICATION_COLOR = config.lib.stylix.colors.base05;
some.program.color = config.stylix.colors.base05;
}
```

Expand All @@ -78,8 +76,8 @@ it as a function. This returns a derivation which builds the template.

```nix
{
environment.variables.MY_APPLICATION_CONFIG_FILE =
let configFile = config.lib.stylix.colors {
some.program.configPath =
let configFile = config.stylix.colors {
template = ./config.toml.mustache;
extension = ".toml";
};
Expand All @@ -94,7 +92,40 @@ individually.
Also note that reading generated files with `builtins.readFile` can be very
slow and should be avoided.

## How to apply wallpapers

If your module will only support image wallpapers, then you can use
the image as follows:

```nix
{
some.program.wallpaper = config.stylix.wallpaper.as.image.file;
}
```

Otherwise, use `unpack`:

```nix
{
some.program.wallpaperURIs = config.stylix.wallpaper.unpack {
slideshow =
{ files, ... }:
map (f: "file://${f}") files;

image =
{ file, ... }:
[ "file://${file}" ];
};
}
```

This calls the corresponding function for the type of wallpaper which the user
selected, kind of like [pattern matching](https://stackoverflow.com/a/2225811).

It's essential that still images are handled correctly, since any other missing
types can be converted to that.

## How to apply other things

For everything else, like fonts and wallpapers, you can just take option values
For everything else, like fonts, you can just take option values
directly from `config`. See the reference pages for a list of options.
8 changes: 5 additions & 3 deletions docs/src/tricks.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@ let
fillColor = "black"
in
{
stylix.image = pkgs.runCommand "dimmed-background.png" { } ''
${pkgs.imagemagick}/bin/convert "${inputImage}" -brightness-contrast ${brightness},${contrast} -fill ${fillColor} $out
'';
stylix.wallpaper = config.lib.stylix.types.wallpaper.from.image {
file = pkgs.runCommand "dimmed-background.png" { } ''
${pkgs.imagemagick}/bin/convert "${inputImage}" -brightness-contrast ${brightness},${contrast} -fill ${fillColor} $out
'';
};
}
```

Expand Down
15 changes: 15 additions & 0 deletions docs/src/wallpaper-support.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Wallpaper support

| | Image | Slideshow | Animation | Video |
|--------------|-------|-----------|-----------|-------|
| bspwm | ✔️ | ✔️ | ✔️ | ✔️ |
| GNOME | ✔️ | ✔️ | ❌ | ❌ |
| GRUB | ✔️ | ❌ | ❌ | ❌ |
| herbstluftwm | ✔️ | ✔️ | ✔️ | ✔️ |
| Hyprland | ✔️ | ✔️ | ✔️ | ✔️ |
| i3 | ✔️ | ✔️ | ✔️ | ✔️ |
| KDE | ✔️ | ❌ | ❌ | ❌ |
| LightDM | ✔️ | ❌ | ❌ | ❌ |
| spectrwm | ✔️ | ✔️ | ✔️ | ✔️ |
| Sway | ✔️ | ✔️ | ✔️ | ✔️ |
| Xmonad | ✔️ | ✔️ | ✔️ | ✔️ |
Loading