focus urgent tabs - tabbed - tab interface for application supporting Xembed | |
git clone git://git.suckless.org/tabbed | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 5d0c5be1028c67f3b499017c5c39019f4b1d8c10 | |
parent 55dc32b27b73c121cab18009bf087e95ef3d9c18 | |
Author: Jonas Rabenstein <[email protected]> | |
Date: Wed, 19 Aug 2015 21:11:15 +0200 | |
focus urgent tabs | |
With a lot of open tabs its quite annoying to toggle through all tabs | |
until reaching the next one with an urgent hint set. Also with using | |
Ctrl-[0..9] to get to the first 10 tabs, in some cases this may have | |
disadvantages: | |
1. with more than 10 tabs, you can not use that quickselection | |
2. with a small tabbed window, you do not see every tab in the | |
statusbar and therefore do not know which tab got urgent | |
Therefore I created a function, which iterates over all currently | |
managed tabs, focus the first urgent tab found or stays at the current | |
tab, if there is no urgent-tab. By default, that function is mapped to | |
Ctrl-u. | |
Signed-off-by: Jonas Rabenstein <[email protected]> | |
Signed-off-by: Christoph Lohmann <[email protected]> | |
Diffstat: | |
M config.def.h | 2 ++ | |
M tabbed.1 | 3 +++ | |
M tabbed.c | 12 ++++++++++++ | |
3 files changed, 17 insertions(+), 0 deletions(-) | |
--- | |
diff --git a/config.def.h b/config.def.h | |
@@ -55,6 +55,8 @@ static Key keys[] = { \ | |
{ MODKEY, XK_q, killclient, { 0 } }, | |
+ { MODKEY, XK_u, focusurgent, { .v = NULL… | |
+ | |
{ 0, XK_F11, fullscreen, { 0 } }, | |
}; | |
diff --git a/tabbed.1 b/tabbed.1 | |
@@ -134,6 +134,9 @@ an already existing tab. | |
.B Ctrl\-q | |
close tab | |
.TP | |
+.B Ctrl\-u | |
+focus next urgent tab | |
+.TP | |
.B Ctrl\-[0..9] | |
jumps to nth tab | |
.TP | |
diff --git a/tabbed.c b/tabbed.c | |
@@ -104,6 +104,7 @@ static void expose(const XEvent *e); | |
static void focus(int c); | |
static void focusin(const XEvent *e); | |
static void focusonce(const Arg *arg); | |
+static void focusurgent(const Arg *); | |
static void fullscreen(const Arg *arg); | |
static char* getatom(int a); | |
static int getclient(Window w); | |
@@ -492,6 +493,17 @@ focusonce(const Arg *arg) { | |
} | |
void | |
+focusurgent(const Arg *args) { | |
+ int c; | |
+ for(c = (sel+1)%nclients; c != sel; c = (c+1)%nclients) { | |
+ if(clients[c]->urgent) { | |
+ focus(c); | |
+ return; | |
+ } | |
+ } | |
+} | |
+ | |
+void | |
fullscreen(const Arg *arg) { | |
XEvent e; | |