Giter VIP home page Giter VIP logo

krohnkite's Introduction

Kröhnkite

AUR-git

A dynamic tiling extension for KWin.

Kröhnkite is mainly inspired by dwm from suckless folks, and aims to provide rock solid stability while fully integrating into KWin.

The name of the script is from mineral Kröhnkite; it starts with K and looks cool.

screenshot

Features

  • DWM-like window tiling
    • Dynamically tile windows, rather than manually placing each.
    • Floating windows
  • Fully integrates into KWin features, including:
    • Multi-screen
    • Activities & Virtual desktop
    • Basic window management (minimize, fullscreen, switching, etc)
  • Multiple Layout Support
    • Tiling layout
    • Monocle layout
    • Desktop-friendly layouts (Spread, Stair)

Development Requirement

  • Typescript (tested w/ 3.1.x)
  • GNU Make
  • p7zip (7z)

Installation

You can install Kröhnkite in multiple ways.

Using .kwinscript package file

You can download krohnkite-x.x.kwinscript file, and install it through System Settings.

  1. Download the kwinscript file
  2. Open System Settings > Window Management > KWin Scripts
  3. Press Import KWin script... on the top-right corner
  4. Select the downloaded file

Alternatively, through command-line:

plasmapkg2 -t kwinscript -i krohnkite.kwinscript # installing new script
plasmapkg2 -t kwinscript -u krohnkite.kwinscript # upgrading existing script

To uninstall the package:

plasmapkg2 -t kwinscript -r krohnkite

Installing from Git repository

The simplest method would be:

make install
make uninstall # to uninstall the script

This will automatically build and install kwinscript package.

You can also manually build package file using:

make package

The generated package file can be imported from "KWin Script" dialog.

Simply Trying Out

Krohnkite can be temporarily loaded without installing the script:

make run
make stop

Note that Krohnkite can destroy itself completely once it is disabled, so no restart is required to deactivated it.

Enabling User-Configuration

It is reported that a manual step is required to enable user configuration of KWin scripts. This is a limitation of KWin scripting.

To enable configuration, you must perform the following in command-line:

mkdir -p ~/.local/share/kservices5/
ln -s ~/.local/share/kwin/scripts/krohnkite/metadata.desktop ~/.local/share/kservices5/krohnkite.desktop

A configuration button will appear in KWin Scripts in System Settings.

config button shown

To make changes effective, the script must be reactivated:

  1. On KWin Scripts dialog, untick Krohnkite
  2. Apply
  3. tick Krohnkite
  4. Apply

Default Key Bindings

Key Action
Meta + J Focus Down/Next
Meta + K Focus Up/Previous
Meta + H Left
Meta + L Right
Meta + Shift + J Move Down/Next
Meta + Shift + K Move Up/Previous
Meta + Shift + H Move Left
Meta + Shift + L Move Right
Meta + I Increase
Meta + D Decrease
Meta + F Toggle Floating
Meta + \ Cycle Layout
Meta + Return Set as Master
Meta + T Use Tile Layout
Meta + M Use Monocle Layout
unbound Use Spread Layout
unbound Use Stair Layout

Tips

Setting Up for Multi-Screen

Krohnkite supports multi-screen setup, but KWin has to be configured to unlock the full potential of the script.

  1. Enable Separate Screen Focus under Window Management > Window Behavior > Multiscreen Behaviour
  2. Bind keys for global shortcut Switch to Next/Previous Screen (Recommend: Meta + , / Meta + .)
  3. Bind keys for global shortcut Window to Next/Previous Screen (Recommend: Meta + < / Meta + >)

Note: Separate Screen Focus appears only when multiple monitors are present.

Removing Title Bars

Breeze window decoration can be configured to completely remove title bars from all windows:

  1. System Setting > Application Style > Window Decorations
  2. Click Configure Breeze inside the decoration preview.
  3. Window-Specific Overrides tab > Add button
  4. Enter the followings, and press Ok:
    • Regular expression to match: .*
    • Tick Hide window title bar

Changing Border Colors

Changing the border color makes it easier to identify current window. This is convinient if title bars are removed.

  1. Open ~/.config/kdeglobals with your favorite editor

  2. Scroll down and find [WM] section

  3. Append the followings to the section:

    • frame=61,174,233: set the border color of active window to RGB(61,174,233)
    • inactiveFrame=239,240,241: set the border color of inactive window to RGB(239,240,241)

    Here's a nice 2-liner that'll do it for you:

     kwriteconfig5 --file ~/.config/kdeglobals --group WM --key frame 61,174,233
     kwriteconfig5 --file ~/.config/kdeglobals --group WM --key inactiveFrame  239,240,241
    
  4. You must restart your session to see changes. (i.e. re-login, reboot)

Note: the RGB values presented here are for the default Breeze theme

Note: You might also need to set the border size larger than the theme's default: System Settings > Application Style > Window Decorations: Untick Use theme's default window border size and adjust the size (right from the checkbox).

Setting Minimum Geometry Size

Some applications like discord and KDE settings dont tile nicely as they have a minimum size requirement. This causes the applications to overlap with other applications. To mitigate this we can set minimum size for all windows to be 0.

  1. System Setting > Window Management > Window Rules
  2. Click on + Add New...
  3. Set Window class to be Unimportant
  4. Set Window types to Normal Window
  5. Click + Add Properties...
  6. Add the Minimum Size Property
  7. Set the fields to Force and 0 x 0
  8. Apply

Prevent borders and shadows from disappearing.

When a window is marked "maximized" in Breeze theme, its borders are removed to save screen space. This behavior may not be preferable depending on your setup. This can be mitigated by disabling maximized windows using Window Rules.

  1. System Setting > Window Management > Window Rules
  2. Click on + Add New...
  3. Set Window class to be Unimportant
  4. Set Window types to Normal Window
  5. Click + Add Properties...
  6. Add the Maximized horizontally and Maximized vertically Properties.
  7. Set the options to Force and No.
  8. Apply

Useful Development Resources

krohnkite's People

Contributors

abrac avatar env25 avatar esjeon avatar haukurpall avatar l1q avatar leononame avatar rdimaio avatar sayan01 avatar shocklateboy92 avatar wallace11 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

krohnkite's Issues

Wayland

Just a heads up:

I am using opensuse git kde with wayland. It seems with native wayland apps, windows don't tile at all.

I can see that if I do GDK_BACKEND=x11 and QT_QPA_PLATFORM=xcb, windows get tilled, but with GDK_BACKEND=wayland and QT_QPA_PLATFORM=wayland, they do not.

I don't think kde wayland is ready yet, so no big deal, but maybe something to look into the future ?

Thanks for your awesome work !

Resizing doesn't check for other windows' geometry restrictions.

Symptom
You can squeeze other window beyond their intended limits by resizing other windows

How to Reproduce

  1. Have two windows on screen in tiling mode: Cantata and System settings
  2. Try to make System settings window very-very narrow.
  3. It resizes to its minimum size but not the size you wanted
  4. Try to make Cantata window extra thicc.
  5. Cantata now occupies a lot of screen space, System settings window is very narrow.

Expected behavior
I think it should be configurable to either:

  • Always ignore windows' geometry restrictions
  • Always honour windows' geometry restrictions even when resizing other windows.

There could be conflicts when you have several windows that's impossible to fit on the screen given their restrictions, for such cases there should be options of resolution:

  • Honour active window size, force-resize others
  • Don't resize windows at all, treat them as if the are resized

Environment

  • Distro: Debian Testing/Unstable/Experimental
  • KWin version: 5.14.5
  • Krohnkite version: 7c0a863
  • List of KWin scripts in use: Krohnkite

Notes
Anything that you want to tell developers about.

KWin shortcuts is remove when plasma restart

Symptom
I use KDE, KWin shortcuts like Meta+1 activates task manager first window.
But after restart plasmashell, they don't work anymore.

How to Reproduce

  1. kquitapp5 plasmashell && kstart plasmashell
  2. Meta+1 not activates first window at task manager.

Expected behavior
It should be activated.

Environment

  • Distro: Ubuntu 19.04
  • KWin version: 5.16.3
  • Krohnkite version: 0.5
  • List of KWin scripts in use:

Notes
Anything that you want to tell developers about.

Problem moving windows to other screens

Symptom
Hi again,

After upgrading to latest master, I am unable to move windows between screens. It momentarily shows that it's moving and it's bouncing back.

How to Reproduce

  1. Use latest master
  2. Press key for "Window to next (or previous) screen" shortcut (I've set it to Meta+Shift+Right/Left)
  3. See the window stays in the screen instead of moving to other screen.

Expected behavior
Move window to other screen

Environment

  • Distro: Nixos 19.09
  • KWin version: 5.16.5
  • Krohnkite version: 577fc7f
  • List of KWin scripts in use:
    • Enforces Window Decorations on GTK+ window (< some system installed script, no idea)
    • krohnkite

Notes
Installed latest released version (0.5) and issue does not exist.

Maximize the window in "Monocle Layout"

Thanks for this awesome script!
Is it possible to add an option to automatically maximize the window when "Monocle Layout" is the current layout? Currently the maximize effect only works for the "Tile Layout".

Enabling User-Configuration: symlink instead of copy

As in the troubleshooting section of kwin-tiling, I think it would be better to advocate a symlink instead of copying the desktop file. Saves some odd troubleshooting in case the desktop file ever gets updated.

Suggested change:
ln -s ~/.local/share/kwin/scripts/krohnkite/metadata.desktop ~/.local/share/kservices5/krohnkite.desktop

The script works wonders, thanks a lot!

EDIT: Apparently I added the bug label. No idea how that came about or how to remove it. Excuse me!

Some weird stuff with kate app when using session chooser

Hi,

There is something weird happening when using kate with option to choose the session at startup.
The "choose session" window appears fine, non floated, since its a dialog window, but then when a session is choosen, the kate editor window doesn't appear.

Changing focus/minimizing/restoring the kate editor window makes it reappear.

If i open another window while kate editor window is hidden, a "windows solitaire effect appears". :)

Do you want me to make a video of it happening ?

Thanks !

[feature request] separate shortcuts for move focus, move border and move window

After testing many kwin scripts capable of tiling window, I find krohnkite is the most satisfying one for me, thank you for your marvelous code!

However, I found the shortcuts somewhat confusing.
I can use Meta + J and Meta + K for moving focus, but it seems that Meta + H and Meta + L are used for moving the border of the window (i.e. expanding or shrinking the currently focused window).
As a vi user, I am accustomed to using h j k l as directions, so what about changing the shortcuts(or make the settings customizable) as follows?

  1. move focus
    Meta + H: focus goes left
    Meta + J: focus goes down
    Meta + K: focus goes up
    Meta + L: focus goes right

  2. move border
    Meta + Shift + H: border goes left
    Meta + Shift + J: border goes down
    Meta + Shift + K: border goes up
    Meta + Shift + L: border goes right

  3. move window
    Meta + Ctrl + H: move window to left
    Meta + Ctrl + J: move window to down
    Meta + Ctrl + K: move window to up
    Meta + Ctrl + L: move window to right

By the way, a small question: can we control how a new window is placed(below or on the right of the exsiting window)? Thanks!

[feature request] Wayland support

I tried using Kröhnkite in Wayland, but without any success. The session starts, but if Kröhnkite is enabled at boot all I see is the frozen cursor on a black background and I have to shut the PC down.
The inability to use Kröhnkite is the only thing preventing me to switch to Wayland, as I could not even change the wm to a tiling one in it. It would be very nice of you to include support for Wayland, if it be possible.

Quarter tiling layout

Could you please consider adding a quarter tiling layout? If this is something that can be done with the current features, could you please guide me a bit? Thanks!

[feature request] Auto-minimize on monocle layout

Hi again,

I got used to the plugin and thanks again, working really good :)

One feature request could make the life faster:
Can we put an option under monocle layout which automatically minimizes all windows in the screen except the current one (which is already fullscreen)?
This way we can use "Switch to window ..." keybindings without popping up windows which are not visible.

Virtual desktop paging causes windows to be unresponsive

Hi! Big fan of krohnkite so far - thanks for making something so easy to use available for everyone!

I think I am experiencing a bug with it: When I switch virtual workspaces with my pager and then switch back, windows become unresponsive to interaction. The only thing I have found that works 100% of the time is to float the window with meta + f and then toggle float off again and all is good.

Any advice on how to fix this? Appreciate the help!

Monitor dependent options

Hi,

So, posting about that "left monitor -> right master and right monitor -> left master" question. Maybe there are set of options that could be handy to be dependent on monitor.

So apart from creating "set master to the right side on left monitor, and master on left side on right monitor", would you think that it could be handy to have different layouts per monitor ? or different gaps size ? ( where one monitor has a panel but the other doesn't ) ?

Thanks ! ( maybe enhancement and brainstorming labels here, maybe I am overcomplicating things here, its not really a major issue)

Krohnkite does not manage new windows

Symptom
After restarting the system yesterday, any window I open is floating. Hitting the usual "toggle float" shortcut does not do anything. Therefore I assume the newly started windows are somehow not "managed" by krohnkite. If I disable the script in "Kwin-Scripts" and enable it again, all currently opened windows become tiled and behave as expected (toggle float works). Any windows afterwards are again unaffected.

I reset the configuration. Reinstalled krohnkite. Rebooted the system. But nothing changed.

It seems to also affect the tiling scripts "Tiling Extension"

I can't remember installing any new packages or changing any settings. Pacman logs does not show anything either.

If I enable debugging in the krohnkite options and restart Kwin kwin_x11 --replace I see the following messages:

qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 2243, resource id: 144703533, major code: 18 (ChangeProperty), minor code: 0
kwin_core: Compositing is not possible
qt.qpa.xcb: QXcbConnection: XCB error: 3 (BadWindow), sequence: 2337, resource id: 144703536, major code: 3 (GetWindowAttributes), minor code: 0
qt.qpa.xcb: QXcbConnection: XCB error: 9 (BadDrawable), sequence: 2338, resource id: 144703536, major code: 14 (GetGeometry), minor code: 0

But I don't know if they are related. Opening any new windows does not produce new ouput.

How to Reproduce
Most likely won't work be reproducible.

Expected behavior
Windows being tiled (or controllable with the krohnkite shortcuts)

Environment

  • Distro: Manjaro
  • KWin version: 5.16.4
  • Krohnkite version: 5a7b64d
  • List of KWin scripts in use: "Enforce window decoration for GTK+ windows"

Notes
This is probably not a lot of information to work with, but maybe you have an idea where I could start looking or how to get more debug output.

An option to disable automatically setting 'keep below others' for tiled windows

First of all, thanks for making this. This is the first time I was able to swithch to using the tiling window management full time. Really well done!

The main issue I have with it is that it marks windows as 'keep below'. I understand this is a common behavior for tiling WMs, but I think it would be amazing if this was configurable.

Switching to Monocle layout crashes KWin

Symptom
Switching to Monocle layout crashes KWin.

How to Reproduce
Open two windows, press meta+m to switch to monocle layout.

Environment

  • Distro: Archlinux
  • KWin version: 5.15.4
  • Krohnkite version: 97b8028
  • List of KWin scripts in use: []

Windows opened with latte-dock WM_CLASS are not ignored

Symptom
When using latte-dock combined with Krohnkite the opened windows from latte-dock are not ignored, even when included in the ignore window class settings from Krohnkite.

How to Reproduce

  1. Install and launch latte-dock
  2. Add the latte-dock WM_CLASS to the ignore window class exceptions and Latte Settings to the ignore window title exceptions and reload the script
  3. Right click the latte-dock and select Add Widget, then drag System Tray onto the latte-dock.
  4. Click the network icon in the latte-dock System Tray and you will get a Network window that is not ignored by Krohnkite despite the WM_CLASS being ignored.
    dock network settings

Expected behavior
The network settings window should be ignored and floating above the other windows.

Environment

  • Distro: [e.g. Manjaro KDE Plasma]
  • KWin version: [5.15.3-1]
  • Krohnkite version: [v0.4]
  • List of KWin scripts in use: [MinimizeAll]

Notes
The problem is for all windows opened from latte-dock, so battery, sound settings, app launcher etc.

In the Krohnkite settings I have for ignored window classes:
krunner,yakuake,spectacle,kded5,latte-dock
And ignored window titles:
JetBrains Toolbox,Friends ListString, SharedKey,GLava,Latte Settings

The output of xprop for the network settings window opened from latte-dock is (I stripped out the ascii_icons for readability):

_NET_WM_DESKTOP(CARDINAL) = 0
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_KDE_NET_WM_ACTIVITIES(STRING) = "00000000-0000-0000-0000-000000000000"
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE
_NET_WM_USER_TIME(CARDINAL) = 1191245
_KDE_NET_WM_SHADOW(CARDINAL) = 54545994, 54546000, 54546001, 54546002, 54546003, 54546004, 54546005, 54546006, 1, 10, 10, 10
_KDE_NET_WM_BLUR_BEHIND_REGION(CARDINAL) = 1, 0, 1532, 686, 2, 686, 1530, 1, 3, 687, 1528, 1
_KDE_SLIDE(_KDE_SLIDE) = 0xffffffff, 0x1
_NET_WM_STATE(ATOM) = _NET_WM_STATE_BELOW, _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_SKIP_PAGER
_KDE_NET_WM_DESKTOP_FILE(UTF8_STRING) = "latte-dock"
XdndAware(ATOM) = BITMAP
WM_NAME(STRING) = 
_NET_WM_NAME(UTF8_STRING) = "Latte Dock"
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x1, 0x0, 0x0, 0x0
_NET_WM_WINDOW_TYPE(ATOM) = _KDE_NET_WM_WINDOW_TYPE_OVERRIDE, _NET_WM_WINDOW_TYPE_NORMAL
_XEMBED_INFO(_XEMBED_INFO) = 0x0, 0x1
WM_CLIENT_LEADER(WINDOW): window id # 0x3400012
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: True
                window id # of group leader: 0x3400012
WM_CLIENT_MACHINE(STRING) = "jim-laptop"
_NET_WM_PID(CARDINAL) = 1563
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 54526008
WM_CLASS(STRING) = "latte-dock", "lattedock"
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                user specified location: 1906, 31
                user specified size: 1534 by 1389
                program specified minimum size: 452 by 398
                program specified maximum size: 3440 by 1409
                window gravity: Static

Layouts specific shortcut

Hi,

Is it possible to have key shortcuts to specific layouts, instead of cycling through them ?

Thanks !

Ignore windows types: dialog windows

Hi,

Could this script have an option to automatically ignore/set as floating by default windows of type: dialog ?

Swaywm for example, does this by default ( dialog windows don't get tiled ).

Thanks !

Plasma freezing

First of all I would like to thank you for the plugin, it's amazing.

Symptom
I'm experiencing freezing in plasma/kwin when I activate Krohnkite since 1 or 2 last updates of plasma/kwin in opensuse. It mainly occurs when opening Franz or creating a new virtualbox virtual machine, but also happened when using only chrome to watch youtube (have not tried other programs).

How to Reproduce VirtualBox

  1. Open VirtualBox 5.22.22.
  2. Click in New.
  3. After giving a name for the virtual machine the plasma/kwin freezes.

How to Reproduce Franz

  1. Open Franz (with WhatsApp and Messenger services).
  2. After it loads plasma/kwin freezes.

Expected behavior
There should not be any freeze.

Environment

  • Distro: openSUSE Tumbleweed (2019-01-26, Linux 4.20.2-1)
  • KWin version: 5.14.5
  • Krohnkite version: 0.3 (but also occurs on 0.2, have not tried 0.1)
  • List of KWin scripts in use: Enforces Window Decorations GTK+ window and Krohnkite

Notes
I can upload the logs if you say which one you need.

Disconnecting external monitor(s) crashes KWin when there are windows present

Symptom
KWin crashes when disconnecting a monitor, plasma panel is sometimes displaced as a consequence.

How to Reproduce

  1. Run krohnkite with multi-display setup.
  2. Disconnect monitor
  3. See "Sorry KWin crashed"

Expected behavior
No KWin crashes

Environment

  • Distro: Debian testing + unstable/experimental
  • KWin version: 5.14.5
  • Krohnkite version: 530ca22
  • List of KWin scripts in use: Krohnkite, "Enforces Window Decorations on GTK+ window"

Notes
Haven't tested on latest commit yet and no logs just yet. Crashes only when screen is removed, connecting another screen works fine. Only crashes when there are windows present on screen removed, windows on remaining screen seem to be moved relatively to old offsets (removed screen was above remaining, all windows on remaining screen are moved to the very bottom until you try resizing them)

Resizing non-master window

Do you plan to implement resizing non-master windows in the Tile layout? For example, when I have the master window on the left side and two terminals on the right side, I would sometimes like to make one of those terminals taller.

Gaps between tiles (pixels)

Hi,

Using latest git version and with setting "Gaps between tiles (pixels)" to something other than 0, when a single window is opened, creates a gap in the right side of the window ( in the right side of the monitor ).
Opening another window fixes it, ( the gap appears in the middle and not on the sides of the monitor ).

Could this right side empty pixels/gap disappear when only one window ?

Thanks !

Auto Titlebar and border size

Hi,

Thanks for all your work :)

What do you think of the idea of instead of creating a rule for windows not have titlebar, the specific workflow:

  • If window is tiling -> remove titlebar and borders ( set to no borders )
  • If window is floating -> keep titlebar and borders as configured ( don't change title and borders ).

This makes floating windows look much better and also a very quick distinction between is tiled vs is floating.

Thanks ! :)

Gap incorrectly changes its size

Symptom
When tiling layout is enabled and there are more than 2 windows in a column, the bottom gap needlessly changes its size.
Edit: Left and right gaps are also affected.

How to Reproduce

  1. Launch more than 2 windows.
  2. Arrange them in a column.
  3. The bottom (also: left and right) gap between the screen edge and a window increases and decreases its size when adding or minimizing windows.

Expected behavior
The gap size should remain constant.

Environment

  • Distro: Manjaro
  • KWin version: 5.14.5
  • Krohnkite version: latest commit: 4673135
  • List of KWin scripts in use: MinimizeAll

Notes
Video of the bug: https://streamable.com/ytsyz
Another one: https://streamable.com/yra3p

Separate layouts per desktop/activity

I often have my windows arranged in a specific layout (e.g. different width of the master window) on each virtual desktop/activity. Is it be possible to keep a separate layout for those?

how to ignore tilix --quake, its role is quake, cannot ignore by class

Symptom
I use tilix quake mode, but cannot ignore it be tiled.

How to Reproduce

  1. set mode as tile mode
  2. call tilix --quake

Expected behavior

Environment

  • Distro: Ubuntu 19.04
  • KWin version: 5.16.1
  • Krohnkite version: [e.g. 0.1, git commit]
  • List of KWin scripts in use: just this

Notes

Window placement options

I know this is a hard one, but having a window-specific setting like this:

like this

would be great. This way one can setup rules like "if the window class is konsole, width should be %50 of the screen" and/or "set it to master automatically" kind of setups which has endless possibilities.

Again, thanks for the extension.

Increase/decrease problem

Symptom
When trying to "decrease" a window, it is sometimes not possible right away. This happens for example after you try to "increase" a window multiple times, but it no longer has an effect on the window.

How to Reproduce

  1. Launch some windows in tiling mode.
  2. Keep "increasing" a window until it has no effect.
  3. Try to "increase" the window a few more times (N).
  4. Try to "decrease" the window once – not working. You need to "decrease" it N times to observe an effect.

Expected behavior
Decreasing windows works instantaneously regardless of the number of previous failed attempts to increase.

Environment

  • Distro: Manjaro
  • KWin version: 5.14.5
  • Krohnkite version: latest commit: 4673135
  • List of KWin scripts in use: MinimizeAll

Notes
It's working correctly the other way around (decrease multiple times with no effect -> increase only once).

Allow screen gaps to be specific

Hi,

Is it possible to configure specific gaps for screen sides ?

Something like top : 32px gap, but bottom and sides other size gap ?

Thanks :)

Setting "master" window on primary display breaks multi-screen switching


Bug Report
Multi-Monitor Functionality


Symptom
I have started to experience this bug after updating from last weeks release. It seems after debugging for about an hour, that when a window is set as "master" on the Primary Screen it breaks all kwin screen switching commands for that window. Both my "Window to Desktop #" and "Window to Previous/Next Screen" are completely disabled until a new window is set to "master" on that desktop. The window remains locked even after floating the window. This also entirely destroys any desktops that only have one window active or are layered windows like the "Spread Layout". Additionally, master window behavior does not seem to be reset by a kwin_x11 --replace and remains bugged permanently on any desktop instance on that screen (IE Virtual Desktop 3 and Virtual Desktop 4 on screen 0).

How to Reproduce
Multi-Monitor required

  1. Fresh boot followed by a kwin_x11 --replace
  2. Set a master window on your Primary Screen then attempt to move it with either "Window to Desktop #" or "Window to Previous/Next Screen"
  3. Set a new master window on the Primary Screen and notice that the previously locked window is now free to move across screens while the new window is locked
    .

Expected behavior
Oddly enough snaping windows into new screens with the mouse still works. Just expecting that next and previous screen keys will move my windows.

Environment
OS: Arch Linux x86_64
Host: XPS 15 9560
Kernel: 4.14.88-1-lts
Kwin: 5.14.4-2
Typescript: 3.1.6-1
Resolution: 2560x1440, 2560x1440, 2560x1440
WM Theme: breezeblurred
Krohnkite version: version 0.1, commit= 8023304
KWin scripts in use: Kronhnkite

Notes
I absolutely love the script so far but multi-screen support is my number one priority for any window manager. Unfortunately, due to this bug I have had to disable Kronhnkite on both my Desktop and Laptop since I use multi-screen 80% of the time and it massively disrupts my workflow. If I can be of any assistance debugging this please feel free to ask.

Many Thanks,
Justin

pkg/contents/code/script.js file is missing

Trying to run make (with any option) will result in an error:
make: *** [Makefile:44: pkg/contents/code/script.js] Error 127

Checking the source code, I can't find that file anywhere. Maybe forgot to add it to the repo?

Ignore Screens/Activities

Thank you very much for your work and this nice extension!

I would like to ask if it would be possible to have an option to ignore certain screens and/or certain activities?

And maybe also to use (parts) of the window title caption to decide if a window should be ignored and/or by the name of the executable?

For reference, I have seen and used these features in the quarter-tiling-extension.
grafik

[Feature request] Additional layouts

I have a monitor that's set in portrait, and although the default tiling layout works well for monitors in landscape mode, it makes the windows a bit too narrow in portrait mode, and having the master location at the top would solve that issue. It would also be handy to have mirrored versions where the masters are on the right/bottom instead of the left/top

For now I'm able to get by with increasing/decreasing the number of masters until it's more or less a vertical layout, but I then encounter #27 and am unable to resize any windows

Issue with minimizing "master" window with 2 monitors

Hi,

I have two monitors. When I open two windows on monitor 1 ( and have monitor 2 empty ) in tiled mode ( windows become side by side ), and I minimize the master window, the "other" window turns full window size on monitor 2, not monitor 1.

So, hoping that its clear, when I minimize master window on monitor 1, the other window will move to the other monitor. Note that this, during my testing, only happens when having only two windows ( the other monitor can be empty or not ).

Thanks for the awesome script, have been using it for days now !

Vertical and horizontal gaps between tiles are not the same

Horizontal gap between windows is exactly the half of vertical one. In the screenshot, I set the gap between tiles to be 60px; among tiles 2 and 3 there are 60px, whereas between 1 and 2/3 there are only 30px of space (measured with KRuler).
I know it's a minor issue, but still quite strange visually IMHO.

key bindings not working

I'm sorry if it is the wrong place to ask this, but I cannot find any sort of manual on how to use krohnkite...
I'm a newbie but wanted really bad to test a tiling wm so I installed it: flawless, I like it very much (Fedora KDE here).
My problem is that I cannot find a way to use the key bindings: none works.
It is possible that I do not understand which the META key is, but I tried both Alt and Ctrl...

can somebody suggest me something?

Thanks!

build failure

src/engine/window.ts(54,48): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Boolean' has no compatible call signatures.
src/engine/window.ts(55,49): error TS2349: Cannot invoke an expression whose type lacks a call signature. Type 'Boolean' has no compatible call signatures.
make: *** [Makefile:48: pkg/contents/code/script.js] Error 2

Tile layout focus shift

Hi and thanks for this extension, working really solid compared to others.

I'd like to ask if there is a way to switch between windows on tile layout, other than alt-tab. It'd be great if customizable shortcuts for "Focus left"/"Focus down" etc.
Not sure if possible, but one can be a lot faster if he/she can set similar meta-shortcuts and travel between windows selectively (like tmux pane navigation).

[feature request/idea] swap tiled windows by dragging

Just an idea, close if you think it's a bad one since the argument is based on what I feel.

This is a really useful feature I saw on other tiling implementations.

When I drag windows around my muscle memory expects the windows to swap places instead of setting it as float, which is an action I almost never have to do this way since you can pre-configure floating applications or simply use the hotkey.

It's a really intuitive way to quickly organize the layout, mainly in situations where you already are using the mouse a lot.

`BorderlessMaximizedWindows=true` in kwinrc causes krohnkite to overload and freeze kwin

Symptom
At some point and some conditions, krohnkite seemingly enters endless loop causing kwin to freeze and system nearly unresponsive. xorg starts eating a lot of CPU, with kwin taking second place.

How to Reproduce

  1. Install and enable script
  2. Try to do something
  3. System freezes, you have to Ctrl-Alt-F_ to TTY to kill kwin.

Kwin logs show spam something like this:

qml: [23.602] onWindowGeometryChanged: window=Window(KWin(4e00001.skype))
qml: [23.603] onWindowGeometryChanged: window=Window(KWin(4e00001.skype))
qml: [23.603] onWindowGeometryChanged: window=Window(KWin(4e00001.skype))
qml: [23.603] onWindowGeometryChanged: window=Window(KWin(4e00001.skype))
qml: [23.603] onWindowGeometryChanged: window=Window(KWin(4e00001.skype))
qml: [23.603] onWindowGeometryChanged: window=Window(KWin(4e00001.skype))
qml: [23.603] onWindowGeometryChanged: window=Window(KWin(4e00001.skype))
qml: [23.604] onWindowGeometryChanged: window=Window(KWin(4e00001.skype))
qml: [23.604] setTimeout/callback: poolSize=1

Application could be different, previous time it was quassel.

Expected behavior
No freezes

Environment

  • Distro: Debian Testing/Unstable/Experimental
  • KWin version: 5.14.5-1
  • Krohnkite version: 86e3145
  • List of KWin scripts in use: Krohnkite

Notes
krohnkite config:

qml: KROHNKITE: starting the script
qml: [0] Config: Config({
  "enableMonocleLayout": true,
  "enableQuarterLayout": true,
  "enableSpreadLayout": false,
  "enableStairLayout": false,
  "enableTileLayout": true,
  "maximizeSoleTile": true,
  "monocleMaximize": true,
  "mouseAdjustLayout": true,
  "noTileBorder": true,
  "screenGapBottom": 0,
  "screenGapLeft": 0,
  "screenGapRight": 0,
  "screenGapTop": 0,
  "tileLayoutGap": 0,
  "layoutPerActivity": true,
  "layoutPerDesktop": true,
  "floatUtility": true,
  "floatingClass": [
    "keepassxc"
  ],
  "floatingTitle": [],
  "ignoreActivity": [],
  "ignoreClass": [
    "krunner",
    "yakuake",
    "spectacle",
    "kded5",
    "steam",
    "plasmashell"
  ],
  "ignoreScreen": [],
  "ignoreTitle": []
})

i have BorderlessMaximizedWindows=true in kwinrc

Windows freeze on startup

Hello!

I've been using Krohnkite for a few days and while the functionality is good, the windows freeze / go unresponsive in the following cases:

  • startup is frozen
  • changing virtual desktops (workspaces)
  • opening another program causes the previous one to freeze
  • changing focus from one to the other causes the previous one to freeze

I do have the jiggle option set but it takes multiple to-and-fro(s) for the window to unfreeze.

EXCEPTIONS

Ok... so you really need to exclude stuff like yakuake, conky and alike. Those need to be floating. Same goes for small windows that should not be tiled such as about pages, dialogs and such.

Shrink/Grow Height/Width not working

Symptom
I am not sure I understand what those shortcuts do. Are they supposed to be used for master window, slaves, floating windows?

How to reproduce - not sure (I just installed the script today from git)
The shortcuts do nothing across the board. In this scenario I thought to simply stop sxkhd and try again, yet nothing. Then I thought to open konsole and invoke the shortcut with qdbus, still nothing. I also decided to test if just using the script with make run will say anything, yet nothing.

qdbus org.kde.kglobalaccel /component/kwin org.kde.kglobalaccel.Component.invokeShortcut'Krohnkite: Grow Height'

Expected behavior
Anything really.

Environment
Operating System: KDE neon 5.16
KDE Plasma Version: 5.16.0
KDE Frameworks Version: 5.59.0
Qt Version: 5.12.3
Kernel Version: 4.15.0-51-generic
OS Type: 64-bit
kwin 5.16.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.