Tutorials/Using Other Window Managers with Plasma: Difference between revisions
(Add workaround for newer versions of SDDM that check for blank spaces in Exec.) |
(Marked this version for translation) |
||
(14 intermediate revisions by 5 users not shown) | |||
Line 28: | Line 28: | ||
** Compositors can also help with screen tearing, however check first if you can resolve it with your video drivers, as this will be a more performant solution in most cases. | ** Compositors can also help with screen tearing, however check first if you can resolve it with your video drivers, as this will be a more performant solution in most cases. | ||
== | ==Set-up == <!--T:9--> | ||
<!--T:78--> | |||
To use a different window manager with Plasma, replace the systemd service for KWin with a new user unit for your preferred WM. A tutorial can be found in the [https://wiki.archlinux.org/title/KDE#Use_a_different_window_manager ArchWiki]. | |||
<!--T: | ==Configuration== <!--T:27--> | ||
<!--T: | <!--T:79--> | ||
To make a non-standard WM work well with Plasma, some additional configuration may be required. | |||
===i3=== <!--T:80--> | |||
=== | |||
<!--T: | |||
====Installation==== <!--T:28--> | |||
=== | |||
<!--T:29--> | <!--T:29--> | ||
Before starting the configuration, you should make sure i3 or i3-gaps are installed on your system. If they are not, use your package manager or [[Special:myLanguage/Discover|Discover]] to install one of these two packages. | Before starting the configuration, you should make sure i3 or i3-gaps are installed on your system. If they are not, use your package manager or [[Special:myLanguage/Discover|Discover]] to install one of these two packages. | ||
===Configure i3=== <!--T:30--> | ====Configure i3==== <!--T:30--> | ||
<!--T:35--> | <!--T:35--> | ||
Line 127: | Line 56: | ||
<!--T:60--> | <!--T:60--> | ||
The following i3 window rules will help you with notifications and some other plasma windows: | The following i3 window rules will help you with notifications and some other plasma windows: | ||
{{Input|1=<nowiki>for_window [title="Desktop — Plasma"] kill | {{Input|1=<nowiki>for_window [title="Desktop — Plasma"] kill, floating enable, border none | ||
for_window [class="plasmashell"] floating enable | for_window [class="plasmashell"] floating enable | ||
for_window [class="Plasma"] floating enable | for_window [class="Plasma"] floating enable, border none | ||
for_window [title="plasma-desktop"] floating enable | for_window [title="plasma-desktop"] floating enable, border none | ||
for_window [title="win7"] floating enable | for_window [title="win7"] floating enable, border none | ||
for_window [class="krunner"] floating enable | for_window [class="krunner"] floating enable, border none | ||
for_window [class="Kmix"] floating enable | for_window [class="Kmix"] floating enable, border none | ||
for_window [class="Klipper"] floating enable | for_window [class="Klipper"] floating enable, border none | ||
for_window [class="Plasmoidviewer"] floating enable | for_window [class="Plasmoidviewer"] floating enable, border none | ||
for_window [class="(?i)*nextcloud*"] floating disable | for_window [class="(?i)*nextcloud*"] floating disable | ||
for_window [class="plasmashell" window_type="notification"] floating enable, border none, move right 700px, move down 450px | for_window [class="plasmashell" window_type="notification"] floating enable, border none, move right 700px, move down 450px | ||
no_focus [class="plasmashell" window_type="notification"] | |||
</nowiki>}} | </nowiki>}} | ||
Line 153: | Line 83: | ||
</nowiki>}} | </nowiki>}} | ||
===Configure Plasma=== <!--T:61--> | <!--T:74--> | ||
Notification positioning can be tricky, since not all notifications have the same size depending on their content. You can also use coordinates positioning, knowing your screen resolution. For example, for a 1920x1080 screen and notifications in the top-right corner we can use:{{Input|1=<nowiki> | |||
for_window [class="plasmashell" window_type="notification"] floating enable, border none, move position 1450px 20px | |||
</nowiki>}} | |||
<!--T:77--> | |||
If you want to unlock KWallet automatically on login, configure PAM and then add the following line to your i3 configuration file: | |||
{{Input|1=<nowiki>exec --no-startup-id /usr/lib/pam_kwallet_init | |||
</nowiki>}} | |||
====Configure Plasma==== <!--T:61--> | |||
<!--T:62--> | <!--T:62--> | ||
Line 161: | Line 101: | ||
To get the Plasma provided pager display desktops as i3bar, set '''Pager Settings''' > '''General''' > '''Text display''' to "Desktop name" | To get the Plasma provided pager display desktops as i3bar, set '''Pager Settings''' > '''General''' > '''Text display''' to "Desktop name" | ||
===Bspwm=== <!--T:36--> | |||
==Bspwm | |||
<!--T:37--> | <!--T:37--> |
Latest revision as of 12:09, 2 January 2023
Introduction
KWin is the default window manager (WM) in Plasma and has lot of features, but it only supports floating windows. Plasma lets you use another window manager, such as i3, bspwm or any other tilling window manager.
Most window managers require few, if any, changes to their configuration files.
Some considerations to be aware of when using another window manager:
- Tiling window managers may have problems with components like panels. For some configurations, certain options will help alleviate issues
- Most window managers do not have their own compositors, and therefore lack features like animations and transparency. If such effects are desired, a compositor is required - refer to Arch Wiki for options.
- Compositors can also help with screen tearing, however check first if you can resolve it with your video drivers, as this will be a more performant solution in most cases.
Set-up
To use a different window manager with Plasma, replace the systemd service for KWin with a new user unit for your preferred WM. A tutorial can be found in the ArchWiki.
Configuration
To make a non-standard WM work well with Plasma, some additional configuration may be required.
i3
Installation
Before starting the configuration, you should make sure i3 or i3-gaps are installed on your system. If they are not, use your package manager or Discover to install one of these two packages.
Configure i3
When you first start i3, its default global configuration (at /etc/i3/config
) will start i3-config-wizard, which will provide a dialog for Mod key selection and generate the user local configuration at ~/.i3/config
.
If you wish to maintain the same configuration across users (they can still override it with their own local config), remove the wizard invocation from the global configuration file and use it directly.
The following i3 window rules will help you with notifications and some other plasma windows:
for_window [title="Desktop — Plasma"] kill, floating enable, border none for_window [class="plasmashell"] floating enable for_window [class="Plasma"] floating enable, border none for_window [title="plasma-desktop"] floating enable, border none for_window [title="win7"] floating enable, border none for_window [class="krunner"] floating enable, border none for_window [class="Kmix"] floating enable, border none for_window [class="Klipper"] floating enable, border none for_window [class="Plasmoidviewer"] floating enable, border none for_window [class="(?i)*nextcloud*"] floating disable for_window [class="plasmashell" window_type="notification"] floating enable, border none, move right 700px, move down 450px no_focus [class="plasmashell" window_type="notification"]
If you are using a non-English installation of Plasma, you need to find out what the exact window title of the Desktop is. One way is to do this is with wmctrl -l
.
Instead of adding
for_window [title="Desktop — Plasma"] kill; floating enable; border none
add the name of the window to the i3 config. This example uses the German Plasma installation.
for_window [title="Arbeitsfläche — Plasma"] kill; floating enable; border none
Notification positioning can be tricky, since not all notifications have the same size depending on their content. You can also use coordinates positioning, knowing your screen resolution. For example, for a 1920x1080 screen and notifications in the top-right corner we can use:
for_window [class="plasmashell" window_type="notification"] floating enable, border none, move position 1450px 20px
If you want to unlock KWallet automatically on login, configure PAM and then add the following line to your i3 configuration file:
exec --no-startup-id /usr/lib/pam_kwallet_init
Configure Plasma
You may get into issues related with the "Activities" feature - activating it via keyboard shortcuts (some of which are also used by i3, like "Meta + Q") seems to make i3 unresponsive. Removing Activity related global shortcuts seems to resolve this.
To get the Plasma provided pager display desktops as i3bar, set Pager Settings > General > Text display to "Desktop name"
Bspwm
For the most part, bspwm requires little additional configuration.
- A single Plasma panel, in most cases, is detected properly and bspwm will not place windows in its space. If the panel ends up presenting a problem, or when using multiple panels, the following may be added to .bspwmrc
bspc config top_padding size
where size is the size of the panel in pixels. Also valid are bottom_padding, left_padding, and right_padding. As many of these directives may be used as necessary for multiple panels.
Hints and Tips
DBus
Since Meta key handling is in part performed by KWin, you will have to handle these shortcuts manually when you switch to a different window manager.
You can open some Plasma components with DBus commands. You can use this to map corresponding keybindings to DBus commands. To find a specific DBus command, you can look at dbus-monitor
or qdbusviewer
while you invoke the component in a standard Plasma set-up.
More info on meta key handling:
Some examples:
- Open Application Launcher
qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.activateLauncherMenu
- Open Krunner
qdbus org.kde.kglobalaccel /component/krunner org.kde.kglobalaccel.Component.invokeShortcut 'run command'
- Open logout confirmation screen
qdbus org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout -1 -1 -1
For i3, you can map a keybinding with the bindsym command. Use --no-startup-id
to prevent the command from generating "i3" entries in the task manager.
Example:
bindsym $mod+Shift+e exec --no-startup-id <command>
If you want to map the modifier key itself, use the bindcode command - you have to specify the keycode generated by the key, which you can get via the xev
utility.
Example for the Meta key:
bindcode 133 --release exec --no-startup-id <command>
For Bspwn, you need to use the bspc
program. See Arch Linux wiki for more information.
More Information
- Window managers (Wikipedia)
- Window managers (Arch Linux wiki)
- Desktop environment (Wikipedia)
- Desktop environment (Arch Linux wiki)