/Mudeer

KDE Plasma Screen Splitting Shortcuts ideal for Ultrawide and Super-Ultrawide Monitors

Primary LanguageJavaScriptMIT LicenseMIT

Mudeer - KDE Plasma Tiling Manager for Ultrawide and Super Ultrawide monitors

Features

  • Split monitor by into tiles of halves, quarters or thirds, horirzontally or vertically
  • Configurable width increase for the middle window when split by thirds
  • Configurable gap between windows
  • Allows windows to fullscreen onto a portion of the screen
  • Soft tiling, allows for tiling and floating windows
  • Properly handles horizontal and vertical screen orientations

Examples

Tiling Examples

https://github.com/darkstego/Mudeer/blob/media/mudeer.gif

Quickly Organize Windows

https://github.com/darkstego/Mudeer/blob/media/organize.gif

Mimic Dual Screen by Tiling Fullscreen to occupy half the monitor

https://github.com/darkstego/Mudeer/blob/media/fs.gif

Changelog

v4

  • Enable sequential button presses to tile vertically by thirds and quarters

v3

  • Switch to prefix keys for fullscreen mode to allow fullscreen application of any size
  • Support Vertical screens

Installation

KDE Store (Through Systemsettings)

Under SystemSettings -> Kwin Scripts, you can search for and install Mudeer.

Manual

git clone https://github.com/darkstego/Mudeer.git
cd Mudeer && make install

Configuration

Configuration is done through KDE’s Kwin Script Configuration. Find Mudeer under System Settings -> Kwin Scripts and there will be an options button.

When changing the options you need to disable then enable the script for the changes to take effect. I think this is a quirk in KDE scripts.

Shortcuts

All Tiling is done with shortcut keys. The default shortcuts allow any tiling combination using 8 keys and the modifier keys. These are best explained through the diagram below.

https://github.com/darkstego/Mudeer/blob/media/Mudeer-shortcuts-simple.png

To tile simply hold the Win (or Super/Meta) key while pressing the corresponding button. The modifiers can be used to tile to the top or bottom half or (Shift) to increase the tile’s size to encompass the neighboring tiling spots.

Why these shortcut choices?

The default shortcuts were designed to be able to quickly move windows around without the need to drag windows around. They were designed to to follow a logical pattern, so even if you don’t use some of the shortcuts you can quickly remember which button tiles to which location. By picking these shortcut buttons, however, some of these shortcuts will not be enabled unless they are enabled manually through the KDE shortcut menu. This happens when some of those shortcuts overwrite others in KDE.

What if I don’t like these shortcut

These shortcuts are just choices I felt would work well, and provide the most flexibilty given a small number of keys. You are free to change them or, if you don’t need all the shortcuts, to disable some and only use the shortcuts you need.

You can see all the shortcuts for this project by searching the global shortcuts settings menu for “mudeer”.

What if I want to tile vertically into segments smaller than half?

You can use sequential tiling. First enable it from the configuration menu, then you can press two shortcuts in quick succession to first tile horizontally and then vertically. This allows for tiling vertically by thirds and quarters.

Vertical (Portrait) Monitors

When the monitor is in the Vertical orientation then the segementation (quarters and thirds) occur top to bottom instead of left to right maximizing the resolution of the splts along the long edge of the screen. In this orientation the CTRL and ALT modifier keys restricts the windows to the left and right portion of the screen respectively.

Prefix keys

There are three prefix keys that can be used to modify the next tile you select with a shortcut.

Gapless

This removes the gap from the next tile, even when gap is configured. Useful when playing a video in a tile.

Fullscreen

This option allows the tile to cover any panel or dock. Useful for games or videos. This can be used to replicate the behaviour of multiple screens dynamically.

Fullscreen show panel

When using the the fullscreen prefix, the tiling will split the entire screen area, and not just the workable area (the area left after ignoring the panel). That means each tile will have a slightly different size and position compared do the regulart tiling, which makes mixing fullscreen and non-fullscreen tiles a bit difficult. Especially when the panel resides on the sides. This option allows tilling windows next to fullscreen windows, while still keeping the panel visible.

Shortcut Summary

Below is the list of default shortcuts. Again, Meta in KDE is the Win (or Super) key.

ShortcutDefault Binding
WholeMeta+f
Left ThirdMeta+a
Center ThirdMeta+s
Right ThirdMeta+d
Left Two ThirdsMeta+Shift+a
Right Two ThirdsMeta+Shift+d
Far Left QuarterMeta+z
Center Left QuarterMeta+x
Center Right QuarterMeta+c
Far Right QuarterMeta+v
Left HalfMeta+Shift+z
Left Three QuartersMeta+Shift+x
Center HalfMeta+Shift+s
Right Three QuartersMeta+Shift+c
Right HalfMeta+Shift+v
Top half modifierCtrl+
Bottom half modifierAlt+
Gapless PrefixMeta+Shift+f
Fullscreen PrefixMeta+Ctrl+Shift+f
Fullscreen Prefix avoiding PanelsMeta+Alt+Shift+f

Standard Shortcuts

https://github.com/darkstego/Mudeer/blob/media/Mudeer-shortcuts.png

Recommendations for Non-Ultrawide Monitors

For users of Non Ultrawide Monitors this script can be utilized by only mapping shortcuts for the left and right half tiling (and their top/bottom alternatives). This is functionally similar to KDE’s own Quick Tile option with the added flexibility of having an adjustable gap between the windows.

Troubleshooting

No configuration menus

Users on Plasma versions <5.23 check the following fix to get configuration menus to work.

Configuration option changes not having any affect

Disable and then re-enable the script to get it the settings to register.

Some of the shortcuts don’t work

There might be a collision with existing KDE shortcuts. Try to search for the buttons in the shorcut menu in systemsettings to find the collision.

Feedback

I would really like to know what people like and dislike about this project. Please provide feedback here.