Comments (1)
The issue is, quicktile does its best to guess which of the states is current, then switch to the next. But the logic is unpredictable.
Actually, it hasn't been unpredictable in the strictest sense for a while. It used to detect heuristically, but it currently sets a _QUICKTILE_CYCLE_POS
property on tiled windows which stores the index of the current tiling state in the sequence.
That was my solution for things like MPlayer's fixed aspect ratio. (#20)
Most of the remaining apparent unpredictability is just a need for more code to either reset the sequence or reapply the tiling preset in cases like switching monitors (#24).
The whole point of quicktile is to quickly tile windows. If pressing a key combo does what the user means without a doubt, it's a win. If the user has to press, look, press again, look, until the desired state appears, then it's a loss. From a cognitive load point-of-view, it replaces a fire-and-forget action with a act-check-loop-until, which requires different (more) cognitive resources. Like a cache miss in a modern processor.
...but I will agree with this.
What if we replaced all "is already tiled" code with a simple time-base state machine, that just totally ignores the actual window position?
My main concern there is that it's a big change. I can certainly see the benefit, but I doubt I'm the only one to have used the current approach as envisioned and reworking muscle memory like that shouldn't be done lightly.
IMHO this is simpler to the user, more predictable thus less cognitive load, reduces code complexity.
What do you think?
I'll need to think more on it when I'm not half-dead from fighting to fix a broken sleep cycle (the core reason I haven't been working on QuickTile) and sneezing my nose off because sleep deprivation interferes with over-the-counter allergy medication, but I don't think it'll actually reduce code complexity.
Getting and setting properties on the active window is simple (and the getting code is also used for stuff like querying _NET_WM_STRUT_PARTIAL
to determine the usable workspace) while QuickTile currently has no code to support timeouts.
Plus, while it's got some race conditions I need to fix, QuickTile does have a "run as a subprocess to process one command, then exit" mode which would rule out some avenues for implementing what you propose. (I'd have to store a bunch of state on the root or active window rather than in local or member variables.)
from quicktile.
Related Issues (20)
- Incorrect Monitor Geometry HOT 4
- move-to-{top,left,right,bottom} behavior changed in 0.4.0 HOT 8
- Overlapping windows when positioning vertically on Ubuntu 20.04 HOT 25
- Quicktile is not detecting IceWM taskbar HOT 12
- PackageNotFoundError in Manjaro after last pacman update HOT 2
- Display a warning if ModMask and per-binding modifiers overlap in potentially confusing ways HOT 8
- Restore the previous window's size & position before tiling. HOT 8
- Skipping the 1/2 width option HOT 3
- While using "right" or "center" command on with external monitor, the windows switch to the next monitor HOT 21
- External keyboard, "Right" keyboard binding breaks HOT 14
- Control-C on `quicktile --daemonize` can hang X on LXDE HOT 1
- No errors and no funcionality on Ubuntu 20.04 HOT 1
- Bug detected - A programming error has been detected during the execution of this program HOT 4
- Failed to load module "xapp-gtk3-module" HOT 5
- Move window to other workspace HOT 4
- 3 columns layout, but gap between left and center HOT 6
- Xfwm4 integration / size restoration HOT 3
- Release a new version. Please. HOT 5
- emacs windows don't tile to edge of screen. HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quicktile.