Commit Graph

241 Commits

Author SHA1 Message Date
okan
697099fca8 Store the screen's visual type and colormap. 2018-02-13 15:43:15 +00:00
okan
088c402dd1 Clean up conf_file/homedir and conf_init() bits. 2018-02-09 19:54:54 +00:00
okan
17954eae66 Simplification; use asprintf where appropriate now. 2018-02-02 13:27:25 +00:00
okan
ebf71bdff9 Generate name_to_func[] in a clean and readable fashion. 2018-01-23 16:00:21 +00:00
okan
cd4212fc60 Convert menu-exec-wm from an abritrary exec menu, into a config-based menu from
which one may configure (wm <name> <path_and_args>) (and choose) specific
window managers to replace the running one. 'wm cwm cwm' is included by
default.

No objections and seems sensible to sthen.
2017-12-29 20:03:46 +00:00
okan
c7619bea34 Add support for _NET_WM_STATE_SKIP_PAGER and _NET_WM_STATE_SKIP_TASKBAR; eerily
close to cwm's 'ignore'.

Roughly based on an initial diff from Walter Alejandro Iglesias, but with
support for both Atoms and without cwm-based bindings.
2017-12-19 14:30:53 +00:00
okan
6fd1cc10d9 Original idea from Dimitris Papastamos to move windows to corners a while ago;
re-proposed by Julien Steinhauser with an updated diff. Apparently this was in
the original calmnwm.

However, expand the original idea and let clients 'snap' to edges instead,
neatly allowing key bindings that snap to adjacent edges (i.e. corners) as
well. No default bindings assigned.
2017-12-07 16:25:33 +00:00
okan
f7999cdcf1 stash dir into conf since it'll be of use 2017-12-07 15:47:14 +00:00
okan
91bf263571 Pull over the remaining re-implemented window move/resize functions and create
a wrapper so that the key and mouse based move/resize callbacks can be unified.
This has already been done with other window operations and menus.
2017-07-14 17:23:38 +00:00
okan
ea88c2222f rename one function, matching others, to help upcoming change 2017-07-12 16:56:26 +00:00
okan
ba98b33fee Alter callbacks to take a struct instead of a growing number of arguments;
greatly simplifies upcoming work.
2017-05-09 13:40:18 +00:00
okan
13e3ebc448 stray newlines 2016-12-06 21:59:33 +00:00
okan
382e777e16 'window-search' is spelled 'menu-window'; the former snuck in during the
conversion('menu-window' already existed and was properlly documented); found
the hard way by sthen@ while trying to convert.
2016-12-06 15:03:13 +00:00
okan
52901073ce Fold unbinding functions into one for each, key and mouse; plugs a leak when
unbinding a mouse button bound to a command.
2016-12-02 17:02:17 +00:00
okan
a5a9212293 use the correct type 2016-12-02 16:50:19 +00:00
okan
5a905031f4 Change 'menu-window' to display all windows; then add 'menu-window-hidden' for
the previous behaviour of 'menu-window'.  'menu-window' becomes the default
binding; use 'bind-mouse "1" menu-window-hidden' to restore old behaviour for
those who prefer.

OK sthen@ (long long time ago on a different version)
2016-12-01 18:17:52 +00:00
okan
58b2eb545f Normalize bind function names, based on a few categories: window, group, menu
and pointer.

Replace 'bind' and 'mousebind' options with 'bind-key' and 'bind-mouse',
respectively, replace special 'unmap' keyword with 'unbind-key' and
'unbind-mouse', and additionally allow unbinding all with 'all' keyword.
2016-12-01 17:17:27 +00:00
okan
c33b352974 revert previous; upcoming changes will hopefully deal with these more
naturally.
2016-11-15 00:22:02 +00:00
okan
706ee11014 Add a wrapper based upon xevent handlers around client move/resize for key and
mouse bindings.
2016-11-15 00:07:03 +00:00
okan
d18539103e Define callbacks, then default bindings. 2016-11-14 21:25:59 +00:00
okan
a78a724512 Reorganize for upcoming changes. 2016-11-14 19:56:05 +00:00
okan
f5f2a608ff Remove the (8) default bindings for pointer move since they conflict with
default bindings for emacs, which wins; the feature remains and can be bound to
whatever users wish with cwmrc(5).

from mpi@
2016-11-14 13:52:33 +00:00
okan
943e3e7534 Make it clear these are flags. 2016-10-24 20:44:08 +00:00
okan
6eaec44a4a Sprinkle __func__ in appropriate error messages. 2016-10-24 17:39:38 +00:00
okan
4811ec0433 Refactor callbacks to take a void * so as to not try and generalize into
client_ctx in keypress and buttonpress event handlers; pass appropriate *ctx's
based on context.

While here, limit some globals, replace defines with appropriate variables and
fix some naming.
2016-10-18 17:03:30 +00:00
okan
a1a192d258 Rename 2 kbfunc to match closer to what they do 2016-10-06 14:53:52 +00:00
okan
a53fef7b1e Add an argument to the callbacks to pass the xevent context, button or
key press. This allows to remove a few hacks to duplicate functions only
for behaviour changes; now differing behaviours are pushed down to the
callback. Also will allow for previously unavailable actions to be bind-able
down the road.
2016-10-06 14:41:19 +00:00
okan
62af7b9761 Add CM-a for 'nogroup' (CM-0 stays for now); update manpage to reflect. 2016-10-05 13:35:17 +00:00
okan
ddbad284c7 Stash wmname into conf. 2016-10-05 13:10:59 +00:00
okan
a7e1d9acfc Calculate client nameqlen in client_setname(), the only place it's
needed/used.
2016-10-04 15:52:32 +00:00
okan
d592dd99f7 Turn CALMWM_NGROUPS define into variable, ngroups. 2016-10-04 15:18:20 +00:00
okan
cdbe6c3bc9 Start simplifying menu code; and in turn, remove a cursor no longer
needed.
2016-10-03 18:43:49 +00:00
okan
6889482fc7 Defaults are split between defines and conf_init(); normalize these, as
well as give 'sticky' groups its own variable.
2016-10-03 14:42:34 +00:00
okan
54cccf114b Use instinsic X11 functions for key/btn/ptr grab/ungrab/regrab requests;
the one line wrappers provided no value and limited altering calls where
needed; additionally, most of them had but one caller.
2016-09-30 18:28:06 +00:00
okan
1b369f6063 Mechanical change: move screen menu bits to their own struct. 2016-09-29 00:21:55 +00:00
okan
374d386034 Continue merging kb and mouse functions: fold
mousefunc_menu_{client,cmd,group} into the respective
kbfunc_menu_{client,cmd,group} functions; simply pass a flag down from
config denoting mouse action behaviour.
2016-09-22 14:36:03 +00:00
okan
310ca33ad8 change 'sticky' to 'stick' to toggle client stickiness (seems the
default binding worked for everyone for a long time!); conflict with
group sticky found by Ali Farzanrad - thanks!
2016-09-12 13:47:00 +00:00
matthieu
29156ec96c add a column to previous commit for consitency. 2016-08-13 09:59:48 +00:00
matthieu
c4dbc0305f conf_screen: report the fontname that can't be opened in case of failure.
ok dcoppa@
2016-08-13 09:58:37 +00:00
okan
402ba9437e Fix a typo from r1.201; fixes window_grouptoggle binding. 2015-11-17 15:19:19 +00:00
okan
403542f5b2 more client vs screen context differences 2015-11-12 21:28:03 +00:00
okan
db0907a53d Move kb pointer movement out of the kbfunc_client_moveresize since it's
got nothing to do with clients, thus doing flags work causes lots of
waste and almost useless jumpy pointer movements; while here, split out
move and resize since they share almost no code, just like mouse client
move/resize; factor out amount and factor. Still wonder why this is
here, but it works now.
2015-11-12 18:26:41 +00:00
okan
0abb5fd0f1 Start cleaning up name vs function differences; replace magic numbers. 2015-11-10 20:05:33 +00:00
okan
c10cac3b1e On execwm, we should properly release resources before exec'ing into a
new window manager; so allow CWM_EXEC_WM to assign new wm to wm_argv and
pass through cwm_status (now EXECWM) so that x_teardown() gets called
before exec'ing the new window manager.  Removes the need for a separate
x_restart() now, using new wm_argv; and consolidates errno for execvp.
2015-09-16 17:58:25 +00:00
okan
ee0c4ddc88 Implement _NET_CLIENT_LIST_STACKING (from Thomas Admin), but
bottom-to-top order, as per spec (notified Thomas as well).
2015-08-24 15:42:57 +00:00
okan
6752f43126 Sort _NET_WM_STATE Atoms like the spec. 2015-08-24 14:56:10 +00:00
okan
ba02c63913 Fix whitespace. 2015-08-21 16:52:37 +00:00
okan
1e8d4a7d04 Add client freeze extension to _NET_WM_STATE Atom, allowing flag to
persist. As usual with new Atoms, requires X restart.
2015-08-21 16:30:02 +00:00
okan
d24e89a34a Leave command list order from .cwmrc alone; remove sort. 2015-08-21 15:55:39 +00:00
okan
1a1e8c47e8 Alter big move and resize bindings to match what's in cwm(1);
functionally the same, but re-binding should be based on default
bindings. Matches other similiar bindings.

Discovered by a portable user.
2015-08-20 14:45:15 +00:00