From 06f344c8fbcae78dc32139a4c746ce1d37644d69 Mon Sep 17 00:00:00 2001 From: Raphael Robatsch Date: Tue, 26 Oct 2021 16:40:19 +0200 Subject: [PATCH] spawn function --- src/bar.cpp | 5 ++--- src/common.hpp | 3 +-- src/config.hpp | 2 ++ src/main.cpp | 11 +++++++++++ 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/bar.cpp b/src/bar.cpp index b1700e9..41fa578 100644 --- a/src/bar.cpp +++ b/src/bar.cpp @@ -135,7 +135,6 @@ void Bar::render() renderText(layoutNames[_layout]); _titleX = _x; renderText(_title); - _statusX = _x; renderStatus(); _painter = nullptr; @@ -184,8 +183,8 @@ void Bar::renderStatus() { _painter->fillRect(_x, 0, _bufs->width-_x, _bufs->height, _painter->brush()); auto size = textWidth(_status) + paddingX; - _x = _bufs->width - size; - _painter->drawText(paddingX+_x, _textY, _status); + _statusX = _bufs->width - size; + _painter->drawText(paddingX+_statusX, _textY, _status); _x = _bufs->width; } diff --git a/src/common.hpp b/src/common.hpp index 8ba33ac..65aea42 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -15,9 +15,7 @@ struct ColorScheme { QColor fg, bg; }; union Arg { - int i; unsigned int ui; - float f; const void *v; }; struct Monitor; @@ -42,6 +40,7 @@ void toggleview(Monitor &m, const Arg &arg); void setlayout(Monitor &m, const Arg &arg); void tag(Monitor &m, const Arg &arg); void toggletag(Monitor &m, const Arg &arg); +void spawn(Monitor&, const Arg &arg); // wayland smart pointers template diff --git a/src/config.hpp b/src/config.hpp index 4828545..753d3db 100644 --- a/src/config.hpp +++ b/src/config.hpp @@ -15,6 +15,7 @@ constexpr bool fontBold = false; constexpr ColorScheme colorInactive = {QColor(0xbb, 0xbb, 0xbb), QColor(0x22, 0x22, 0x22)}; constexpr ColorScheme colorActive = {QColor(0xee, 0xee, 0xee), QColor(0x00, 0x55, 0x77)}; +constexpr const char *termcmd[] = {"foot", nullptr}; constexpr Button buttons[] = { { ClkTagBar, BTN_LEFT, toggleview, {0} }, @@ -23,4 +24,5 @@ constexpr Button buttons[] = { { ClkTagBar, BTN_MIDDLE, toggletag, {0} }, { ClkLayoutSymbol, BTN_LEFT, setlayout, {.ui = 0} }, { ClkLayoutSymbol, BTN_RIGHT, setlayout, {.ui = 2} }, + { ClkWinTitle, BTN_RIGHT, spawn, {.v = termcmd} }, }; diff --git a/src/main.cpp b/src/main.cpp index ceab448..f0c3257 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -90,6 +90,17 @@ void toggletag(Monitor &m, const Arg &arg) { znet_tapesoftware_dwl_wm_monitor_v1_set_client_tags(m.dwlMonitor.get(), 0xffffff, arg.ui); } +void spawn(Monitor&, const Arg &arg) +{ + if (fork()) { + auto argv = static_cast(arg.v); + setsid(); + execvp(argv[0], argv); + fprintf(stderr, "somebar: execvp %s ", argv[0]); + perror(" failed"); + exit(1); + } +} static const struct xdg_wm_base_listener xdgWmBaseListener = { [](void*, xdg_wm_base *sender, uint32_t serial) {