Giter VIP home page Giter VIP logo

plasma-manager's Introduction

Manage KDE Plasma with Home Manager

This project aims to provide Home Manger 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:

    {
      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:

    {
      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:

    {
      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:

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 by people such as bew and kurnevsky. Thank you.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.