Code Monkey home page Code Monkey logo

floating-tiles's Introduction

Floating Tiles: no-stacking stacking window management for KWin

latest release | view in KDE store

Extension for KDE's window manager to make windows non-overlapping, by automatically minimizing a window when it gets covered by another window, and optionally restoring it when space becomes available again.

This is intended to keep the workspace clutter-free while maximizing screen real estate and retain the user in full control over window and workspace management, aiming to combine the efficiency of a tiling layout with the flexibility of freely positionable floating windows.

Note that this script is an extension to be run on top of KWin and not a standalone window manager, and will also not do any automatic tiling.

The windows to be affected can be filtered by window type and application.

By default, any window that has been automatically minimized will be automatically restored once the space above it is free again; this can be disabled in the configuration.

screenshot

config

Installation

Dependencies

kwin (tested with version 5.26 on X11).

Installation via graphical interface

  1. Install the script via Discover or System Settings > Window Management > KWin Scripts > Get New Scripts … > search for Floating Tiles > Install.
  2. Enable the script by activating its checkbox, and apply the settings.

Installation via command line

git clone https://github.com/nclarius/floating-tiles.git
cd floating-tiles
./install.sh

Configuration

System Settings > Window Management > KWin Scripts > configuration button in the Floating Tiles entry.

You may need to uncheck the checkbox for the script, apply the settings, recheck, and reapply in order for the changes to take effect.

In Plasma versions < 5.24, a bug in the KWin scripting system [1] [2] may cause the configuration not to be found. To fix this, please execute the following commands in a terminal:

sed -i 's/ConfigModule/Library/g' ~/.local/share/kwin/scripts/floatingtiles/metadata.json
mkdir -p ~/.local/share/kservices5/
ln -sf ~/.local/share/kwin/scripts/floatingtiles/metadata.json ~/.local/share/kservices5/floatingtiles.json
qdbus org.kde.KWin /KWin reconfigure

To find the window class name of an application: Right-click on the titlebar of a window of the application > More Actions > Configure Special Application Settings... > the pre-filled entry in Window class (application) (if it consists of two words, only the second part) is the window class to put in the script configuration.

Usage

Known issues

  • With auto-restore enabled, when using the Minimize All plasmoid, windows that had already been minimized automatically will be unwantedly unminimized.
  • The configuration interface is clunky; buttons do not always appear highlighted as intended.

Small Print

© 2022-2023 Natalie Clarius <[email protected]> nclarius.github.io

This work is licensed under the GNU General Public License v3.0.
This program comes with absolutely no warranty.
This is free software, and you are welcome to redistribute and/or modify it under certain conditions.

If you like this prject, you can make me happy with a review in the app store.

floating-tiles's People

Contributors

nclarius avatar vistaus avatar

Stargazers

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

Watchers

 avatar  avatar

floating-tiles's Issues

Automatically restore previously... Can't be disabled

Hello,
It seems that even though I have unchecked this option, whenever I manually minimize the current window, the previous is always maximized again.
Unless I'm not understanding the option, this seems to be a bug, minimizing the current window should result in all windows being minimized?

Operating System: Kubuntu 22.04
KDE Plasma Version: 5.24.4
KDE Frameworks Version: 5.92.0

Naming the script clearly for installing within kde plasma system settings "get new scripts"

When installing the script from within kde plasma system settings "get new scripts", there is no easy clue about what version is the latest. Naming the script like "floating tiles v3.8" would solve the issue. I know you can finally understand which one is newer between "20211125162805" and "20211201143236" but it is so much easy to just read 3.8 and 3.7. Just my point of view :)

Thank you so much.

Plasma crashes when closing some windows

If i open Librewolf for example (a firefox fork) and open the manage History View, Plasma crashes when I'm closing it again.

I'm using Wayland and KDE plasma 5.24.4

Request - Add option when you close a window to go back to the previously used window even on another workspace

I just found this AMAZING scirpt (both in idea and execution) and I think there are a couple things missing for the PERFECT workflow on any machine.

The way I use this is that I define windows to open in specific Activities + Workspaces. So I have Main, Chat, Work, Game And Stream workspaces in Main, Work, Games and Stream Activities.

Now, this script makes my life WAY easier by autominimizing windows and autounminimizang them on demand.

What could be a really amazing feature tough would be, when you close/minimize a window to go back to the last open active window whether in this activity/workspace or another.

That way I am on Firefox in Main Activity and Main workspace, launch Steam in Games Activity and Games workspaces (automatically done by KDE rules - nothing to do with this script). I select a game to download and close/minimize Steam, the script automatically takes me back to Firefox in Main Activity and Main workspace.

Of course, this would be optional in the script's settings and not on by default.

Just an idea that I think would make the use of this script ages ahead of anything else for the optimal workflow.

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.