mirror of
https://github.com/nix-community/plasma-manager.git
synced 2024-12-04 15:35:27 +03:00
97 lines
2.9 KiB
Markdown
97 lines
2.9 KiB
Markdown
# Manage KDE Plasma with Home Manager
|
|
|
|
This project aims to provide [Home Manger][home-manager] modules which allow you
|
|
to configure KDE Plasma using Nix.
|
|
|
|
Configuration is broken down into three layers:
|
|
|
|
1. High-level interface like many Home Manager modules:
|
|
|
|
```nix
|
|
{
|
|
programs.plasma = {
|
|
workspace.clickItemTo = "select";
|
|
};
|
|
}
|
|
```
|
|
|
|
This layer is doesn't currently have many options. If using a
|
|
high-level interface like this sounds interesting to you please
|
|
consider contributing more options.
|
|
|
|
2. Mid-level interface:
|
|
|
|
```nix
|
|
{
|
|
programs.plasma = {
|
|
shortcuts.kwin = {
|
|
"Switch Window Down" = "Meta+J";
|
|
"Switch Window Left" = "Meta+H";
|
|
"Switch Window Right" = "Meta+L";
|
|
"Switch Window Up" = "Meta+K";
|
|
};
|
|
};
|
|
}
|
|
```
|
|
|
|
This layer is considered mid level because, while it generates a
|
|
great deal of configuration for you, you must still know the name
|
|
of the corresponding KDE setting to use it. (See information
|
|
about the `rc2nix` tool below.)
|
|
|
|
3. A low-level interface:
|
|
|
|
```nix
|
|
{
|
|
programs.plasma = {
|
|
files."baloofilerc"."Basic Settings"."Indexing-Enabled" = false;
|
|
};
|
|
}
|
|
```
|
|
|
|
The other two layers ultimately generate Nix configuration for
|
|
this low-level layer. Configuration at this level is essentially
|
|
in the final state before being sent to the `kwriteconfig5` tool.
|
|
|
|
An example is available in the `example` directory.
|
|
|
|
## Capturing Your Current Configuration
|
|
|
|
To make it easier to migrate to Plasma Manger, and to help maintain
|
|
your Nix configuration, this project includes a tool called `rc2nix`.
|
|
|
|
This tool will read KDE configuration files and translate them to
|
|
Nix. The translated configuration is written to standard output.
|
|
This makes it easy to:
|
|
|
|
* Generate an initial Plasma Manager configuration file.
|
|
|
|
* See what settings are changed by a GUI tool by capturing a file
|
|
before and after using the tool and then using `diff`.
|
|
|
|
To run the `rc2nix` tool without having to clone this repository run
|
|
the following shell command:
|
|
|
|
```sh
|
|
nix run github:pjones/plasma-manager
|
|
```
|
|
|
|
## Contributions and Maintenance
|
|
|
|
I consider this a community project and welcome all contributions. If
|
|
there's enough interest I would love to move this into
|
|
[nix-community][] once it has matured.
|
|
|
|
That said, this project works well enough for my needs. I don't have
|
|
enough free time to maintain this project on my own. Therefore I
|
|
won't be able to fix issues or implement new features without help.
|
|
|
|
## Special Thanks
|
|
|
|
This work was inspired by the suggestions on [Home Manger Issue
|
|
#607][hm607] by people such as [bew](https://github.com/bew) and [kurnevsky](https://github.com/kurnevsky). Thank you.
|
|
|
|
[home-manager]: https://github.com/nix-community/home-manager
|
|
[hm607]: https://github.com/nix-community/home-manager/issues/607
|
|
[nix-community]: https://github.com/nix-community
|