summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-09-09overlay: move heirarchy row drawing to functionVito Caputo
2016-09-09overlay: introduce overlay.redraw_neededVito Caputo
Set on window resize, clear on draw_overlay() return. Used in combination with sample_interval check to gate HZ redraw. Will be used to gate redraw of process monitors heirarchy as well, in a subsequent commit.
2016-09-09overlay: split IOWait/Idle from rest of recursive draw_overlayVito Caputo
Also moved vertical graph bars drawing to helper function
2016-09-09overlay: use XTextWidth instead of XTextExtentsVito Caputo
We currently only use the width, and XTextExtents does substantially more crap per character in Xorg's xlib. XTextWidth is not just a wrapper around it, it's a specialized subset implementation.
2016-09-09build: Adopt GNU automake (and thus autotools)Vito Caputo
Trying this out now that there's a pile of files... sigh. Note this spuriously duplicates list.h @ src/libvmon/list.h, the old Makefile shared list.h between vwm and libvmon, but I'm letting them have their own instances with autotools. Libvmon was always an independent project I just pulled in for vwm's use, and will likely continue to be developed independent of vwm with occasional syncs.
2016-09-09*: refactor all the thingsVito Caputo
Long overdue house cleaning. The addition of compositing/monitoring overlays in vwm3 pushed vwm well past what is a reasonable size for a simple thousand line file. This is a first step towards restoring sanity in the code, but no behavioral differences are intended, this is mostly just shuffling around and organizing code. I expect some performance regressions initially, follow-on commits will make more improvements to that end as the dust settles.
2016-08-14Merge pull request #5 from vcaputo/spacesVito Caputo
I've warmed up to space after control flow keywords
2016-08-14I've warmed up to space after control flow keywordsVito Caputo
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.
2016-08-14Merge pull request #4 from vcaputo/fix_focus_of_unmapped_winsVito Caputo
Fix handling of non-visible focus switches
2016-08-14Set input focus in vwm_win_focus() when is_mapped()Vito Caputo
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.
2016-08-14Discard context arg from vwm_win_focus_next()Vito Caputo
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.
2016-08-14s/vwm_xwin_is_visible/vwm_xwin_is_mapped/Vito Caputo
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.
2016-06-28Clear the mapping bit when swallowing vwm-triggered MapNotify events.Vito Caputo
I didn't experience any bug in particular which brought this to my attention, but it's an obvious omission, though apparently quite ignorable.
2016-01-03Cleanup random stray whitespace charactersVito Caputo
2016-01-03Fix missed keyboard ungrab when alt was released with others still pressedVito Caputo
2016-01-03Trivial cleanup: s/Mod1Mask/WM_GRAB_MODIFIER/gVito Caputo
2015-05-16Minor reformatting cleanupsVito Caputo
2015-02-21Introduced a 'refocus original window' operationVito Caputo
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.
2015-02-21Added .gitignore for build artifactsVito Caputo
2014-10-18Merge pull request #1 from vcaputo/auto_allscreenVito Caputo
Automatically "autoconf" screen-sized new windows as "allscreened"
2014-09-28Automatically "autoconf" screen-sized new windows as "allscreened"Vito Caputo
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".
2014-09-28Reflowed keystroke section of README to 75 wide, mostly for the github UI.Vito Caputo
2014-09-28Switched launchers to execute via "/bin/sh" rather than "bash"Vito Caputo
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.
2014-09-14 Import of vwm3 changes from published source tgzVito Caputo
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].
2014-09-14Import of vwm2 changes from published source tgzVito Caputo
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
2014-09-14Initial import of vwm1 from published source tgzVito Caputo
- Basic window management, window resizing, virtual desktops and shelf implementation - Simple double fork execution of launched clients
© All Rights Reserved