Giter Club home page Giter Club logo

krohnkite's Introduction

Kröhnkite

A dynamic tiling extension for KWin 6.

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)

Look at me

  1. Delete unused KWin shortcuts:
qdbus org.kde.kglobalaccel /component/kwin org.kde.kglobalaccel.Component.cleanUp
  1. If you have a gap or vice versa you have gray(white etc) rectangle that means that there is a program with size 1x1 that have to be filtered by title or other ways. Make sure that the following programs, if you have them, have been added to the filter:
xwaylandvideobridge

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:

kpackagetool6 -t KWin/Script -i krohnkite.kwinscript # installing new script
kpackagetool6 -t kwin/script -u krohnkite.kwinscript # upgrading existing script

To uninstall the package:

kpackagetool6 -t kwin/script -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.

Search a window parameters to filter, float etc.

  1. Krohnkite options: options
  2. Options->Debug new Windows
  3. Reboot
  4. Run KSystemLog
  5. Push Ignore button
  6. Type in filter string: krohnkite
  7. All created windows krohnkite working with will be there.
  8. Every debug entry contains parameters except those that are false and empty.

Default Key Bindings

Key Action
Meta + . Focus Next
Meta + , Focus Previous
Meta + J Focus Down
Meta + K Focus Up
Meta + H Focus Left
Meta + L Focus 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 feature, the GUI controls are gone since KDE6, but the option is still accessible through the configs: kwriteconfig6 --file ~/.config/kwinrc --group Windows --key ActiveMouseScreen false kwriteconfig6 --file ~/.config/kwinrc --group Windows --key SeparateScreenFocus true
  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 + >)

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. You can use the Oxygen decoration theme. Oxygen theme settings
  2. You can install third-party decorations, see Border color conversation

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

esjeon avatar anametologin avatar hamletdufromage avatar jas-singhfsu avatar shocklateboy92 avatar suhail-singh avatar abrac avatar haukurpall avatar l1q avatar leononame avatar rdimaio avatar sayan01 avatar env25 avatar wallace11 avatar

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.