qewer33 / exquisite Goto Github PK
View Code? Open in Web Editor NEWEasy window layout management for KDE Plasma
License: GNU General Public License v3.0
Easy window layout management for KDE Plasma
License: GNU General Public License v3.0
I like this widget Please add the ESC key after I activate the window, so that I can exit the window without clicking X to close, thank you
Hi, I've been using this on my devices for a while, and it's pretty cool. But on my older 768p laptop and secondary monitor, the titlebar takes so much space -- that's why I have hide titles kwin script installed and use global menu on top panel a la Unity.
It is possible to use Alt + F3 or a shortcut to manually enable the No Border option before using Exquisite to get the window to be tiled correctly without border, but it means that when you move it (say, with Meta + Left-Click shortcut) it will still have no border unlike hide titles which automatically restores the border when you exit maximized state or manually moved the window. And if you only enable No Border after tiling with Exquisite, the window get re-positioned incorrectly.
Is it possible to add a toggle that, when ticked, make sure that windows tiled with Exquisite will hide the window's titlebar? Maybe something based on the hide titles kwin script, since hide titles' behavior works very nice and seamlessly.
Thanks for your time regardless.
Edit: Something like:
Auto tile available windows when the background button of a layout is clicked
I see a very weird issue, when I do that kwin switches from one activity to another
It took me a while to bend my head around the default naming and took a lot more time guessing and what I needed to do, until I read the note about these referring to width and height.
Linguistically, when I read "rowSpan" I think of the number of rows it will span, in other words, height. Similarly, "columnSpan" suggests width to me.
"Width" and "height" are very clear, and translate across languages much better too.
As someone who has never used Windows 11 (or 10, 8, 7 or Vista), this description is meaningless to me:
a KWin script that brings Windows 11 like window tiling to KDE Plasma
The rest of the readme talks about configuring the script, but not about what it can do for me. How would you market the "Windows 11 like" feature that Exquisite offers to someone like me?
btw - I also have not used a Mac. I've only used Linux since about 2008.
I just moved to Debian + KDE Plasma as my daily driver -- from Windows 10.
I came across Exquisite and I love it. It is exquisite.
I had a feature idea I wanted to share.
I think it would be swell if pop up window show under/near the mouse. This would help with super ultrawide monitors.
I was noticing my system would take 30+ seconds to reboot. It would get stuck on one part but I couldn't figure out where.
So I did a fresh/clean new install of Debian Bookworm testing (RC3) with KDE Plasma. The reboots were fast/normal, as expected.
The first and only thing I did was install Exquisite from system settings Get New Scripts
.
If the script is enabled, the system gets "hung" for 30+ seconds during reboot before it finally reboots. I can't tell what it is hung/stuck on.
If I disable Exquisite, then the reboot time is normal/fast.
I tested other KWin scripts, and none of them have an issue. So it must be something to do with Exquisite but I can't figure out what.
I'm happy to help debug if it'll help.
I love the handling of tiling so "manual" compared to many of the scripts available for kWin (to me Polonium for example often goes awry using a 16:10 notebook with a 21:9 external screen), and the tiling functionality present since the 5.27 release of plasma is fantastic... and Exquisite seems born to integrate with it: one could keep a basic layout and then modify it on the fly with the tiling of plasma 5.27, perhaps saving with Exquisite a layout obtained
I'm attaching my qml
files here. As you can see from this screenshot, the 1st and 2nd layout are the same and they both link to 00.qml
. And 01.qml
is completely missing.
Also, how can we change the order of the layout boxes? I tried naming them 00.qml
, 01.qml
but that isn't working as expected here.
As mentioned in #30, I created a Windows clone of Exquisite.
One feature I added in the Windows version is that when the GUI is active, you can quickly select a zone with a keyboard key press.
I think it would be wicked to add this to Exquisite.
Exquisite seems to be a lot of mouse-oriented utility, so I think it should provide a simple way to launch it using only the mouse.
Maybe some sort of system tray applet would be enough, which will launch it using dbus.
If there already is such a way, README should mention it.
Thanks
Hi,
It's working great with defaults but I can't seem to create a 2x3 grid layout. It renders it with gaps between windows and runs off screen (the preview accurately shows the result). Also, after editing my custom layout file, the Exquisite preview doesn't update to reflect the changes... that might be a separate issue.
Here's my attempted layout:
import QtQuick 2.6
Item {
property string name: "2 x 3"
property var windows: [
{
row: 0,
rowSpan: 4,
column: 0,
columnSpan: 6
},
{
row: 0,
rowSpan: 4,
column: 4,
columnSpan: 6
},
{
row: 0,
rowSpan: 4,
column: 8,
columnSpan: 6
},
{
row: 6,
rowSpan: 4,
column: 0,
columnSpan: 6
},
{
row: 6,
rowSpan: 4,
column: 4,
columnSpan: 6
},
{
row: 6,
rowSpan: 4,
column: 8,
columnSpan: 6
}
]
}
![strange](https://user-images.githubusercontent.com/2851379/179167173-1e42e772-dfe4-4707-8fb4-e1af21108991.png)
Hello, thanks for your project, I appreciate it a lot. I was wondering if we could have a drag-and-drop feature, like drag a window inside a tile and have it moved to that position. It would make it a lot easier to use the program :)
Does this work on Plasma 6? Should I hold off on updating Plasma?
It would be great to have the option to configure gap size around windows, where 0 could be the default value
I don't know if it's possible with Kwin, but it seems to me that it could be useful to keep windows consistent when using Exquisite, which follows the pattern of opening as it used to or wherever
Thanks for doing this Exquisite script!
I use Linux as my daily driver but I have to use Windows on some machines.
I love Exquisite so much that I wanted a clone of it for Windows 11.
I don't know AHK that much but I got some help from someone to write a clone for me.
I'm thinking to put it on GitHub so others can use if they like.
My plan is to call it ExquisiteW
for windows. Thoughts?
Hi! I remember a feature in old versions where you can click the background to automatically tile the windows, but now it was replaced by maximize when clicking the background. It was removed? I really liked that feature.
When you open Exquisite, it shows you all the layouts and windows in each layout.
It would be cool if you could select multiple windows in a layout to resize a window to cover all the selected windows.
Using my layouts as an example:
The 4th one is a 4x4 grid. If I could select the windows starting from 2x2 to 3x3, then Exquisite would resize the window accordingly.
Or, the 2nd one is a 1:2:1 layout. If I could select the 2nd and 3rd column, the window would size to cover both of those.
This could be done by either SHIFT clicking or click + dragging the mouse.
The beauty of this is, we could create a few grid layouts like 4x4, 6x4, 8x4, etc... and then use this feature to dynamically size windows as you need when you need.
I installed exquisite via the kde store, but I got no new shortcut configs and can not activate it with the default key mentioned in this repos README.
After a bit of searching I found how I could "debug" the issue and gathered these logs:
$ export QT_LOGGING_RULES='js=true; kwin_scripting=true'
$ kwin_x11 --replace &
[1] 173754
kwin_scripting: Component failed to load: (file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:3:1: module "Qt.labs.folderlistmodel" version 2.15 is not installed
import Qt.labs.folderlistmodel 2.15
^)
I am on ubuntu (popos) 20.04 and I assume this is the relevant package?
Package: qml-module-qt-labs-folderlistmodel
Version: 5.12.8-0ubuntu1
It seems my package might not have a new enough version of this module for your kwin script:
sed -n '/exports/,/]/p' /usr/lib/x86_64-linux-gnu/qt5/qml/Qt/labs/folderlistmodel/plugins.qmltypes
exports: [
"Qt.labs.folderlistmodel/FolderListModel 1.0",
"Qt.labs.folderlistmodel/FolderListModel 2.0",
"Qt.labs.folderlistmodel/FolderListModel 2.1",
"Qt.labs.folderlistmodel/FolderListModel 2.11",
"Qt.labs.folderlistmodel/FolderListModel 2.12",
"Qt.labs.folderlistmodel/FolderListModel 2.2"
]
When I changed the line mentioned in the error above to use version 2.12 instead og 2.15 I got this error instead:
kwin_scripting: Component failed to load: (file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:84:17: Type WindowLayout unavailable
WindowLayout {
^, file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:4:1: module "Qt.labs.folderlistmodel" version 2.15 is not installed
import Qt.labs.folderlistmodel 2.15
^)
Then I changed the line referenced above to 2.12 as-well and got this:
Could not create scene graph context for backend 'opengl' - check that plugins are installed correctly in /usr/lib/x86_64-linux-gnu/qt5/plugins
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Cannot read property 'length' of undefined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Cannot read property 'windows' of null
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:89: ReferenceError: fileUrl is not defined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Cannot read property 'length' of undefined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Cannot read property 'windows' of null
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:89: ReferenceError: fileUrl is not defined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Cannot read property 'length' of undefined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Cannot read property 'windows' of null
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:89: ReferenceError: fileUrl is not defined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml: ReferenceError: fileUrl is not defined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml: ReferenceError: fileUrl is not defined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml: ReferenceError: fileUrl is not defined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml: ReferenceError: fileUrl is not defined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml: ReferenceError: fileUrl is not defined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml: ReferenceError: fileUrl is not defined
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/lib/WindowLayout.qml:33: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml:92: TypeError: Type error
file:///home/thomas/.local/share/kwin/scripts/exquisite/contents/ui/main.qml: ReferenceError: fileUrl is not defined
Now I get a tiny little window when I use the default hotkey combo with the name Exquisite name on it, and I am not sure but I think there are some button there, but they are so tiny I don't know if I am hitting them, but seems one of them at least maximizes the window, but it is hard to say for sure.
Is there anything to be done about this, or am I simply out of luck with my older version of the qt package?
The installation of /tmp/rgEEjq-exquisite.kwinscript failed because the downloaded package does not contain any useful metadata information, which means that it is not a valid "KPackage" object.
Fantastic layout options, but I'm really missing an option to add padding to the tiled windows. Would love if this could be added at some point if there's not already an easy way to do it that I overlooked.
Exquisite works great on a single monitorr but when I tried on 2 monitors it didn't work as expected (windows moved to the other monitor, also size and location were not reliable). Could you please check?
It would be awesome if we could customize layouts to have a shortcut option bound to a window position, so we can quickly arrange windows.
If it is possible to have this in the layout config files that seem optimal in my mind, as we could then have default or custom layouts be "shortcutable".
I use a super-ultrawide monitor and I have a 3 column layout that I use daily, which looks like:
25% of screen width | 50% of screen width | 25% of screen width
On a super ultrawide (5120x1440), the aspect ratio for each window looks like this:
8:9 | 16:9 | 8:9
I would love for this layout to be added, since it's the one I use the most, I'm fine with it being an optional toggle in the settings.
I'm willing to do some testing if necessary.
Thanks in advance!
EDIT: I am aware you can create custom layouts, but I feel that this one would be important enough to warrant being included by default.
I want to select the opposite theme of my current them
i.e. I want light theme for exquisite window while working with dark theme and I cannot see the windows tiling shown in exquisite.
Current Problem :
Just some modification in the config can do this but I don't know how to change it.
Please suggest how I should make it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.