[hackers] [tabbed] focus urgent tabs || Jonas Rabenstein

From: <git_AT_suckless.org>
Date: Fri, 1 Jan 2016 14:19:29 +0100 (CET)

commit 5d0c5be1028c67f3b499017c5c39019f4b1d8c10
Author: Jonas Rabenstein <jonas.rabenstein_AT_studium.uni-erlangen.de>
AuthorDate: Wed Aug 19 21:11:15 2015 +0200
Commit: Christoph Lohmann <20h_AT_r-36.net>
CommitDate: Wed Aug 19 21:17:33 2015 +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 <jonas.rabenstein_AT_studium.uni-erlangen.de>
    Signed-off-by: Christoph Lohmann <20h_AT_r-36.net>

diff --git a/config.def.h b/config.def.h
index b3da7f0..55bec4c 100644
--- a/config.def.h
+++ b/config.def.h
_AT_@ -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
index 9e32115..05ac355 100644
--- a/tabbed.1
+++ b/tabbed.1
_AT_@ -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
index b15f9cb..93c9d0f 100644
--- a/tabbed.c
+++ b/tabbed.c
_AT_@ -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);
_AT_@ -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;
 
Received on Fri Jan 01 2016 - 14:19:29 CET

This archive was generated by hypermail 2.3.0 : Fri Jan 01 2016 - 14:24:19 CET