KDE: Difference between revisions

Eliasp (talk | contribs)
m Using a single diff from a remote URL: Fix formatting (command on separate line)
Railwhale (talk | contribs)
Add very dirty workaround for setting locale in system settings
Tags: Mobile edit Mobile web edit Advanced mobile edit
 
(36 intermediate revisions by 17 users not shown)
Line 1: Line 1:
[https://kde.org/de/plasma-desktop/ KDE Plasma] is a desktop environment that aims to be simple by default, powerful when needed.
[https://kde.org/plasma-desktop/ KDE Plasma] is a desktop environment that aims to be simple by default, powerful when needed.


== Installation ==
== Installation ==


=== Plasma 6 ===
To use KDE Plasma, add this to your configuration.nix:


{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{{file|3={
{
   # Enable Plasma
   services.xserver.enable = true; # optional
   services = {
   services.displayManager.sddm.enable = true;
    desktopManager.plasma6.enable = true;
  services.displayManager.sddm.wayland.enable = true;
  services.desktopManager.plasma6.enable = true;
}
</nowiki>}}


=== Plasma 5 ===
  # Default display manager for Plasma
 
    displayManager.plasma-login-manager.enable = true;
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
  services.xserver.enable = true;
  services.displayManager.sddm.enable = true;
  services.xserver.desktopManager.plasma5.enable = true;
}
</nowiki>}}


  # Optionally enable xserver
  # xserver.enable = true;
  };
}|name=configuration.nix|lang=nix}}
== Configuration ==
== 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 better tested and thus preferred:
<syntaxHighlight lang=nix>
services.xserver.displayManager.sddm.settings.General.DisplayServer = "x11-user";
</syntaxHighlight>


=== Excluding applications from the default install ===
=== Excluding applications from the default install ===
Line 38: Line 23:
Some optional packages can be excluded if they are not needed at the cost of functionality.
Some optional packages can be excluded if they are not needed at the cost of functionality.


==== Plasma 6 ====
Optional packages: [https://github.com/NixOS/nixpkgs/blob/7e495b747b51f95ae15e74377c5ce1fe69c1765f/nixos/modules/services/desktop-managers/plasma6.nix#L150-L170]


Optional packages: [https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/services/desktop-managers/plasma6.nix#L136-L149 plasma6.nix]
{{File|3={
  environment.plasma6.excludePackages = with pkgs.kdePackages; [
    plasma-browser-integration
    konsole
    elisa
  ];
}|name=configuration.nix|lang=nix}}


<syntaxHighlight lang=nix>
=== Default Wayland/X11 session ===
environment.plasma6.excludePackages = with pkgs.kdePackages; [
  plasma-browser-integration
  konsole
  elisa
];
</syntaxHighlight>


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


Optional packages: [https://github.com/NixOS/nixpkgs/blob/nixos-24.05/nixos/modules/services/x11/desktop-managers/plasma5.nix#L278-L282 plasma5.nix]
{{File|3={ 
  services.displayManager.defaultSession = "plasmax11";
}|name=configuration.nix|lang=nix}}


<syntaxHighlight lang=nix>
environment.plasma5.excludePackages = with pkgs.libsForQt5; [
  plasma-browser-integration
  konsole
  oxygen
];
</syntaxHighlight>


=== GNOME desktop integration ===
=== Unlock KDE Wallet with LUKS password ===


Using the following example configuration, QT applications will have a look similar to the [[GNOME]] desktop, using a dark theme.
When using LUKS disk encryption and autologin in your display manager, it is possible to unlock KDE Wallet with the LUKS password. Set the LUKS password, login password, and KWallet keyring password all to the same string, and for NixOS 25.11 and below use the following configuration:
<syntaxhighlight lang="nix">
{
  boot.initrd.systemd.enable = true;
  systemd.services.display-manager.serviceConfig.KeyringMode = "inherit";
  security.pam.services.sddm-autologin.text = pkgs.lib.mkBefore ''
    auth optional ${pkgs.systemd}/lib/security/pam_systemd_loadkey.so
    auth include sddm
  '';
}
</syntaxhighlight>


For Plasma Login Manager in NixOS 26.05 or above, use:
<syntaxhighlight lang="nix">
<syntaxhighlight lang="nix">
qt = {
{
   enable = true;
   boot.initrd.systemd.enable = true;
   platformTheme = "gnome";
   systemd.services.plasmalogin.serviceConfig.KeyringMode = "inherit";
   style = "adwaita-dark";
   security.pam.services.plasmalogin-autologin.rules.auth = {
};
    systemd_loadkey = {
      order = 0;
      control = "optional";
      modulePath = "${pkgs.systemd}/lib/security/pam_systemd_loadkey.so";
    };
    plasmalogin = {
      order = 1;
      control = "include";
      modulePath = "plasmalogin";
    };
  };
}
</syntaxhighlight>
</syntaxhighlight>


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:
== 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="nix">
<syntaxHighlight lang=sh>
qt = {
find ${XDG_CACHE_HOME:-$HOME/.cache}/**/qmlcache -type f -delete
  enable = true;
</syntaxHighlight>
  platformTheme = "qtct";
  style = "kvantum";
};


xdg.configFile = {
=== GTK themes are not applied in Wayland applications / Window Decorations missing / Cursor looks different ===
  "Kvantum/ArcDark".source = "${pkgs.arc-kde-theme}/share/Kvantum/ArcDark";
This affects GTK applications including Firefox and Thunderbird.
  "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.
You may 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''.


=== Default Wayland/X11 session ===
[https://github.com/NixOS/nixpkgs/issues/180720 (See this issue)]


==== Plasma 6 ====
=== After Update to Plasma 6 Signal-Desktop complains about a Database Error involving kwallet5 ===


Plasma 6 runs on Wayland by default. To launch an X11 session by default:
# Close Signal
# Open ~/.config/Signal/config.json
# Replace <code>"safeStorageBackend": "kwallet5"</code> with <code>"safeStorageBackend": "kwallet6"</code> (change 5 to 6)
# Start Signal


<syntaxHighlight lang=nix>
=== Bluetooth configuration not available ===
services.xserver.displayManager.defaultSession = "plasmax11";
</syntaxHighlight>


==== SDDM on Wayland ====
Add the following configuration (generally in hardware-configuration.nix):


<syntaxHighlight lang=nix>
<syntaxHighlight lang=nix>
services.xserver.displayManager.sddm.wayland.enable = true;
hardware.bluetooth.enable = true;
</syntaxHighlight>
</syntaxHighlight>


==== Plasma 5 ====
This will add the following packages:
 
Plasma 5 runs on X11 by default and it is recommended to use Wayland with Plasma 6 instead. To launch a Wayland session by default anyway:


<syntaxHighlight lang=nix>
<syntaxHighlight lang=nix>
services.xserver.displayManager.defaultSession = "plasmawayland";
[
bluedevil
bluez-qt
pkgs.openobex
pkgs.obexftp
]
</syntaxHighlight>
</syntaxHighlight>


== Troubleshooting ==
=== Brightness and Color brightness control sets gamma instead of brightness on external monitors ===
 
To allow <code>powerdevil</code> (and by extension the "Brightness and Color" status tray menu) to control brightness on supported monitors directly instead of adjusting gamma, [[Backlight#Via ddcutil|configure your system to enable ddcutil]], and allow your user to use DDC/CI without root. Note that you do not need to add <code>ddcutil</code> to your system packages because PowerDevil uses libddcutil.
=== 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:
=== Plasma wallpaper reverts back to default after a Nix GC ===
When setting a wallpaper, Plasma may save the path as a <code>/nix/store/*/share/wallpapers</code> path instead of <code>/run/current-system/sw/share/wallpapers/</code>. To fix this, open <code>$XDG_CONFIG_HOME/plasma-org.kde.plasma.desktop-appletsrc</code> and manually change the paths.


<syntaxHighlight lang=sh>
=== No available locale settings in the Plasma system settings ===
find ${XDG_CACHE_HOME:-$HOME/.cache}/**/qmlcache -type f -delete
The "Region & Language" page in the Plasma system settings is somewhat broken on NixOS. Instead, edit the <code>$XDG_CONFIG_HOME/plasma-localerc</code> file.
</syntaxHighlight>


=== GTK themes are not applied in Wayland applications / Window Decorations missing / Cursor looks different ===
If you really want to configure locale in settings, you can use this workaround:
This affects GTK applications including Firefox and Thunderbird.
<syntaxhighlight lang="nix">
{ pkgs, ... }:
{
  i18n = {
    extraLocales = "all";
    imperativeLocale = true; # Unknown if needed (system settings sets user-level override?)
  };
  environment = {
    systemPackages = [ pkgs.stdenv.cc.libc.out ]; # this derivation contains the locales
    pathsToLink = [ "/share/i18n" ];
  };
}
</syntaxhighlight>


You may 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''.
Switch to that configuration, then run:


[https://github.com/NixOS/nixpkgs/issues/180720 (See this issue)]
<syntaxhighlight lang="bash">
sudo mkdir -p /usr/share/i18n
sudo ln -s /run/current-system/sw/share/i18n/locales /usr/share/i18n/locales
</syntaxhighlight>
That is a very dirty command, and I don't know if it persists across reboots.


== Tips and tricks ==
== Tips and tricks ==
Line 136: Line 155:
=== Plasma-Manager ===
=== Plasma-Manager ===


{{note|  [https://github.com/pjones/plasma-manager Plasma-Manager] is an unofficial community project and is not yet mature}}  
{{note|  [https://github.com/nix-community/plasma-manager Plasma-Manager] is a community project}}  
By default, the Plasma configuration can be handled like on [https://wiki.archlinux.org/title/KDE traditional systems].  
By default, the Plasma configuration can be handled like on [https://wiki.archlinux.org/title/KDE traditional systems].  
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.
With [https://github.com/nix-community/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.


=== User icon (avatar) ===
=== User icon (avatar) ===
Line 206: Line 225:


==== Using the worktree of a local repository ====
==== Using the worktree of a local repository ====
{{Note|Since this relies on reading directly from the filesystem during the build, the impure mode has to be used, e.g.: <code>nixos-rebuild --impure …</code>}}
Now one might not want to commit each and every change during development to iterate more quickly, but to just rebuild after having saved the latest changes.
Now one might not want to commit each and every change during development to iterate more quickly, but to just rebuild after having saved the latest changes.


Line 216: Line 236:


</syntaxhighlight>
</syntaxhighlight>
{{Note|Since this relies on reading directly from the filesystem during the build, the impure mode has to be used, e.g.: <code>nixos-rebuild --impure …</code>}}
[[Category:Desktop environment]]
[[Category:Desktop environment]]
[[Category:Applications]]
[[Category:Applications]]
[[Category:KDE]]
[[Category:KDE]]