First of all: Please don’t tell me how impractically this might be or confusing or whatever. This is like a thought experiment and let’s be honest: We don’t JUST want efficiency when modding our desktops – we also want it to look sick and individual and have people watch in admiration – or something like that. So keep that in mind before dismissing rightaway :-) thanks!
- I recently thought about a concept of tiling window managers. I don’t know If this already works out of the box in some window managers. It was originally how I understood the concept of “tiling window managers” before I really got to know how they worked.
My general idea: Everything is just tiles on a larger canvas - with some exceptions everything visible can be laid out as a position on the screen. Also widgets are just tiles placed next to each other. There can (imho should) exist some rules for easy sizing of tiles / widgets, but that’s details. I sometimes have the problem of working with one main application, but having to look up two other things A) and B) one after the other. I would switch between two screens all the time, but more ideally I would only move my screen slightly to get a look on either A) or B) while in both situations still having my main application in view. Moving between apps can be done simply with arrow keys (e.g. super + arrows) or mouse. There’s also quickjump-positions. For example pressing 1 2 3 4 etc would move the screen to a previous set position (and could also preset the focused application)
Similar to a smartphone the background can move along in a more subtle way.
The login screen would just be a different place on that canvas - for security the rest outside the view has to disappear even when invisible while logged out (to avoid weird security issues :D
possible exception: An exception to “everything is in the canvas” could be when maximizing a focused application: Then the actual application is moving in front of the view (while the rest of the canvas is getting slightly further away). Some nice blurring could make that really nice. If the application tile isn’t in the screen’s aspect ration before it will change its aspect ration in the same motion while moving.
So in short: Instead of having tiles fixed to screens why not have tiles everywhere and move the screen step by step.
A lot of hotkeys need to be thought about here of course. Also specialized behavior to resize tiles. Increasing the width/height or changing the aspect ratio would require moving surrounding tiles around in certain situations, but these shouldn’t bee too complicated. Again: some rules about minimum/maximum values for width/height/desired aspect rations could help.
Even the angle of viewing could be changed in some situations not in situations where switching often is required. But I’d love me some nice rotation and translation when locking my screen :-)
What do you think?
( I might cross post this to reddit’s unixporn subreddit later as well)
The bit where you have a small view on a large virtual display exists in xorg (I assume it is still there - when I used that it was XFree86).
You’d configure a virtual screen with whatever resolution you want, and your physical resolution generates a view on that which is moving with the mouse focus. I used to run a 1200x1600 desktop on a 640x480 screen until my girlfriend said she got sick watching me and bought me a large screen.
Might be useful if you quickly want to prototype the general idea.
now you can run a 4000x6000 screen on your 1200x1600 monitor 😉
but seriously thank you. if that existed this might still exist in wayland…
This is an Xorg thing - for wayland you’d have to implement that kind of functionality yourself.
Just checked, it seems to be still there, and exposed via xrandr, see the --panning option in xrandr manpage. So you should be able to somewhat dynamically resize the virtual desktop used via xrandr nowadays. The maximum virtual desktop size supported is determined by your graphics card - so if you’d want that some infinity thing you’d have to do that yourself and just throw a small part of the screen in the graphics buffer for rendering.
kind of reminds me of the newm wm
Isn’t that concept called a ‘scrolling wm’?
yeah very nice. I imagine it a little like that only more “cluttered” :-) I like it a little more chaotic with more variety of screen sizes and rations. Thanks!
I really, really like this. To add some complexity can I suggest being able to zoom out and in as well?
That would be possible of course, and I like it. But in my mind this would be reserved for special functions only as it can quickly become gimmicky. (Think these early 2000s rotating cube-workspaces and so on :-) )
A usecase could be that a lock-screen would be further away and locking out would move towards it. Or even turning the view in a different direction?
I do see your point regarding it becoming gimmicky, but I feel like it’d be useful for arranging windows and jump positions. I can also see a “Now where did I put thing X?” situation arising and it’d be handy to get an overview.
In my mind there would still exist an Alt+Tab-Overlay that would enable me to switch between programs independent of their position.
What is it called?
I sent a link to it, it’s called newm
An infinite canvas accessible by only using a keyboard? Shut up and take my money!
Usable with just the keyboard would be cool but limiting it to only keyboard would be dumb
Sure I didn’t mean it exclusively.
I’ve configured something like this in FVWM2 a long time ago. It was neat for a few hours, but I don’t really see the benefit over regular virtual workspaces.
in i3 I already switch workspaces with mouse wheel on the status bar, which is super easy and seems easier panning around with a mouse.
Congratulations, you just invented Apple watchOS 🤣
But seriously, this is kinda cool and I’d try it. I wonder if I would prefer a simpler mode where it only expands along one axis though
PaperWM extension for Gnome
thank you!
There is one kwin script for KDE plasma but I can’t remember the name.
That’s a really cool idea,maybe scrolling along a single axis instead of a plane would be more intuitive?
Could be. But I would want to have the option. As a middle-ground the second axis (e.g. up/down) could be reserved to special functions only.
- I could imagine the typical search-field that pops up to quickly search for an application could instead be further up and activating it would simply move the screen up and focus the search field at once.
- a status-bar that only appears when needed could just exist slightly over the current screen (it would move sideways with the screen) and viewing it would move the screen slightly up.
You mean, like you can zoom out and back in, move around in the larger desktop? For that part, there’s an xrandr hack with panning and scale.
edit: it’s literally
--panning 4000x2000
and--scale
for zooming. 0x0 and scale 1 to reset. Mouse on border moves the window. Make a script and bind that to keys and done.deleted by creator
This sounds a lot like newm, I’d suggest you check it out! (though I think it might be unmaintained now)
I just want efficiency actually…
I think this might be a good idea for a full FoV experience, like a VR/AR Desktop. For a regular display I’d have to try it, I guess.
neat idea
So resizing windows will mess up the entire layout or leave gaps?
Yeah, no, not for me.
If you set your X server size bigger than your monitor size you can already do that. You can also move windows partially off the screen, so e.g. only the left edge is visible.
But I personally don’t see the use case. I can’t think of a time where the physical layout of different programs would be so important as to require a 2D canvas. Usually the connections between programs are not in a 2D plane, but instead by concept or task.
For example I may have a browser open, and want a terminal and an IDE next to it. How exactly these windows are placed is of no concern, I just need them to be visible at the same time . And that’s something I can achieve with a normal tiling wm already.But maybe I’m just not creative enough to desire more complex window layouts XD