Since we already have a form of 'maximize', we need to differentiate
between 'maximize' and the new 'fullscreen' mode. The 'maximize' mode
will continue to honor gap but now *retains* the border, matching the
'vert/horz maximize' behaviour. The new 'fullscreen' mode supports and
follows the _NET_WM_STATE_FULLSCREEN hint, allowing the client perform
additional window modifications; in this mode, cwm(1) will *ignore* gap,
remove borders and freeze(move/resize) the client. Additionally,
'fullscreen' mode will remember various combinations of previous states.
* default keybinding changes: CM-f 'fullscreen', CM-m 'maximize' (re-map
as desired).
Positive feedback from a few, testing and ok sthen@
ewmh hint; urgencyborder is configurable. The urgency flag will stick,
even while on a client in a non-viewable group, until the client
receives focus (where the border is reset). Initial diff from Thomas
Adam with some changes/enhancements from me.
worked (and no one complained!). While it's fairly easy to fix, users
should be using keysym names and not keycodes.
Discussed at length months ago with todd@, matthieu@ and Owain.
BadValue) when the modifier is already AnyModifier . Instead alter
xu_btn_ungrab() to ungrab AnyButton/AnyModifier and call it only when a
client is coming into focus in client_setactive(), instead of iterating
over ignore mods - matches how we handle key grabs.
to grab keys in keybindingq. we don't need to ungrab/grab on every
addition to the queue, just once with a complete keybindingq; simplify
grabbing keys per screen (during init) and during a MappingNotify.
while here, change conf_grab_{kbd,mouse} to require only a Window.
validity during the parse phase and not bother adding it to the queue,
instead of each time a client needs to grab (when it's too late);
furthermore, make this a config error, stop parsing and load the
default config.
- merge border/menu color structures/functions since they now both use Xft
- switch xu_xorcolor to operating on XftColor instead of just
XRenderColor (basically adding pixel)
- if color name allocation fails, revert back to default (this, along
with font validation should occur during config parse, but we don't
have screens setup yet - likely to change at some point)
existing argv; same idea with respect to argv saving as Alexander
Polakov. reload support was half-complete and is getting in the way.
agreed to by many
ignore and bwidth changes; also add a hack for existing maximized
windows so they don't inherit a new bwidth.
based on a diff from, and discussion with, Tiago Cunha.
with the various scenarios of when to attempt a parse of the config,
load defaults, and when to warn and/or exit. triggered by bogus warning
first noticed by sobrado@.
ok oga@
keyword taken from a diff from Sviatoslav Chagaev to do the same thing,
but implemented in a completely way (based on some very old code from
mk@). default set to 0, so no behavior change.
ok oga@ (who would also like to take it further...)
any window, after which all move/resize requests will be ignored,
essentially freezing the window in place.
there's a possibility to merge this with the 'ignore' concept, pending
on how ignore+freeze should behave (really more ewmh stuff), but punting
for now since ponies are on the line.
requested and tested by thib at k2k11 with ponies, unicorns and rainbows.
'save the unicorns' todd@, ok oga@
says that a pager can change the property at any time (most need a
clientmessage). So deal with property updates.
Needed to shuffle some of the other code around since we can't just use
shortcut_to_name[] everywhere now.
ok okan@
into screen_ctx and start passing screen_ctx around to in order get rid
of Curscreen; fixup per-screen config colors the same way.
diff mostly from oga@, with a bit harsher reaction to the state of screen_ctx.
"please commit" oga@
using Xft(3), use it to select the font color as well instead of trying
to build one; properly allocate and free colors at-will, e.g. we now
have configurable colors.
feedback and ok's todd@ and oga@
display and moves it to another group. useful with the recently added
"grouponly" function, giving the ability to use groups as simple
virtual desktops (similar to e.g. xmonad, dwm and scrotwm).
this doesn't have default keyboard bindings; cwmrc(5) now shows how
you could use these functions (use M-1...9 for grouponly1...9 and
MS-1...9 for movetogroup1...9 to emulate the default dwm bindings).
ok oga@
This works like the group select binding, but hides all other groups.
So, the people who've been complaining that they don't get "virtual
desktops" in cwm may want to try this out in cwmrc (from memory, untested):
---
#cwmrc
# add new windows to the current group
set sticky
# automatically sticky windows. xclock for now.
# to make more windows sticky use group_toggle to unset their group
autogroup 0 xclock
# make the group selection keys hide other groups, emulate virtual desktops
bind CM-1 grouponly1
bind CM-2 grouponly2
bind CM-3 grouponly3
bind CM-4 grouponly4
bind CM-5 grouponly5
bind CM-6 grouponly6
bind CM-7 grouponly7
bind CM-8 grouponly8
bind CM-9 grouponly9
---
mostly by sthen, tweaks from me.
ok todd@, "if it works i'm ok with it" okan@, ok sthen@
to push attributes around, so things get a lot simplier, while fixing a
few issues in the meantime; original suggestion by Edd Barrett many many
moons ago.
annoying window placement and race, found in c2k8 by todd, fix by oga!
lots of feedback from todd and oga - thanks!
"commit that bad boy" oga@
add conf_grab() and conf_ungrab, and use them in the keybinding manipulation
functions to {,un}grab the binding for all screens we have defined.
the lovely little ordering problem comes in here, since when we parse
the config initially Screenq is empty, so regrab after we fill the
queue, hopefully later reordering will remove this little need and there
will be much rejoicing.
ok okan.
you do this is ugly. Also remove mod2 (numlock) and mod3 (odd) from the
list of keybinding modifiers. They don't make much sense here.
based on a heavily modified diff from Martynas.
ok okan.
- if no config file, continue silently and apply defaults
- if config file, parse and move on
- if config file specified but not found, error out
ok oga@
mru getting the order messed up when gvim/xpdf et all steal key events.
While i'm here, change the logic in client_cyclenext() to use break instead
of goto, it's nicer that way.
Thirdly, instead of two different kbfuncs, just use the one and a flag.
"put your cycle diff in so I can pkg_delete gvim" okan@
idea for the
"slightly-less-abhorrent-hack-but-a-hack-nonetheless-TM" from oga@
grab and ungrab the keyboard to get around some silly X apps that like
stealing events
ok oga@
1) it used TAILQ_FOREACH() when it's removing entrys from the list, this
is bad.
2) We didn't free key, so there was a small memleak too.
also rework conf_bindname's logic slightly to be more simple.
ok okan@
Since it's only used once just put the (simplified) logic into
conf_client() instead. This means we can kill an enum and
CONF_IGNORECASE, too.
ok okan@
found in other places of the tree. Remove sticky and font commandline
options and add another one for alternative config locations.
Split off cwmrc(5) from cwm(1), nuke #ifdef __OpenBSD__ while there.
tested by various kind people, feedback from oga@ and okan@ - thanks!
ok oga@, jasper@, okan@