okan
b5915eb989
The only reason we need to keep XSizeHints in our client_ctx is for
...
flags, so just add one to hints; consolidates sizehints and shrinks.
Additionally don't abuse PSize for XGetWMNormalHints() failures.
2013-11-02 19:13:56 +00:00
okan
06eb13dfd9
re-add support for WM_TAKE_FOCUS, and additionally this time only call
...
XSetInputFocus() for clients that have the InputHint; latter fix
discovered by Valery Masiutsin with a PoC patch - solves keyboard input
focus loss for java apps.
2013-11-01 14:07:19 +00:00
okan
6e17b41f56
A client_delete should behave differently depending on whether the
...
triggering event was unmap (with pending destroy) log destroy; we only
need to grab/ungrab the server lock, set WithdrawnState and
XRemoveFromSaveSet clients coming from an unmap event - doing so for
clients coming from destroy are already gone, hence we generate errors.
2013-10-25 19:46:16 +00:00
okan
5b733a152d
wrap key ungrab like btn ungrab, for it'll be used again
2013-10-20 01:55:32 +00:00
okan
a2013ee9dd
Using xu_btn_ungrab() buttons during client_leave doesn't work (error
...
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.
2013-10-19 19:39:34 +00:00
okan
6ac51b8e41
unify type; no change
2013-10-03 13:51:57 +00:00
okan
ca416b6b82
max -> nitems
2013-07-16 14:04:44 +00:00
okan
ae4ab06559
shuffle down protoypes
2013-07-15 23:53:19 +00:00
okan
4119b5c065
simplify atom handling; allows us to limit to one round-trip to server
...
for gathering Atoms.
2013-07-15 14:50:44 +00:00
okan
dd10412804
since the root and event window are the same in the case of a button
...
event on the screen's root window, there's no need to pass down the
entire XButtonEvent event, at least to group_menu(), the only callback
which takes an argument at this point; instead use the already populated
screen.
2013-07-09 01:24:49 +00:00
okan
9bf2498d7e
add support for mouse based group {,r}cycle; from Rodrigo Mosconi. not
...
bound by default.
2013-07-08 18:39:20 +00:00
okan
1f244fe29c
move kbfunc and mousefunc closer together
2013-07-08 18:19:22 +00:00
okan
a493734066
clarify kbd vs mouse functions
2013-07-08 16:32:51 +00:00
okan
234b8214df
move Cursors into conf.
2013-06-17 17:11:10 +00:00
okan
6059073a5f
move synthetic responses and have client_msg only work with WM_PROTOCOLS,
...
since that's all ClientMessageEvent is for anyway.
2013-06-10 21:37:30 +00:00
okan
692d341dfc
fix type in a ClientMessage (xu_sendmsg).
2013-05-27 23:20:45 +00:00
okan
be1a7a3f5c
alter conf_grab(_kbd) to first ungrab AnyKey/AnyModifier, then proceed
...
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.
2013-05-23 16:52:39 +00:00
okan
532f132194
move validation of pointer Button into conf_mousebind so we check
...
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.
2013-05-22 16:32:15 +00:00
okan
421bf22ac7
handle _NET_WM_STATE ClientMessage; from Alexander Polakov.
2013-05-21 00:29:20 +00:00
okan
284af4ca0c
add support for _NET_WM_STATE_MAXIMIZED_{HORZ,VERT}; from Alexander Polakov.
...
while I'm unsure of the final look of _NET_WM_STATE, there's no reason
to delay this support.
2013-05-20 21:13:58 +00:00
okan
270df196ac
- configure menuwin with the screen, then create the xft drawable using
...
the menu window since that's the only place on which we draw
- elminate the need to change the drawable on every font draw
2013-05-20 20:21:04 +00:00
okan
5b4c55616a
move the 2 small font helper functions to xutil.c
2013-05-19 23:38:20 +00:00
okan
e41c84c752
move the rest of xft init into screen_conf, since most of it is based on
...
config parameters.
2013-05-19 23:16:29 +00:00
okan
dac00a232f
- switch border colors to Xft
...
- 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)
2013-05-19 23:09:59 +00:00
okan
c84145661e
add support for _NET_CLOSE_WINDOW
2013-05-19 17:05:52 +00:00
okan
556a50d8f7
treat WM_CHANGE_STATE like other atoms
2013-05-19 17:03:55 +00:00
okan
01bfdd7b42
use XGetWMProtocols and simplify WM_PROTOCOL handling
2013-05-19 17:02:04 +00:00
okan
c637a54048
- let callers of font_draw figure out (and pass) the color instead of an
...
'active' flag.
- use strlen() inside of font_draw; the only instance where it wasn't
used happened to be ignored on a subsequent draw.
2013-05-14 12:35:56 +00:00
okan
2b926784ba
new -> init
2013-05-11 22:01:07 +00:00
okan
3a38686137
replace conf_{gap,color,font} with conf_screen since really we are
...
configuring the screen *after* parsing, just as we do a conf_client on
client manage.
2013-05-11 21:46:27 +00:00
okan
9b9e95d742
more type fixes for mask/button
2013-05-10 16:32:47 +00:00
okan
457938fbd7
fix KeySym type
2013-05-10 15:44:43 +00:00
okan
1db7cc2a18
remove group in client_delete directly.
2013-05-06 16:03:11 +00:00
okan
5acf6c147f
no need for font_{ascent,descent,height} wrappers; limit font_width to
...
just requiring xftfont.
2013-05-02 17:25:15 +00:00
okan
94e341725b
use an int in screen_init and avoid needing to cast for screen number (which).
2013-04-29 00:56:47 +00:00
okan
006a29e617
mechanical xu_{get,set}state -> xu_{get,set}_wm_state change
2013-04-17 13:57:06 +00:00
okan
302690624e
slightly rework WM_STATE set/get to make it less ambigious; will be more clear
...
on what needs to change to make it right in the end.
2013-04-17 13:52:20 +00:00
okan
a899d267fe
add conf_ignore and move group_make_autogroup to conf_autogroup to match.
2013-04-17 13:30:38 +00:00
okan
16ed8bf8e4
only a window is required to set WM_STATE. also un-confuse xu_ptr_getpos
...
by using 'win' instead of 'rootwin' so as not to imply only the root
window is queried, rather any window.
2013-04-14 16:13:17 +00:00
okan
6296efadaa
push Screenq into screen_init
2013-04-12 14:46:30 +00:00
okan
3a7596968b
add per-group vert/horiz tiling support; introduces 2 new bind commands,
...
'vtile' and 'htile'; from Alexander Polakov.
2013-01-08 15:16:04 +00:00
okan
6d123cd96d
rename {h,v}max functions for consistency; from Jan Stary
2013-01-04 16:30:03 +00:00
okan
579f981718
really these are just border colors, so adjust the define
2013-01-04 16:27:58 +00:00
okan
698530155d
get rid of struct color
2013-01-04 16:23:04 +00:00
okan
ce8ef02ed2
have screen_find_xinerama() return struct geom *reliably* instead of
...
XineramaScreenInfo; simplifies goop around the callers.
2013-01-02 16:26:34 +00:00
okan
ccbb1f1529
least intrusive way to plug a memleak when unbinding a duplicate key for
...
kbfunc_cmdexec; from Tiago Cunha
2013-01-01 14:33:52 +00:00
okan
0957fbbee2
make num of groups no longer off-by-one; from Alexander Polakov
...
note that a re-exec of cwm will not rewrite the group number atom of
*existing* clients, so they will remain off-by-one until each client has
its atom updated, or of course a restart of X.
2013-01-01 14:19:56 +00:00
okan
dc1e3a8843
gc unused cmd 'flags' variable
2012-12-19 15:21:34 +00:00
okan
c565b790ed
expand CHILDMASK
2012-12-18 18:39:55 +00:00
okan
86eaf5e973
use MOUSEMASK since we already have it
2012-12-18 18:35:36 +00:00
okan
31e9fe4dcd
remove unused SEARCHMASK
2012-12-18 17:44:18 +00:00
okan
e5d59c2d7b
define LockMask|Mod2Mask; no functional change
2012-12-18 17:37:39 +00:00
okan
b848a2b236
simplify config file setup; with Tiago Cunha
2012-12-18 00:14:41 +00:00
okan
479e9f769c
put a default known_hosts into conf
2012-12-17 23:54:57 +00:00
okan
75f65f399e
pull user home directory via getenv or getpwuid and stash it so we don't
...
need to do this everytime; with Tiago Cunha
2012-12-17 23:03:41 +00:00
okan
fe44d1dfce
cmap -> colormap in client_ctx
2012-12-17 18:35:26 +00:00
okan
af13c08108
stash the default screen visual and colormap in screen_ctx
2012-12-17 18:34:06 +00:00
okan
82e8ec4245
replace client highlight with a client flag
2012-12-17 17:48:57 +00:00
okan
8e67d1389c
make client_mtf static
2012-12-17 14:58:46 +00:00
okan
3a3e0383b2
create and use menuq_clear() helper; from Tiago Cunha
2012-12-17 14:32:39 +00:00
okan
980c6de1ff
screen font -> xftfont
2012-12-17 14:20:52 +00:00
okan
96cd288a2a
knf
2012-12-17 02:53:29 +00:00
okan
6900cd3612
non-trivial menu drawing rewrite, moving to Xft and solving various
...
font/color drawing issues; from Alexander Polakov
2012-12-17 02:28:45 +00:00
okan
7edabe94f2
x_setupscreen -> screen_init; no functional change.
2012-11-29 03:54:46 +00:00
okan
5947879dfb
remove dead extern
2012-11-29 03:34:19 +00:00
okan
3e151f8c76
add xasprintf() for upcoming changes.
2012-11-28 14:32:44 +00:00
okan
fad4798e5b
replace hand rolled font_make() with XftFontOpenName() and merge into
...
font_init().
2012-11-28 14:14:44 +00:00
okan
04d4ed7b7e
fix some warnings; inspired by a diff from Thordur Bjornsson.
2012-11-08 20:18:19 +00:00
okan
76b0874b4c
get rid of the xfree() wrapper around free(); from Tiago Cunha.
2012-11-07 20:34:39 +00:00
okan
c53c1af2db
spacing
2012-11-07 14:40:51 +00:00
okan
4b84287d19
tab completion support for menus; from Alexander Polakov.
...
ok sthen@ on an older incarnation
2012-11-07 14:39:44 +00:00
okan
620af2e52d
no longer a reason to carry conf_path in struct conf, so dice.
2012-10-31 22:06:24 +00:00
okan
4fb420514d
replace 'reload' with 'restart', which merely re-exec's cwm using the
...
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
2012-10-31 19:30:19 +00:00
okan
86524e21dd
extend client_resize so that it can know when to reset max flags and
...
bwidth; this allows a client to be resized from a max state, which now
gets treated like a non-max'd client. based on a diff that does part of
this in a different way from Alexander Polakov.
2012-09-09 19:47:47 +00:00
okan
0e8815dfb0
re-use geom struct in client_ctx (saved)geometry.
2012-07-13 17:01:04 +00:00
okan
186a78ff1e
convert xmax/ymax uses to view geometry.
2012-07-13 15:21:35 +00:00
okan
cc08aef0df
introduce screen "view" area and "work" area (gap applied) to simplify
...
various blocks that require understanding the screen geometry.
2012-07-13 14:18:04 +00:00
okan
cb893d0aa9
querying for Xinerama should be done per display, not per screen, so
...
move chuck to display init; allows some shuffling to occur limiting
screen_init_xinerama()'s scope while keeping order intact.
2012-07-06 14:18:00 +00:00
okan
1124ee5cc1
the display's width and height are updated after an XRandR event so we
...
don't need to pass down the new values to screen_update_geometry(); so
just read the width/height values directly for both uses of
screen_update_geometry(). prep for further changes in this area.
2012-07-05 17:35:13 +00:00
okan
f98e123bfc
re-implement atom handing; makes for a normalized and more consistent
...
separation between cwm and ewmh. seen by a few.
2012-07-03 13:49:03 +00:00
okan
490ef6a7df
instead of using the menu window for _NET_SUPPORTING_WM_CHECK, create a
...
dummy one to use instead; allows us to not have to wait for menu_init(),
so re-shuffle _NET_SUPPORTED slightly.
ok sthen@
2012-05-16 01:17:14 +00:00
okan
ac82403a51
cycle through other common cycling modifiers; based on a diff from
...
Alexander Polakov.
ok sthen@
2012-05-16 01:09:17 +00:00
okan
dd5bfdb064
convert from deprecated XKeycodeToKeysym to XkbKeycodeToKeysym
...
ok sthen@
2012-05-16 01:04:36 +00:00
okan
57766d8606
altpersist->cycling to be more clear that this is for cycling mod
...
persistence; based on a diff from Alexander Polakov, in preparation for
looping through other potential cycling modifiers.
2012-05-13 15:17:13 +00:00
okan
796b32123d
add WM_TRANSIENT_FOR event support: moves dialogs, toolbars and such to
...
the group of the main application window; based on a diff from Alexander
Polakov with CLIENT_IGNORE flag suggestion from oga@.
ok oga@
2011-09-13 08:41:57 +00:00
okan
82d31aec1d
allow configurable menu font color; from Alexander Polakov with a tweak
...
from me.
ok oga@
2011-09-08 12:35:33 +00:00
oga
44d8b1d3ac
Make flavours of maximisation additive.
...
i.e. horiz-max + vertmax = full maximisation. full - horiz = vertmax.
etc.
Martynas wrote something like this once, so I did okan, this version
seems to finally deal with the corner cases.
ok okan@.
2011-09-04 16:59:31 +00:00
okan
b852a73a60
split off window hints from geometry so we don't need to carry them all
...
around when dealing with {,h,v}max. same idea from oga.
2011-09-03 09:42:33 +00:00
okan
325129c6ba
simplify color initialization.
...
ok oga@
2011-09-03 09:25:39 +00:00
okan
142a36a0c0
Add {r,}cycleingroup to cycle through clients belonging to the same
...
group as the active client (as opposed to all unhidden clients); from
Alexander Polakov, with a tiny tweak requested by oga.
ok oga@
2011-09-03 09:20:58 +00:00
okan
b51f8e6a99
"defaultfont" is unclear (and confusing while reading code) when it also
...
applies to the user supplied font, so rename.
ok oga@
2011-09-03 09:17:16 +00:00
okan
69ac0624cc
Clarify defines and make them not look like non-local ones; started by a
...
small diff from Thomas Pfaff.
ok oga@
2011-07-23 13:09:11 +00:00
okan
c585dfbf32
correct spelling; from Alexander Polakov.
2011-07-14 11:39:53 +00:00
okan
d8747ae702
add 'normal' cursor and shuffle the others we use to make a bit more
...
sense and to be slightly less un-expected. from Alexander Polakov.
re-use 'normal' cursor now instead XC_hand1 for menu selection. i
really wish X had real docs and made sense.
ok on earlier diff with '?' removed (but it's back now) oga@
2011-06-24 06:52:23 +00:00
okan
8f1c583361
New option to raise a client via the mouse (unbound by default);
...
opposing action, lower, already exists and bound. Both keyboard
mappings already exist.
'no opinion either way' oga@
2011-06-24 06:09:26 +00:00
okan
34ba6cdbcc
introduce a new config option to snap to the screen edge. 'snapdist'
...
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...)
2011-06-24 06:06:24 +00:00
okan
b230e611be
re-do various bits of {,h,v}max for simplicity and less flag handling.
...
as a bonus, flipping between various combinations of vmax+hmax provides
a more predictable behavior.
commitski oga@
2011-06-24 06:01:47 +00:00
okan
c2a8363dd9
struct XftFont already has height which we can use directly instead of
...
calculating ourselves, so do so.
ok oga@
2011-06-24 05:45:57 +00:00
okan
f6fcd0eb5d
alter a few function returns and prototypes; found by lint.
...
ok oga@
2011-06-24 05:40:09 +00:00
okan
89d8a14b6d
collapse client and group {r,}cycle defines since they are really
...
the same thing.
ok oga@
2011-06-24 05:30:42 +00:00