All Projects → lingtjien → Grid Tiling Kwin

lingtjien / Grid Tiling Kwin

Licence: gpl-3.0
A kwin script that automatically tiles windows

Programming Languages

javascript
184084 projects - #8 most used programming language

Labels

Projects that are alternatives of or similar to Grid Tiling Kwin

Com.nerdyweekly.animated
Animated GIF wallpaper for KDE Plasma 5
Stars: ✭ 105 (-85.73%)
Mutual labels:  plasma, qml
Dotfiles
i3 + Plasma: using the i3 window manager on the top of KDE Plasma and other dotfiles, configurations, scripts, workarounds and practises from my Debian Sid machines.
Stars: ✭ 651 (-11.55%)
Mutual labels:  plasma
Pegasus Frontend
A cross platform, customizable graphical frontend for launching emulators and managing your game collection.
Stars: ✭ 364 (-50.54%)
Mutual labels:  qml
Qlcplus
Q Light Controller Plus
Stars: ✭ 467 (-36.55%)
Mutual labels:  qml
Mystiq
Qt5/C++ FFmpeg Media Converter
Stars: ✭ 393 (-46.6%)
Mutual labels:  qml
Taoquick
a cool QtQuick/qml component library and demo(一套酷炫的QtQuick/Qml基础库和示例)
Stars: ✭ 481 (-34.65%)
Mutual labels:  qml
Materia Kde
Materia KDE customization
Stars: ✭ 333 (-54.76%)
Mutual labels:  qml
Monero Gui
Monero: the secure, private, untraceable cryptocurrency
Stars: ✭ 688 (-6.52%)
Mutual labels:  qml
Quickqanava
C++14 network/graph visualization library / Qt node editor.
Stars: ✭ 611 (-16.98%)
Mutual labels:  qml
Qtquickexample
基于QtQuick的入门例子,方便大家入门学习
Stars: ✭ 457 (-37.91%)
Mutual labels:  qml
Picongpu
Particle-in-Cell Simulations for the Exascale Era ✨
Stars: ✭ 452 (-38.59%)
Mutual labels:  plasma
Moonplayer
Video player that can play online videos from youtube, bilibili etc.
Stars: ✭ 399 (-45.79%)
Mutual labels:  qml
Fluid
📖 Library for QtQuick apps with Material Design
Stars: ✭ 601 (-18.34%)
Mutual labels:  qml
Quartz
Vulkan RTX path tracer with a declarative ES7-like scene description language.
Stars: ✭ 367 (-50.14%)
Mutual labels:  qml
Qtquickexamples
QtQuick相关的技术分享
Stars: ✭ 657 (-10.73%)
Mutual labels:  qml
Qml Bootstrap
Sweet Qml components inspired from Ionic framework style for mobile and desktop Qt/Qml projects
Stars: ✭ 348 (-52.72%)
Mutual labels:  qml
Toou 2d
基于Qt Quick(Qml) 跨平台技术打造的2D框架
Stars: ✭ 413 (-43.89%)
Mutual labels:  qml
Yubioath Desktop
Yubico Authenticator for Desktop (Windows, macOS and Linux)
Stars: ✭ 472 (-35.87%)
Mutual labels:  qml
Qmlweb
A QML engine in a web browser. Current state: fixing things…
Stars: ✭ 703 (-4.48%)
Mutual labels:  qml
Scihubeva
A Cross Platform Sci-Hub GUI Application
Stars: ✭ 683 (-7.2%)
Mutual labels:  qml

Kwin Grid-Tiling Script

Install

Note: *path* is the path to this repository.

Normal Installation

kpackagetool5 --type KWin/Script -i *path*
mkdir -p ~/.local/share/kservices5
cd ~/.local/share/kservices5
ln -s *path*/metadata.desktop kwin-script-grid-tiling.desktop

Local Installation (Advanced)

mkdir -p ~/.local/share/kwin/scripts/grid-tiling
cd ~/.local/share/kwin/scripts/grid-tiling
ln -s *path*/contents contents
ln -s *path*/metadata.desktop metadata.desktop
mkdir -p ~/.local/share/kservices5
cd ~/.local/share/kservices5
ln -s *path*/metadata.desktop kwin-script-grid-tiling.desktop

Note: You can replace ln -s for cp, if you prefer to copy and not have it linked to your cloned repository (if you do this then you're pretty much manually doing what kpackagetool5 does), using ln instead of cp will result in an automatic update when you pull the latest changes

System Installation

replace ~/.local/share for /usr/share in Local Installation (Advanced) Method

Uninstall

Delete the linked or copied files that you created during installation. To remove installed scripts by kpackagetool5, run the same command again but this time with -r instead of -i to remove (see manual of kpackagetool5 for more info)

Functionality

  • automatically tile clients, up to any custom grid size per desktop and per screen
    • new clients are first attempted to be added the current desktop and screen, to the column with the most amount of space left
    • the size of the grid (row & column) is supplied in the UI seperated by a comma for every virtual desktop and every screen has it's own list
    • you must supply a grid for every virtual desktop and screen, that you have and plan to have (20 virtual desktops and 10 screens max)
  • restriction of minimum space a client can occupy on a virtual desktop, as in the amount of clients this client can share a virtual desktop with
    • a size of 1 is the largest and fully takes up a whole virtual desktop, size of 2 means that it takes up at least half of the virtual desktop and so forth...
    • matching is done by regex and it defaults to the maximum which is the number of rows multiplied by columns of the largest grid
  • move clients between virtual desktops (supports the default KWin shortcuts). Grid-Tiling: Move *Next/Previous* Desktop/Screen moves the client to the next desktop or screen that has space, prioritizes screen over desktop.
  • swap clients within a virtual desktop by dragging them on top with most overlap
  • move clients within a virtual desktop, first attempts to move the client if that fails it will fallback to switching.
    • Grid-Tiling: Swap *Up/Down*
    • Grid-Tiling: Move/Swap *Left/Right*
  • dynamically resize clients up to a minimum as defined by dividerBound
    • dragging client borders by mouse
    • Grid-Tiling: *Increase/Decrease* Size using a step size of dividerStep
  • minimization of clients (suppports the default KWin shortcuts)
  • minimizes all other clients or unminimizes all clients on the current desktop Grid-Tiling: Toggle Minimize Desktop
  • toggle gap Grid-Tiling: Toggle Gap
  • toggle between bordered clients Grid-Tiling: Toggle Border
  • dynamically float and tile clients Grid-Tiling: Tile/Float
  • toggle new clients start as tile or float Grid-Tiling: Toggle Tile
  • close all clients on the current virtual desktop Grid-Tiling: Close Desktop
  • set margins, gap size, default gap state, default tile state, default border state
  • ignore clients by name or caption regex, these clients are completely ignored and can't be tiled.

Note: ignored client names do not have to match the whole string, whereas ignored captions do.

Recommended Setup

  • set window focus policy to focus follows mouse - mouse precedence

  • set shortcuts Switch One Desktop *Left/Up/Down/Right* to Meta+*Left/Up/Down/Right*

  • set shortcuts Grid-Tiling: Swap *Up/Down* to Meta+Ctrl+*Up/Down*

  • set shortcuts Grid-Tiling: Move/Swap *Left/Right* to Meta+Ctrl+*Left/Right*

  • set shortcuts Switch To Window *Left/Up/Down/Right* to Meta+Alt+*Left/Up/Down/Right*

  • set shortcuts Grid-Tiling: Move *Previous/Next* Desktop to Meta+*Home/End*

  • set shortcuts Window One Desktop *Down/Up* to Meta+*PgDn/PgUp*

  • set shortcut Grid-Tiling: Toggle Minimize Desktop to Meta+M

  • set shortcut Minimize Window to Meta+N

  • set shortcut Grid-Tiling: Increase Step to Meta+=

  • set shortcut Grid-Tiling: Decrease Step to Meta+-

  • set shortcut Grid-Tiling: Increase Max to Meta++

  • set shortcut Grid-Tiling: Decrease Max to Meta+_

  • set shortcut Grid-Tiling: Toggle Gap to Meta+G

  • set shortcut Grid-Tiling: Toggle Border to Meta+B

  • set shortcut Grid-Tiling: Toggle Tile to Meta+Shift+T

  • set shortcut Grid-Tiling: Tile/Float to Meta+T

  • set shortcut Grid-Tiling: Close Desktop to Meta+Q

  • set shortcut Close Window to Meta+W

  • set shortcut Grid-Tiling: Refresh to Meta+R

If you use multiple screens you could also consider using the default shortcuts of KWin Window To *Previous/Next* *Screen* to Meta+*PgDn/PgUp* to easily move clients between screens

Useful To Know

  • This version of the script uses KWin API methods introduced in 5.18, so use the other branch if you use an older version of KWin.
  • After installing a KWin script you can activate it in the system settings, here you'll also find the configuration button.
  • When you adjust the settings in the menu, this script needs to be restarted before the settings are applied. You can do this by turning the script off, apply, turn it back on and apply again or a complete KWin restart (re-log/reboot).
  • If you have KWin shortcuts added by the script that you no longer need or use (because they got renamed to something else for example), then you can delete the old unused shortcuts by first selecting KWin in the global shortcuts menu and then pressing the remove the selected component button (hover mouse over the button to see the text). This action does require you to not have the KWin script active.
  • Resizing clients with the mouse can result in weird visual artifacts when dragged outside of the bounds, just use the global shortcut that refreshes the layout.
  • This was made with the intended use of using a set amount of virtual desktops. For the best result make sure you have more virtual desktops than you have clients normally. The script can handle more clients but once all desktops are full, all new clients will start as floating instead of tiling until there is space again to tile new clients.
  • I don't use dynamic virtual desktops, but it should be able to deal with it as long as the clients are closed when the virtual desktop is removed.

Extra Settings Info

These are settings that you can adjust in KWin which are unrelated to this script.

Change Window Action Modifier Key

  1. System Settings
  2. Window Management
  3. Window Behavior
  4. Window Actions
  5. Modifier Key

Changing Client Border Size

  1. System Settings
  2. Application Style
  3. Window Decorations
  4. select Border size

Hiding Client Title Bars

  1. System Settings
  2. Application Style
  3. Window Decorations
  4. Your Theme
  5. Window Specific Overrides
  6. Add
  7. check Hide window title bar
  8. Regular expression to match = .*

Disable geometry memory

  1. window management
  2. window behavior
  3. advanced
  4. uncheck Allow KDE apps to remember the positions of their own windows
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].