KDE: Difference between revisions

From NixOS Wiki
imported>Appetrosyan
(Better heading hierarchy)
Tags: Mobile edit Mobile web edit
 
(44 intermediate revisions by 26 users not shown)
Line 1: Line 1:
KDE Plasma is a desktop environment that aims to be simple by default, powerful when needed.
== Installation ==
== Installation ==
=== Plasma 6 ===
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
services.xserver.desktopManager.plasma5.enable = true;
{
  services.xserver.enable = true;
  services.displayManager.sddm.enable = true;
  services.displayManager.sddm.wayland.enable = true;
  services.desktopManager.plasma6.enable = true;
}
</nowiki>}}
</nowiki>}}


== Tips and Tricks ==  
=== Plasma 5 ===
=== Enable GTK themes in KDE ===
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
  services.xserver.enable = true;
  services.displayManager.sddm.enable = true;
  services.xserver.desktopManager.plasma5.enable = true;
}
</nowiki>}}
 
== Configuration ==
 
=== Rootless X11 ===
 
{{ic|sddm}} launches X11 as a root user by default. For better security, X11 can be run as a non-root user but using Wayland is preferred and better tested:
 
<syntaxHighlight lang=nix>
services.xserver.displayManager.sddm.settings.General.DisplayServer = "x11-user";
</syntaxHighlight>


==== Enable GTK themes in KDE in KDE System Settings ====
=== Excluding applications from the default install ===


Nixpkgs now provides the GTK configuration module for KDE system settings, which you can install with:
Some optional packages that are installed by default can be excluded if they are not needed.


<syntaxhighlight lang="console">$ nix-env -i kde-gtk-config</syntaxhighlight>
==== Plasma 5 ====


You should also install any GTK themes you like. You can choose a GTK theme and set related options in <code>System Settings > Application Appearance > GTK</code>.
Optional packages: [https://github.com/NixOS/nixpkgs/blob/nixos-23.11/nixos/modules/services/x11/desktop-managers/plasma5.nix#L275-L284 plasma5.nix]


==== Enable GTK themes in KDE manually ====
<syntaxHighlight lang=nix>
environment.plasma5.excludePackages = with pkgs.libsForQt5; [
  plasma-browser-integration
  konsole
  oxygen
];
</syntaxHighlight>


As a normal nix user you can install the Oxygen GTK theme:
==== Plasma 6 ====


<syntaxhighlight lang="console">$ nix-env -i oxygen-gtk</syntaxhighlight>
Optional packages: [https://github.com/NixOS/nixpkgs/blob/ff0dbd94265ac470dda06a657d5fe49de93b4599/nixos/modules/services/desktop-managers/plasma6.nix#L153-L165 plasma6.nix]


KDE will run any scripts you place in ~/.kde/env on startup so this is a good place to set the GTK_PATH so that applications can find the theme engine. If the path is wrong/unset you will see errors like this:
<syntaxHighlight lang=nix>
environment.plasma6.excludePackages = with pkgs.kdePackages; [
  plasma-browser-integration
  konsole
  elisa
];
</syntaxHighlight>


<code>Gtk-WARNING **: Unable to locate theme engine in module_path</code>
=== GNOME desktop integration ===


To set Oxygen-GTK as the gtk theme create the following file and make it executable: ~/.kde/env/set-gtk-theme.sh
Using the following example configuration, QT applications will have a look similar to the [[GNOME]] desktop, using a dark theme.
<syntaxhighlight lang="bash">
#!/bin/sh


export GTK_PATH=$GTK_PATH:~/.nix-profile/lib/gtk-2.0
<syntaxhighlight lang="nix">
export GTK2_RC_FILES=$GTK2_RC_FILES:~/.nix-profile/share/themes/oxygen-gtk/gtk-2.0/gtkrc
qt = {
  enable = true;
  platformTheme = "gnome";
  style.name = "adwaita-dark";
};
</syntaxhighlight>
</syntaxhighlight>


Alternatively, on NixOS:
For other themes, you may need the packages <code>libsForQt5.qt5ct</code> and <code>libsForQt5.qtstyleplugin-kvantum</code> and a symlink from <code>~/.config/Kvantum/</code> to your theme package. Here is an example using Arc-Dark and [[Home Manager]]. In the Home Manager configuration:


{{file|configuration.nix|nix|<nowiki>
<syntaxHighlight lang=nix>
environment = {
qt = {
   systemPackages = [ pkgs.oxygen_gtk ];
   enable = true;
   shellInit = ''
   platformTheme = "qtct";
    export GTK_PATH=$GTK_PATH:${pkgs.oxygen_gtk}/lib/gtk-2.0
  style.name = "kvantum";
    export GTK2_RC_FILES=$GTK2_RC_FILES:${pkgs.oxygen_gtk}/share/themes/oxygen-gtk/gtk-2.0/gtkrc
  '';
};
};
</nowiki>}}


Or alternatively, copy the themes folder in the home directory
xdg.configFile = {
  "Kvantum/ArcDark".source = "${pkgs.arc-kde-theme}/share/Kvantum/ArcDark";
  "Kvantum/kvantum.kvconfig".text = "[General]\ntheme=ArcDark";
};
</syntaxHighlight>
 
For more details, see [https://discourse.nixos.org/t/guide-to-installing-qt-theme/35523/2 this] forum post.
 
=== Default Wayland/X11 session ===
 
==== Plasma 5 ====
 
Plasma 5 runs on X11 by default and it is recommend to use Plasma 6 for Wayland instead. To launch a Wayland session by default anyway:
 
<syntaxHighlight lang=nix>
services.xserver.displayManager.defaultSession = "plasmawayland";
</syntaxHighlight>
 
==== Plasma 6 ====
 
Plasma 6 runs on Wayland by default. To launch an X11 session by default:
 
<syntaxHighlight lang=nix>
services.xserver.displayManager.defaultSession = "plasmax11";
</syntaxHighlight>
 
==== SDDM on Wayland ====
 
<syntaxHighlight lang=nix>
services.xserver.displayManager.sddm.wayland.enable = true;
</syntaxHighlight>
 
== Troubleshooting ==
 
=== Qt/KDE applications segfault on start ===
 
This is caused by a stale QML cache [https://github.com/NixOS/nixpkgs/issues/177720 (see this issue)]. A dirty way to fix this is by running on a terminal the following command:
 
<syntaxHighlight lang=sh>
find ${XDG_CACHE_HOME:-$HOME/.cache}/**/qmlcache -type f -delete
</syntaxHighlight>
 
=== GTK themes are not applied in Wayland applications / Window Decorations missing / Cursor looks different ===
This affects GTK applications including Firefox and Thunderbird.
 
If youvare using Plasma 5, add to your configuration.nix the following line:
 
<syntaxHighlight lang=nix>
programs.dconf.enable = true;
</syntaxHighlight>
 
You might also need to set a GTK theme ''Breeze'' imitating the KDE theme with the same name in ''System Settings -> Application Style -->Configure GNOME/GTK Application Style''.
 
[https://github.com/NixOS/nixpkgs/issues/180720 (See this issue)]
 
== Tips and tricks ==
 
=== Plasma-Manager ===


<syntaxhighlight lang="console">
{{note|  [https://github.com/pjones/plasma-manager Plasma-Manager] is not matured yet and unofficial community project}}
$ cp -R ~/.nix-profile/share/themes/ ~/.themes
By default, the Plasma configuration can be handled like on [https://wiki.archlinux.org/title/KDE traditional systems].  
</syntaxhighlight>
With [https://github.com/pjones/plasma-manager plasma-manager], it is possible to make Plasma configurations via nix by providing [https://github.com/nix-community/home-manager home-manager] modules.


[[Category:Desktop environments]]
[[Category:Desktop environment]]
[[Category:Applications]]

Latest revision as of 07:14, 25 June 2024

KDE Plasma is a desktop environment that aims to be simple by default, powerful when needed.

Installation

Plasma 6

/etc/nixos/configuration.nix
{
  services.xserver.enable = true;
  services.displayManager.sddm.enable = true;
  services.displayManager.sddm.wayland.enable = true;
  services.desktopManager.plasma6.enable = true;
}

Plasma 5

/etc/nixos/configuration.nix
{
  services.xserver.enable = true;
  services.displayManager.sddm.enable = true;
  services.xserver.desktopManager.plasma5.enable = true;
}

Configuration

Rootless X11

sddm launches X11 as a root user by default. For better security, X11 can be run as a non-root user but using Wayland is preferred and better tested:

services.xserver.displayManager.sddm.settings.General.DisplayServer = "x11-user";

Excluding applications from the default install

Some optional packages that are installed by default can be excluded if they are not needed.

Plasma 5

Optional packages: plasma5.nix

environment.plasma5.excludePackages = with pkgs.libsForQt5; [
  plasma-browser-integration
  konsole
  oxygen
];

Plasma 6

Optional packages: plasma6.nix

environment.plasma6.excludePackages = with pkgs.kdePackages; [
  plasma-browser-integration
  konsole
  elisa
];

GNOME desktop integration

Using the following example configuration, QT applications will have a look similar to the GNOME desktop, using a dark theme.

qt = {
  enable = true;
  platformTheme = "gnome";
  style.name = "adwaita-dark";
};

For other themes, you may need the packages libsForQt5.qt5ct and libsForQt5.qtstyleplugin-kvantum and a symlink from ~/.config/Kvantum/ to your theme package. Here is an example using Arc-Dark and Home Manager. In the Home Manager configuration:

qt = {
  enable = true;
  platformTheme = "qtct";
  style.name = "kvantum";
};

xdg.configFile = {
  "Kvantum/ArcDark".source = "${pkgs.arc-kde-theme}/share/Kvantum/ArcDark";
  "Kvantum/kvantum.kvconfig".text = "[General]\ntheme=ArcDark";
};

For more details, see this forum post.

Default Wayland/X11 session

Plasma 5

Plasma 5 runs on X11 by default and it is recommend to use Plasma 6 for Wayland instead. To launch a Wayland session by default anyway:

services.xserver.displayManager.defaultSession = "plasmawayland";

Plasma 6

Plasma 6 runs on Wayland by default. To launch an X11 session by default:

services.xserver.displayManager.defaultSession = "plasmax11";

SDDM on Wayland

services.xserver.displayManager.sddm.wayland.enable = true;

Troubleshooting

Qt/KDE applications segfault on start

This is caused by a stale QML cache (see this issue). A dirty way to fix this is by running on a terminal the following command:

find ${XDG_CACHE_HOME:-$HOME/.cache}/**/qmlcache -type f -delete

GTK themes are not applied in Wayland applications / Window Decorations missing / Cursor looks different

This affects GTK applications including Firefox and Thunderbird.

If youvare using Plasma 5, add to your configuration.nix the following line:

programs.dconf.enable = true;

You might also need to set a GTK theme Breeze imitating the KDE theme with the same name in System Settings -> Application Style -->Configure GNOME/GTK Application Style.

(See this issue)

Tips and tricks

Plasma-Manager

Note: Plasma-Manager is not matured yet and unofficial community project

By default, the Plasma configuration can be handled like on traditional systems. With plasma-manager, it is possible to make Plasma configurations via nix by providing home-manager modules.