diff options
author | Joe <rbo@gmx.us> | 2025-03-02 05:36:53 +0100 |
---|---|---|
committer | Joe <rbo@gmx.us> | 2025-03-02 05:36:53 +0100 |
commit | 35c41dc12d77461d0649daf9fb22132ff4aa1991 (patch) | |
tree | 0f0b10b329863aa3f4ea6a2fb387431321f657ec | |
parent | actually usable (diff) | |
download | dwl-35c41dc12d77461d0649daf9fb22132ff4aa1991.tar.gz dwl-35c41dc12d77461d0649daf9fb22132ff4aa1991.tar.bz2 dwl-35c41dc12d77461d0649daf9fb22132ff4aa1991.tar.xz dwl-35c41dc12d77461d0649daf9fb22132ff4aa1991.tar.zst dwl-35c41dc12d77461d0649daf9fb22132ff4aa1991.zip |
nice nice
-rw-r--r-- | config.def.h | 32 | ||||
-rw-r--r-- | config.mk | 4 | ||||
-rw-r--r-- | dwl.c | 50 |
3 files changed, 76 insertions, 10 deletions
diff --git a/config.def.h b/config.def.h index d69d0ff..7593441 100644 --- a/config.def.h +++ b/config.def.h @@ -72,6 +72,21 @@ static uint32_t tagsel[][3] = { { 0x7c6f64ff, 0x1d2021ff }, // empty }; +static const char *tagselstr[][3] = { + /* fg bg */ + // gruvbox dark + { "#cc241d", "#1d2021" }, // red + { "#d65d0e", "#1d2021" }, // orange + { "#d79921", "#1d2021" }, // yellow + { "#458588", "#1d2021" }, // blue + { "#8ec07c", "#1d2021" }, // cyan + { "#98971a", "#1d2021" }, // green + { "#b16286", "#1d2021" }, // magenta + { "#fe8019", "#1d2021" }, // re orange + { "#ebdbb2", "#1d2021" }, // white + { "#7c6f64", "#1d2021" }, // empty +}; + /* logging */ static int log_level = WLR_ERROR; @@ -84,6 +99,7 @@ static const Rule rules[] = { { "Alacritty", NULL, 0, 0, 1, 1, -1, 0 }, { "st", NULL, 0, 0, 1, 1, -1, 0 }, { "mpv", NULL, 0, 0, 0, 0, -1, 0 }, + { "stalonetray", NULL, 1 << 8, 1, 0, 0, -1, 0 }, { NULL, "spterm", 0, 1, 1, 0, -1, 's' }, { NULL, "spfm", 0, 1, 1, 0, -1, 'f' }, { NULL, "pcmanfm", 0, 1, 0, 0, -1, 'p' }, @@ -199,7 +215,7 @@ static const enum libinput_config_tap_button_map button_map = LIBINPUT_CONFIG_TA /* commands */ static const char *termcmd[] = { "alacritty", NULL }; -static const char *menucmd[] = { "wmenu-run", NULL }; +static const char *menucmd[] = { "dmrun", NULL }; static const char *dmlog_cmd[] = { "dmlog", NULL }; static const char *dmpass_full_cmd[] = { "dmpass", "--full", NULL }; static const char *dmpass_cmd[] = { "dmpass", NULL }; @@ -209,8 +225,8 @@ static const char *browser_cmd[] = { "firefox", NULL }; static const Key keys[] = { /* Note that Shift changes certain key codes: c -> C, 2 -> at, etc. */ /* modifier key function argument */ - { MODKEY, XKB_KEY_p, spawn, {.v = menucmd} }, - { MODKEY, XKB_KEY_Return, spawn, {.v = termcmd} }, + { MODKEY, XKB_KEY_p, wmenuspawn, {.v = menucmd } }, + { MODKEY, XKB_KEY_Return, spawn, {.v = termcmd } }, { MODKEY, XKB_KEY_F1, togglescratch, {.v = spterm } }, { MODKEY, XKB_KEY_F2, togglescratch, {.v = spfm } }, { MODKEY|SHIFT, XKB_KEY_F2, togglescratch, {.v = sppcman } }, @@ -218,11 +234,11 @@ static const Key keys[] = { { MODKEY, XKB_KEY_F4, togglescratch, {.v = spflip } }, { MODKEY, XKB_KEY_F5, togglescratch, {.v = spmpd } }, { MODKEY, XKB_KEY_F6, togglescratch, {.v = spnews } }, - { MODKEY|CTRL, XKB_KEY_F12, spawn, {.v = dmlog_cmd } }, - { MODKEY|CTRL, XKB_KEY_BackSpace, spawn, {.v = dmlog_cmd } }, - { MODKEY|CTRL, XKB_KEY_p, spawn, {.v = dmpass_cmd } }, - { MODKEY|CTRL|SHIFT, XKB_KEY_p, spawn, {.v = dmpass_full_cmd } }, - { MODKEY|CTRL, XKB_KEY_o, spawn, {.v = dmotp_cmd } }, + { MODKEY|CTRL, XKB_KEY_F12, wmenuspawn, {.v = dmlog_cmd } }, + { MODKEY|CTRL, XKB_KEY_BackSpace, wmenuspawn, {.v = dmlog_cmd } }, + { MODKEY|CTRL, XKB_KEY_p, wmenuspawn, {.v = dmpass_cmd } }, + { MODKEY|CTRL|SHIFT, XKB_KEY_P, wmenuspawn, {.v = dmpass_full_cmd } }, + { MODKEY|CTRL, XKB_KEY_o, wmenuspawn, {.v = dmotp_cmd } }, { MODKEY, XKB_KEY_b, togglebar, {0} }, { MODKEY, XKB_KEY_j, focusstack, {.i = +1} }, { MODKEY, XKB_KEY_k, focusstack, {.i = -1} }, @@ -11,7 +11,7 @@ DATADIR = $(PREFIX)/share XWAYLAND = XLIBS = # Uncomment to build XWayland support -#XWAYLAND = -DXWAYLAND -#XLIBS = xcb xcb-icccm +XWAYLAND = -DXWAYLAND +XLIBS = xcb xcb-icccm CC = gcc @@ -414,6 +414,7 @@ static void urgent(struct wl_listener *listener, void *data); static void view(const Arg *arg); static void virtualkeyboard(struct wl_listener *listener, void *data); static void virtualpointer(struct wl_listener *listener, void *data); +static void wmenuspawn(const Arg *arg); static Monitor *xytomon(double x, double y); static void xytonode(double x, double y, struct wlr_surface **psurface, Client **pc, LayerSurface **pl, double *nx, double *ny); @@ -3707,6 +3708,55 @@ virtualpointer(struct wl_listener *listener, void *data) wlr_cursor_map_input_to_output(cursor, device, event->suggested_output); } +void +wmenuspawn(const Arg *arg) +{ + unsigned int focused_tag; + unsigned long int i, j; + char **cmd; + + cmd = malloc(8 * sizeof(char*)); + if (!cmd) + return; + + for (i = 0; i < 8 && ((char**)arg->v)[i] != NULL; i++) { + cmd[i] = strdup(((char**)arg->v)[i]); + if (!cmd[i]) { + for (j = 0; j < i; j++) { + free(cmd[j]); + } + free(cmd); + return; + } + } + focused_tag = selmon->tagset[selmon->seltags]; + for (j = 0; j < LENGTH(tags); j++) { + if (focused_tag & (1 << (j - 1))) { + break; + } + } + cmd[i] = strdup(tagselstr[j - 1][0]); + if (!cmd[i]) { + for (j = 0; j < i; j++) { + free(cmd[j]); + } + free(cmd); + return; + } + cmd[i + 1] = NULL; + if (fork() == 0) { + close(STDIN_FILENO); + dup2(STDERR_FILENO, STDOUT_FILENO); + setsid(); + execvp(((char **)cmd)[0], (char **)cmd); + die("dwl: execvp %s failed:", ((char **)cmd)[0]); + } + for (i = 0; cmd[i] != NULL; i++) { + free(cmd[i]); + } + free(cmd); +} + Monitor * xytomon(double x, double y) { |