void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

commit 49c9216f02c933fae96974feb1ceef225d58dd26
parent fdfe46e4f29146bfbdc638e3e4c3fda084bbebbc
Author: Dash Eclipse <dash@ezup.dev>
Date:   Wed, 28 Oct 2020 12:28:42 +0000

New package: 2bwm

Diffstat:
Asrcpkgs/2bwm/files/config.h | 225+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrcpkgs/2bwm/template | 32++++++++++++++++++++++++++++++++
2 files changed, 257 insertions(+), 0 deletions(-)

diff --git a/srcpkgs/2bwm/files/config.h b/srcpkgs/2bwm/files/config.h @@ -0,0 +1,225 @@ +///---User configurable stuff---/// +///---Modifiers---/// +#define MOD XCB_MOD_MASK_4 /* Super/Windows key or check xmodmap(1) with -pm defined in /usr/include/xcb/xproto.h */ +///--Speed---/// +/* Move this many pixels when moving or resizing with keyboard unless the window has hints saying otherwise. + *0)move step slow 1)move step fast + *2)mouse slow 3)mouse fast */ +static const uint16_t movements[] = {20,40,15,400}; +/* resize by line like in mcwm -- jmbi */ +static const bool resize_by_line = true; +/* the ratio used when resizing and keeping the aspect */ +static const float resize_keep_aspect_ratio= 1.03; +///---Offsets---/// +/*0)offsetx 1)offsety + *2)maxwidth 3)maxheight */ +static const uint8_t offsets[] = {0,0,0,0}; /* 0, 35, 0, 24 */ +///---Colors---/// +/*0)focuscol 1)unfocuscol + *2)fixedcol 3)unkilcol + *4)fixedunkilcol 5)outerbordercol + *6)emptycol */ +static const char *colors[] = {"#35586c","#333333","#7a8c5c","#ff6666","#cc9933","#0d131a","#000000"}; +/* if this is set to true the inner border and outer borders colors will be swapped */ +static const bool inverted_colors = true; +///---Cursor---/// +/* default position of the cursor: + * correct values are: + * TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, MIDDLE + * All these are relative to the current window. */ +#define CURSOR_POSITION MIDDLE +///---Borders---/// +/*0) Outer border size. If you put this negative it will be a square. + *1) Full borderwidth 2) Magnet border size + *3) Resize border size */ +static const uint8_t borders[] = {3,5,5,4}; +/* Windows that won't have a border. + * It uses substring comparison with what is found in the WM_NAME + * attribute of the window. You can test this using `xprop WM_NAME` + */ +#define LOOK_INTO "WM_NAME" +static const char *ignore_names[] = {"bar", "xclock"}; +///--Menus and Programs---/// +static const char *termcmd[] = { "st", NULL }; +static const char *menucmd[] = { "dmenu_run", NULL }; +///--Custom foo---/// +static void halfandcentered(const Arg *arg) +{ + Arg arg2 = {.i=TWOBWM_MAXHALF_VERTICAL_LEFT}; + maxhalf(&arg2); + Arg arg3 = {.i=TWOBWM_TELEPORT_CENTER}; + teleport(&arg3); +} +///---Sloppy focus behavior---/// +/* + * Command to execute when switching from sloppy focus to click to focus + * The strings "Sloppy" and "Click" will be passed as the last argument + * If NULL this is ignored + */ +static const char *sloppy_switch_cmd[] = {}; +//static const char *sloppy_switch_cmd[] = { "notify-send", "toggle sloppy", NULL }; +static void toggle_sloppy(const Arg *arg) +{ + is_sloppy = !is_sloppy; + if (arg->com != NULL && LENGTH(arg->com) > 0) { + start(arg); + } +} +///---Shortcuts---/// +/* Check /usr/include/X11/keysymdef.h for the list of all keys + * 0x000000 is for no modkey + * If you are having trouble finding the right keycode use the `xev` to get it + * For example: + * KeyRelease event, serial 40, synthetic NO, window 0x1e00001, + * root 0x98, subw 0x0, time 211120530, (128,73), root:(855,214), + * state 0x10, keycode 171 (keysym 0x1008ff17, XF86AudioNext), same_screen YES, + * XLookupString gives 0 bytes: + * XFilterEvent returns: False + * + * The keycode here is keysym 0x1008ff17, so use 0x1008ff17 + * + * + * For AZERTY keyboards XK_1...0 should be replaced by : + * DESKTOPCHANGE( XK_ampersand, 0) + * DESKTOPCHANGE( XK_eacute, 1) + * DESKTOPCHANGE( XK_quotedbl, 2) + * DESKTOPCHANGE( XK_apostrophe, 3) + * DESKTOPCHANGE( XK_parenleft, 4) + * DESKTOPCHANGE( XK_minus, 5) + * DESKTOPCHANGE( XK_egrave, 6) + * DESKTOPCHANGE( XK_underscore, 7) + * DESKTOPCHANGE( XK_ccedilla, 8) + * DESKTOPCHANGE( XK_agrave, 9)* + */ +#define DESKTOPCHANGE(K,N) \ +{ MOD , K, changeworkspace, {.i=N}}, \ +{ MOD |SHIFT, K, sendtoworkspace, {.i=N}}, +static key keys[] = { + /* modifier key function argument */ + // Focus to next/previous window + { MOD , XK_Tab, focusnext, {.i=TWOBWM_FOCUS_NEXT}}, + { MOD |SHIFT, XK_Tab, focusnext, {.i=TWOBWM_FOCUS_PREVIOUS}}, + // Kill a window + { MOD , XK_q, deletewin, {}}, + // Resize a window + { MOD |SHIFT, XK_k, resizestep, {.i=TWOBWM_RESIZE_UP}}, + { MOD |SHIFT, XK_j, resizestep, {.i=TWOBWM_RESIZE_DOWN}}, + { MOD |SHIFT, XK_l, resizestep, {.i=TWOBWM_RESIZE_RIGHT}}, + { MOD |SHIFT, XK_h, resizestep, {.i=TWOBWM_RESIZE_LEFT}}, + // Resize a window slower + { MOD |SHIFT|CONTROL,XK_k, resizestep, {.i=TWOBWM_RESIZE_UP_SLOW}}, + { MOD |SHIFT|CONTROL,XK_j, resizestep, {.i=TWOBWM_RESIZE_DOWN_SLOW}}, + { MOD |SHIFT|CONTROL,XK_l, resizestep, {.i=TWOBWM_RESIZE_RIGHT_SLOW}}, + { MOD |SHIFT|CONTROL,XK_h, resizestep, {.i=TWOBWM_RESIZE_LEFT_SLOW}}, + // Move a window + { MOD , XK_k, movestep, {.i=TWOBWM_MOVE_UP}}, + { MOD , XK_j, movestep, {.i=TWOBWM_MOVE_DOWN}}, + { MOD , XK_l, movestep, {.i=TWOBWM_MOVE_RIGHT}}, + { MOD , XK_h, movestep, {.i=TWOBWM_MOVE_LEFT}}, + // Move a window slower + { MOD |CONTROL, XK_k, movestep, {.i=TWOBWM_MOVE_UP_SLOW}}, + { MOD |CONTROL, XK_j, movestep, {.i=TWOBWM_MOVE_DOWN_SLOW}}, + { MOD |CONTROL, XK_l, movestep, {.i=TWOBWM_MOVE_RIGHT_SLOW}}, + { MOD |CONTROL, XK_h, movestep, {.i=TWOBWM_MOVE_LEFT_SLOW}}, + // Teleport the window to an area of the screen. + // Center: + { MOD , XK_g, teleport, {.i=TWOBWM_TELEPORT_CENTER}}, + // Center y: + { MOD |SHIFT, XK_g, teleport, {.i=TWOBWM_TELEPORT_CENTER_Y}}, + // Center x: + { MOD |CONTROL, XK_g, teleport, {.i=TWOBWM_TELEPORT_CENTER_X}}, + // Top left: + { MOD , XK_y, teleport, {.i=TWOBWM_TELEPORT_TOP_LEFT}}, + // Top right: + { MOD , XK_u, teleport, {.i=TWOBWM_TELEPORT_TOP_RIGHT}}, + // Bottom left: + { MOD , XK_b, teleport, {.i=TWOBWM_TELEPORT_BOTTOM_LEFT}}, + // Bottom right: + { MOD , XK_n, teleport, {.i=TWOBWM_TELEPORT_BOTTOM_RIGHT}}, + // Resize while keeping the window aspect + { MOD , XK_Home, resizestep_aspect, {.i=TWOBWM_RESIZE_KEEP_ASPECT_GROW}}, + { MOD , XK_End, resizestep_aspect, {.i=TWOBWM_RESIZE_KEEP_ASPECT_SHRINK}}, + // Maximize (ignore offset and no EWMH atom) + { MOD , XK_x, maximize, {}}, + // Full screen (disregarding offsets and adding EWMH atom) + { MOD |SHIFT , XK_x, fullscreen, {}}, + // Maximize vertically + { MOD , XK_m, maxvert_hor, {.i=TWOBWM_MAXIMIZE_VERTICALLY}}, + // Maximize horizontally + { MOD |SHIFT, XK_m, maxvert_hor, {.i=TWOBWM_MAXIMIZE_HORIZONTALLY}}, + // Maximize and move + // vertically left + { MOD |SHIFT, XK_y, maxhalf, {.i=TWOBWM_MAXHALF_VERTICAL_LEFT}}, + // vertically right + { MOD |SHIFT, XK_u, maxhalf, {.i=TWOBWM_MAXHALF_VERTICAL_RIGHT}}, + // horizontally left + { MOD |SHIFT, XK_b, maxhalf, {.i=TWOBWM_MAXHALF_HORIZONTAL_BOTTOM}}, + // horizontally right + { MOD |SHIFT, XK_n, maxhalf, {.i=TWOBWM_MAXHALF_HORIZONTAL_TOP}}, + //fold half vertically + { MOD |SHIFT|CONTROL,XK_y, maxhalf, {.i=TWOBWM_MAXHALF_FOLD_VERTICAL}}, + //fold half horizontally + { MOD |SHIFT|CONTROL,XK_b, maxhalf, {.i=TWOBWM_MAXHALF_FOLD_HORIZONTAL}}, + //unfold vertically + { MOD |SHIFT|CONTROL,XK_u, maxhalf, {.i=TWOBWM_MAXHALF_UNFOLD_VERTICAL}}, + //unfold horizontally + { MOD |SHIFT|CONTROL,XK_n, maxhalf, {.i=TWOBWM_MAXHALF_UNFOLD_HORIZONTAL}}, + // Next/Previous screen + { MOD , XK_comma, changescreen, {.i=TWOBWM_NEXT_SCREEN}}, + { MOD , XK_period, changescreen, {.i=TWOBWM_PREVIOUS_SCREEN}}, + // Raise or lower a window + { MOD , XK_r, raiseorlower, {}}, + // Next/Previous workspace + { MOD , XK_v, nextworkspace, {}}, + { MOD , XK_c, prevworkspace, {}}, + // Move to Next/Previous workspace + { MOD |SHIFT , XK_v, sendtonextworkspace,{}}, + { MOD |SHIFT , XK_c, sendtoprevworkspace,{}}, + // Iconify the window + { MOD , XK_i, hide, {}}, + // Make the window unkillable + { MOD , XK_a, unkillable, {}}, + // Make the window appear always on top + { MOD, XK_t, always_on_top, {}}, + // Make the window stay on all workspaces + { MOD , XK_f, fix, {}}, + // Move the cursor + { MOD , XK_Up, cursor_move, {.i=TWOBWM_CURSOR_UP_SLOW}}, + { MOD , XK_Down, cursor_move, {.i=TWOBWM_CURSOR_DOWN_SLOW}}, + { MOD , XK_Right, cursor_move, {.i=TWOBWM_CURSOR_RIGHT_SLOW}}, + { MOD , XK_Left, cursor_move, {.i=TWOBWM_CURSOR_LEFT_SLOW}}, + // Move the cursor faster + { MOD |SHIFT, XK_Up, cursor_move, {.i=TWOBWM_CURSOR_UP}}, + { MOD |SHIFT, XK_Down, cursor_move, {.i=TWOBWM_CURSOR_DOWN}}, + { MOD |SHIFT, XK_Right, cursor_move, {.i=TWOBWM_CURSOR_RIGHT}}, + { MOD |SHIFT, XK_Left, cursor_move, {.i=TWOBWM_CURSOR_LEFT}}, + // Start programs + { MOD , XK_w, start, {.com = menucmd}}, + { MOD , XK_Return, start, {.com = termcmd}}, + // Exit or restart 2bwm + { MOD |CONTROL, XK_q, twobwm_exit, {.i=0}}, + { MOD |CONTROL, XK_r, twobwm_restart, {.i=0}}, + { MOD , XK_space, halfandcentered, {.i=0}}, + { MOD , XK_s, toggle_sloppy, {.com = sloppy_switch_cmd}}, + // Change current workspace + DESKTOPCHANGE( XK_asterisk, 0) // 0 + DESKTOPCHANGE( XK_parenleft, 1) // 1 + DESKTOPCHANGE( XK_parenright, 2) + DESKTOPCHANGE( XK_braceright, 3) + DESKTOPCHANGE( XK_plus, 4) + DESKTOPCHANGE( XK_braceleft, 5) + DESKTOPCHANGE( XK_bracketright, 6) + DESKTOPCHANGE( XK_bracketleft, 7) + DESKTOPCHANGE( XK_exclam, 8) + DESKTOPCHANGE( XK_equal, 9) // 9 +}; +// the last argument makes it a root window only event +static Button buttons[] = { + { MOD ,XCB_BUTTON_INDEX_1, mousemotion, {.i=TWOBWM_MOVE}, false}, + { MOD ,XCB_BUTTON_INDEX_3, mousemotion, {.i=TWOBWM_RESIZE}, false}, + { 0 ,XCB_BUTTON_INDEX_3, start, {.com = menucmd}, true}, + { MOD|SHIFT, XCB_BUTTON_INDEX_1, changeworkspace, {.i=0}, false}, + { MOD|SHIFT, XCB_BUTTON_INDEX_3, changeworkspace, {.i=1}, false}, + { MOD|ALT, XCB_BUTTON_INDEX_1, changescreen, {.i=1}, false}, + { MOD|ALT, XCB_BUTTON_INDEX_3, changescreen, {.i=0}, false} +}; diff --git a/srcpkgs/2bwm/template b/srcpkgs/2bwm/template @@ -0,0 +1,32 @@ +# Template file for '2bwm' +pkgname=2bwm +version=0.3 +revision=1 +_commit="148d83254ca5f0fbc464ced5c487103aaf959559" +wrksrc="${pkgname}-${_commit}" +build_style=gnu-makefile +makedepends="libxcb-devel xcb-util-keysyms-devel xcb-util-wm-devel xcb-util-xrm-devel" +short_desc="Fast floating window manager" +maintainer="Dash Eclipse <dash@ezup.dev>" +license="ISC" +homepage="https://github.com/venam/2bwm" +distfiles="https://github.com/venam/${pkgname}/archive/${_commit}.tar.gz" +checksum=307cc1a47c26ba54d0a8a7aa29a87bc9768ea5524f03078c5cc7b2602e3e23e3 +tags="ezup gitpkg ${_commit}" + +pre_build() { + [ -e ${FILESDIR}/config.h ] && cp ${FILESDIR}/config.h config.h + sed -i 's|-Os ||g' Makefile + sed -i 's|^CFLAGS+=|override CFLAGS +=|g' Makefile + sed -i 's|^LDFLAGS+=|override LDFLAGS +=|g' Makefile + sed -i '/#include <stdlib.h>/i#define _GNU_SOURCE' 2bwm.c + sed -n 1,17p 2bwm.c >LICENSE +} +do_install() { + vbin 2bwm + vbin hidden + vman 2bwm.man 2bwm.1 + vman hidden.man hidden.1 + vdoc README.md README + vlicense LICENSE +}