Age | Commit message (Collapse) | Author |
|
Approximately:
s/if(/if (/g
s/switch(/switch (/g
s/do(/do (/g
s/while(/while (/g
s/for(/for (/g
Macro use continues to be spaceless, even when used as control flow primitives
(i.e. list_for_each()), as do function calls.
|
|
It's inappropriate to assume the window being focused is in the visible
context. This caused the input focus to spuriously vanish if a window on
another desktop went away causing the next one, also invisible, to get focused.
I'm surprised how long I went without ever noticing this bug! My workflow
basically never has windows vanishing that aren't in the focused context.
|
|
This can just be derived from the state of the basis window, I think originally
I had intended to implement context switching via this function.
Also changes the implementation to stop comparing against
focused_(shelf,desktop) which prevented doing transitions on invisible
contexts. It's not usually an issue, but windows can go away at any time, and
we must be able to focus next when they do, even if their context isn't the
visible one.
|
|
Renaming to better describe what this actually checks.
Initially I was leaning towards adding a data structure for actual visibility
checks rather than just assuming all vwm-mapped windows are visible. But
there's a need for knowing just if windows are currently mapped as well, so
this function can stay implemented this way with the appropriate name.
|
|
I didn't experience any bug in particular which brought this to my attention,
but it's an obvious omission, though apparently quite ignorable.
|
|
|
|
|
|
|
|
|
|
See changes to README, but basically if you're holding down Alt and doing
some window management operations, while still pressing Alt hit the other
Alt key to return focus to the starting window+desktop. Nothing is undone,
focus is simply returned to the starting window+desktop.
|
|
This enables automagic mplayer -fs borderless fullscreened playback windows
with minor additions to the code. Previously one had to focus the playback
window and mod1-triple-k it to lose the borders, now it "just works".
|
|
Using bash was a bit heavy-handed when all I really want is a /bin/sh -c
just like popen()/system(). On some systems this won't make any
difference, but on Debian /bin/sh -> dash.
|
|
Major changes from vwm2 include:
- Introduction of integrated X client process and descendants
monitoring in the form of per-window composited overlays.
The rendering is done using the Composite, Damage, and Render
extensions. When the monitors are visible, vwm3 is a compositing
manager. When invisible, vwm3 continues to be an immediate-mode
classic X11 minimalist window manager.
Monitors are toggled via Mod1-;, Mod1-LeftArrow and Mod1-RightArrow
may be used to decrease and increase the sampling frequency,
respectively. Mod1-' clears the monitored tasks history for the
focused window when monitoring is visible.
This feature depends on the CONFIG_CHECKPOINT_RESTORE kernel
configuration option for the discovery of descendant processes.
Without this kernel option enabled, you'll only get a single process
monitored per window; the X client process as indicated by the
_NET_WM_PID atom of the window.
A library called libvmon has been introduced for the abstraction of
lightweight system and process statistics sampling.
Since vwm2 received backported features unrelated to monitoring or
compositing while vwm3 was developed, there isn't really much
difference between the two outside the monitoring context.
This isn't to say there isn't much activity in the code, the addition
of compositing and monitoring requires a substantial amount of code
relative to the scale of vwm[12].
|
|
Major changes from vwm1:
- GNU screen-based "console" integration for monitored launching of X
clients via screen remote commands, replacing the simple double fork
approach used in vwm1. Clients exiting with non-zero status retain
their screen window in the console for 86400 seconds, facilitating
easier debugging and troubleshooting. The console xterm is accessed in
the shelf and has a red border by default.
- Xinerama/multihead support backported from vwm3, including the "screen
fencing" implementation facilitating screen-oriented window focus
cycling.
Shifting the Mod1-Tab window cycling focuses the next most recently
used window on another display. Unshifted stays confined to the
current display.
- SYNC extension integration for prioritizing the WM over other X clients
- setpriority() integration for "nicing" X client processes relative to
the WM process
- "autoconf" windows, horizontal/vertical halfscreen windows,
quarterscreen windows in addition to the full/all screen functions.
Mod1-[ and Mod1-] resize the focused window vertically with left and
right justification to half the screen in width. Shifting these does
the same thing just horizontally. Repeating the operation with a
second ] or [ press quarters the window in the respective screen
corner, extending upon the repeater pattern established in vwm1 for
full/allscreen windows with Mod1-k[k[k]]
- Exit now requires 3 consecutive strikes of Mod1-Esc
- Introduction of a README file
|
|
- Basic window management, window resizing, virtual desktops and shelf
implementation
- Simple double fork execution of launched clients
|