
Big Screen
Source (link to git-repo or to original if based on someone elses unmodified work):
Description:
Feeling insufficient?
If you install this, your Pen... errrr... Screen will become very large.
It sort of implements the NETWM Large Desktop concept as exists in eg. fvwm.
The active screen edges trigger a shift of "normal" windows, similar to "xrandr --panning", but the desktop etc. stay in place (and the "size" is not limited by the GPU when compositing)
The shift is by default 50% of the smallest screen width/height, ie. eg. the upper half becomes the lower half and the lower half drops out of the screen. This can easily be changed in the script source.
It's also different from the stacked virtual desktops as implemented in KWin in that you can make windows randomly large and shift the viewport (windows lap over to the next "notvirtualdesktop")
--- TODO:
- handle activities
- make a config GUI?
--- Comments:
"I installed this and my P... Screen grew HUUGE and now I can please all the gir... windows and no longer feel insufficient!"
-- Anonymous User
--- Disclaimer:
Any other growth is not guaranteed.
Other things might actually shrink - and I deny responsibility for such!
=) Last changelog:
If you install this, your Pen... errrr... Screen will become very large.
It sort of implements the NETWM Large Desktop concept as exists in eg. fvwm.
The active screen edges trigger a shift of "normal" windows, similar to "xrandr --panning", but the desktop etc. stay in place (and the "size" is not limited by the GPU when compositing)
The shift is by default 50% of the smallest screen width/height, ie. eg. the upper half becomes the lower half and the lower half drops out of the screen. This can easily be changed in the script source.
It's also different from the stacked virtual desktops as implemented in KWin in that you can make windows randomly large and shift the viewport (windows lap over to the next "notvirtualdesktop")
--- TODO:
- handle activities
- make a config GUI?
--- Comments:
"I installed this and my P... Screen grew HUUGE and now I can please all the gir... windows and no longer feel insufficient!"
-- Anonymous User
--- Disclaimer:
Any other growth is not guaranteed.
Other things might actually shrink - and I deny responsibility for such!
=)
1.3
-----
* added option to align to the panning grid (affects window activation)
1.2
----
* only move currentTab (ie. a tabgroup once instead of n times)
1.1
------------
* added shortcuts
* added config GUI (script needs to be reloaded to update config!)
* allow to only use vertical or horizontal edges or neither
Ratings & Comments
27 Comments
Hi, I downloaded it and I enabled it, but I have no clue how to make it work, is there something else I have to do? thanks
let me reiterate, I have found the shortcut keys, but they do not work when I use them, nothing happens. I have updated to the LATEST of kde Operating System: Ubuntu 21.10 KDE Plasma Version: 5.24.1 KDE Frameworks Version: 5.91.0 Qt Version: 5.15.2 Kernel Version: 5.13.0-28-generic (64-bit) Graphics Platform: X11 Any help would be appreciated thanks
It works perfectly on the latest KDE neon version, so I would like to ask you If you are interested to update these script with some enhancements like the possibility to move the desktop by dragging a window next the monitor borders and also to fix the KDE menu popups that start to floating when I move around the desktop. I think you could renew these script and make it really really great. This is one of the things that I was needing on Windows (there is nothing like these script for it) and make me loving much more GNU/Linux.
Now on Fedora 28 I encountered some problems, Kwin crashes almost constantly. Can you fix it? Please, keep alive these project!
Sorry, I stopped using KDE about three years ago :-(
hi, does this work with plasma 5?
Supposingly. The script API didn't change, but I didn't actually test the script.
Yes it works fine (besides config UI). BTW, this works: var isOnCurrentActivity = function(client) { for (var i = 0; i < client.activities.length; ++i) { if (client.activities[i] === workspace.currentActivity) { return true; } } return false; }
Hi, I was getting annoyed by the center on screen and how it was messing my layout so I improved it a bit: var centerActive = function(client) { if (!client || client.desktopWindow || client.dock) return; if (client.x + client.width < 1 || client.x > workspace.displayWidth || client.y + client.height < 1 || client.y > workspace.displayHeight) { var area = workspace.clientArea(KWin.ScreenArea, workspace.activeScreen, 0); var dx = area.x + (area.width - client.width)/2 - client.x; var dy = area.y + (area.height - client.height)/2 - client.y; var tx = Math.round(dx / shiftX()); var ty = Math.round(dy / shiftY()); translateClients(tx*shiftX(), ty*shiftY()); } }
Thanks for sharing the idea. If you look at the code, I altered it a bit, as it's legit to re-use vars and otoh shiftX/Y() should be cached (though it's not a hot path ;-)
thanks, i don't know java script.
I found one small problem related to the script: it treats window groups like a individual windows, so for instance group of two windows is moved twice by the 50% (100% total) instead of being moved only once by the 50%.
Thanks for the notice - should be fixed with latest update.
wow, that was fast! I didn't expect you to fix it just for me :D Thanks. Tabbing feature introduces extra cases almost everywhere but I really like it.
I'm wonder if it would be possible to add option to have keybind for scrolling desktop. For instance meta. Screen would be scrolled only if you are holding meta pressed.
No. It would be possible to add global shortcuts (so that you scroll without the mouse but by pressing a shortcut), but invocation of a modifier would require changes to the KWin core (what's probably not in the cards for KDE SC4)
I think that I would prefer global shortcuts over current behavior. A lot of mouse travel and accidental edge hits are not very helpfull at all.
Thanks. It seems that configuration button is missing, but shortcuts works well and I disabled electric border in the code. Now I'm happy. :)
How did you install the effect? If installed with plasmapkg, scripts require a "-t kwinscript") to resolve this correctly. No idea whether i miss some metainfo or plasmapkg simply always requires this. No idea about GHNS plasmapkg -t kwinscript -u bigScreen.kwinscript
I used GHNS. And there is no button, as I said.
Ahhh, that's stupid. Plasma/GHNS will install the script into the "wrong" location (it's detected, but config stuff won't work) unless the metadata say it's "kwinscript", but if they do, kwin won't load the script (expects "javascript") -> kwin bug, it seems (should look for kwinscript, not javascritp) For proper installation, uninstall the script, download the file and install it as plasmapkg -u bigScreen.kwinscript -t kwinscript
yup, you are right. BTW: This script is extreamly useful. I used to like this behavior long time ago, during fvwm days. It's nice to see this in KDE with the help of just few lines of code :-)
One more thing: how this works? I used to think it basicly moves windows, but this appears to be more complex thing.
No, it actually just moves windows around. There's some multiscreen handling code and exclusion of windows on other virtual desktops (and yakuake), but that's more or less it. And it of course centers a window out of sight on activation (by moving all windows accordingly)
Ok, congrats. This is impressive hack :D But I find it actually usefull, good job.