KDE: Difference between revisions

imported>Lumarius
The example for installing a Qt theme using Kvantum uses Home Manager.
Ezri (talk | contribs)
→‎Tips and tricks: Show user option to add a profile picture for their sddm login screen.
 
(30 intermediate revisions by 9 users not shown)
Line 3: Line 3:
== Installation ==
== Installation ==


To use KDE Plasma, add this to your configuration.nix:
=== Plasma 6 ===
 
{{file|/etc/nixos/configuration.nix|nix|<nowiki>
{
  services.xserver.enable = true; // optional
  services.displayManager.sddm.enable = true;
  services.displayManager.sddm.wayland.enable = true;
  services.desktopManager.plasma6.enable = true;
}
</nowiki>}}
 
=== Plasma 5 ===
 
{{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 better tested and thus preferred:


<syntaxHighlight lang=nix>
<syntaxHighlight lang=nix>
services.xserver.enable = true;
services.xserver.displayManager.sddm.settings.General.DisplayServer = "x11-user";
services.xserver.displayManager.sddm.enable = true;
services.xserver.desktopManager.plasma5.enable = true;
# KDE Plasma 6 is now available on unstable
# services.desktopManager.plasma6.enable = true;
</syntaxHighlight>
</syntaxHighlight>


=== Excluding some KDE Plasma applications from the default install ===
=== Excluding applications from the default install ===
 
Some optional packages can be excluded if they are not needed at the cost of functionality.


==== Plasma 5 ====
==== Plasma 6 ====


Not all applications that come pre-installed with the KDE Plasma desktop environment are desirable for everyone to have on their machines. There's a way to edit configuration.nix to exclude some [https://github.com/NixOS/nixpkgs/blob/nixos-23.11/nixos/modules/services/x11/desktop-managers/plasma5.nix#L275-L284 optional packages], for example as follows:
Optional packages: [https://github.com/NixOS/nixpkgs/blob/nixos-unstable/nixos/modules/services/desktop-managers/plasma6.nix#L136-L149 plasma6.nix]


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


==== Plasma 6 ====
==== Plasma 5 ====
 
Optional packages: [https://github.com/NixOS/nixpkgs/blob/nixos-24.05/nixos/modules/services/x11/desktop-managers/plasma5.nix#L278-L282 plasma5.nix]


<syntaxHighlight lang=nix>
<syntaxHighlight lang=nix>
environment.plasma6.excludePackages = with pkgs.kdePackages; [
environment.plasma5.excludePackages = with pkgs.libsForQt5; [
   plasma-browser-integration
   plasma-browser-integration
   konsole
   konsole
Line 36: Line 61:
];
];
</syntaxHighlight>
</syntaxHighlight>
== Configuration ==


=== GNOME desktop integration ===
=== GNOME desktop integration ===
Line 43: Line 66:
Using the following example configuration, QT applications will have a look similar to the [[GNOME]] desktop, using a dark theme.
Using the following example configuration, QT applications will have a look similar to the [[GNOME]] desktop, using a dark theme.


<syntaxHighlight lang=nix>
<syntaxhighlight lang="nix">
qt = {
qt = {
   enable = true;
   enable = true;
   platformTheme = "gnome";
   platformTheme = "gnome";
   style = "adwaita-dark";
   style.name = "adwaita-dark";
};
};
</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:
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:
Line 68: Line 91:
For more details, see [https://discourse.nixos.org/t/guide-to-installing-qt-theme/35523/2 this] forum post.
For more details, see [https://discourse.nixos.org/t/guide-to-installing-qt-theme/35523/2 this] forum post.


== Troubleshoots ==
=== Default Wayland/X11 session ===


=== Qt/KDE applications segfault on start ===
==== Plasma 6 ====


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 6 runs on Wayland by default. To launch an X11 session by default:


<syntaxHighlight lang=sh>
<syntaxHighlight lang=nix>
find ${XDG_CACHE_HOME:-$HOME/.cache}/**/qmlcache -type f -delete
services.xserver.displayManager.defaultSession = "plasmax11";
</syntaxHighlight>
</syntaxHighlight>


=== GTK themes are not applied in Wayland applications / Window Decorations missing / Cursor looks different ===
==== SDDM on Wayland ====
This affects GTK applications including Firefox and Thunderbird.
 
Add to your configuration.nix the following line:


<syntaxHighlight lang=nix>
<syntaxHighlight lang=nix>
programs.dconf.enable = true;
services.xserver.displayManager.sddm.wayland.enable = true;
</syntaxHighlight>
</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''.
==== Plasma 5 ====
 
[https://github.com/NixOS/nixpkgs/issues/180720 (See this issue)]
 
=== KMail Renders Blank Messages ===


When you see the message <code>grantlee.template: "Plugin library 'kde_grantlee_plugin' not found."</code> and/or kmail does shows only empty message then add to your configuration.nix the following line:
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>
environment.sessionVariables = {
services.xserver.displayManager.defaultSession = "plasmawayland";
  NIX_PROFILES = "${pkgs.lib.concatStringsSep " " (pkgs.lib.reverseList config.environment.profiles)}";
};
</syntaxHighlight>
</syntaxHighlight>


[https://github.com/NixOS/nixpkgs/issues/160599 (See this issue)]
== Troubleshooting ==


=== Launch KDE in Wayland session ===
=== Qt/KDE applications segfault on start ===


==== Plasma 5 ====
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>
services.xserver.displayManager.defaultSession = "plasmawayland";
find ${XDG_CACHE_HOME:-$HOME/.cache}/**/qmlcache -type f -delete
</syntaxHighlight>
</syntaxHighlight>


==== Plasma 6 ====
=== GTK themes are not applied in Wayland applications / Window Decorations missing / Cursor looks different ===
 
This affects GTK applications including Firefox and Thunderbird.
For KDE Plasma 6, the defaults have changed. KDE Plasma 6 runs on Wayland with the default session set to <code>plasma</code>.
If you want to use the X11 session as your default session, change it to <code>plasmax11</code>.
<syntaxHighlight lang=nix>
services.xserver.displayManager.defaultSession = "plasma";
</syntaxHighlight>


==== Launch SDDM in Wayland too ====
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''.


It's possible to launch sddm in Wayland too to try to avoid running an X server.
[https://github.com/NixOS/nixpkgs/issues/180720 (See this issue)]


<syntaxHighlight lang=nix>
== Tips and tricks ==
services.xserver.displayManager.sddm.wayland.enable = true;
</syntaxHighlight>


=== Plasma-Manager ===
=== Plasma-Manager ===


{{note|  [https://github.com/pjones/plasma-manager Plasma-Manager] is not matured yet and currently unofficial }}  
{{note|  [https://github.com/pjones/plasma-manager Plasma-Manager] is an unofficial community project and is not yet mature}}  
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/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.
 


=== User icon (avatar) ===
You can add a profile picture to your user by using a png file in <code>~/.face.icon</code>.


[[Category:Desktop environment]]
[[Category:Desktop environment]]
[[Category:Applications]]
[[Category:Applications]]
[[Category:KDE]]