summaryrefslogtreecommitdiff
path: root/tabbed.c
AgeCommit message (Collapse)Author
2025-01-19Use UTF8_STRING instead of COMPOUND_TEXTHEADmasterMikhail Pchelin
Using XCompoundTextStyle makes gnome-shell issue countless warnings in the message log when switching between tabs or selecting text: gnome-shell[5357]: Window manager warning: Window 0x800003 has property _NET_WM_NAME that was expected to have type UTF8_STRING format 8 and actually has type COMPOUND_TEXT format 8 n_items 0. This is most likely an application bug, not a window manager bug. The window has title="0:2:vim - "hostname" " class="tabbed" name="tabbed"
2023-04-09restore SIGCHLD sighandler to default before spawning a programHiltjo Posthuma
From sigaction(2): A child created via fork(2) inherits a copy of its parent's signal dispositions. During an execve(2), the dispositions of handled signals are reset to the default; the dispositions of ignored signals are left unchanged. This refused to start directly some programs from configuring in config.h: Some reported programs that didn't start were: mpv. Similar to the commit e81f17d4c196aaed6893fd4beed49991caa3e2a4 from dwm.
2023-03-11include X11/keysym.h: improve compatibility with older systemsHiltjo Posthuma
This matches dwm too. This makes it compile cleanly on a tested Slackware 11 system.
2023-03-11fix: faulty zombie reapingNRK
issues with the current signal handler: 1. die() isn't async-signal-safe 2. there's a race-window during reinstating the signal handler allowing zombies to be produced (should be rare in practice). 3. if waitpid fails, it will clobber the errno which can lead to undesired codepath being taken on the resuming code (this one can actually occur in practice). to reproduce the 3rd issue: ~> ./tabbed & [1] 20644 0x1800003 ~> while :; do kill -s SIGCHLD 20644; done >&2 2>/dev/null XIO: fatal IO error 10 (No child processes) on X server ":0" after 47 requests (47 known processed) with 0 events remaining. [1] + exit 1 ./tabbed set the signal handler to SIG_IGN to reap zombies automatically (according to POSIX.1-2001). NOTE: this patch follows dwm's commit 712d663. according to the manpage, none of the sa_flags being set are meaningful since we're using SIG_IGN. they used to be meaningful on earlier version of the patch where it was using SIG_DFL, i've kept them here just in case.
2020-05-30Fixed crash when window height was less or equal to bar heightmikau
When resizing, the embedded client is being resized to (height = wh - bh), which is (<= 0) if (wh <= bh). This generates a BadValue Error leading to a crash. This patch fixes that by hiding the tab bar if the window height is too small, and also sets a min_height WM hint to prevent that situation from happening in the first place.
2017-05-08Fix movetab and focusurgent when there's no clientCaleb Malchik
Accessing those would crash with a floating point exception.
2017-03-28One killclient() is enough.Christoph Lohmann
2016-03-25add -k to close tabbed foreground client on WMDeleteJustin Keogh
Hello, this is useful when you want to use the same key binding that closes windows to close tabs. I got tired of loosing my tabbed/surf session when I hit my WM's close key. "Last tab" behavior still respects -c/-f. Cheers -J From 829e95855f0fe78a368788a5e72231bd6456a8cf Mon Sep 17 00:00:00 2001 From: jakeogh <github.com@v6y.net> Date: Mon, 21 Mar 2016 01:36:28 +0000 Subject: [PATCH] add -k to close foreground tabbed client on WM_DELETE_WINDOW Signed-off-by: Christoph Lohmann <20h@r-36.net>
2016-02-18Added xft supportLucas Gabriel Vuotto
Based on xft tabbed patch from the wiki. Signed-off-by: Lucas Gabriel Vuotto <l.vuotto92@gmail.com> Signed-off-by: Christoph Lohmann <20h@r-36.net>
2016-01-04Add configuration option for title truncation stringQuentin Rameau
Permit to use arbitrary string instead of "..." (ie "$") when truncating client title. Signed-off-by: Christoph Lohmann <20h@r-36.net>
2016-01-03Remove h flag, put usage() in the default caseQuentin Rameau
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2016-01-03Arrange diagnostic messagesQuentin Rameau
Fix error messages to use argv0 instead of fixed “tabbed”. Break usage message into multiple lines. Signed-off-by: Christoph Lohmann <20h@r-36.net>
2016-01-03Style cleanupQuentin Rameau
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2016-01-03Bumping up the year.Christoph Lohmann
Thanks for the bug report, FRIGN!
2016-01-01Bump year.Christoph Lohmann
2015-08-19autofocus urgent tabsJonas Rabenstein
When tabbed becomes urgent because one of it tabs becomes urgent, it may be desireable to automatically focus that tab. As a notification may be lost, if another notification comes in before you focused tabbed, the switch is only done, if tabbed is not urgent already. Moreover, it may be anoying, if you just type into one tab, another tab gets urgent -therfore focused- and you type into the other tab, you may switch between autofocus and nofocus using Ctrl-Shift-u. Maybe it would also be usefull, if there would be an commandline parameter to toggle that option, but as -u is already used for urgent-tab-color, i did not implement that. Signed-off-by: Jonas Rabenstein <jonas.rabenstein@studium.uni-erlangen.de> Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-08-19focus urgent tabsJonas Rabenstein
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@studium.uni-erlangen.de> Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-03-10fix bug in unmanage: check if lastsel is initializedMarkus Teich
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2015-01-25revise drawbar and related mechanisms.Markus Teich
This also fixes a bug, where the last tab was hidden and no "after" text was displayed. Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-10-14movetab(): Move selected tab instead of switchingMarkus Teich
Before this patch, movetab() just switched positions of the selected tab with the new position. This resulted in unexpected behaviour when „moving“ a tab over one end of the list. Now tabs are moved correctly by the specified amount of indizes. Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-09-13tabbed: UnmapNotify patchOkan Demirmen
Hi, Simple patch for tabbed that prevents tabbed from killing a client that it should no longer be managing due to an UnmapNotify event. Add support for UnmapNotify; allows a window to map and unmap without needing it to be destroyed. Thanks, Okan Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-08-04Clear urgency hint on sel == cPeter Hofmann
- Run "tabbed xterm -into". - Open a new tab using Ctrl+Shift+Enter, switch to it using Ctrl+Tab. - Run "sleep 2; printf '\a'". - Quickly change back to the first tab (c = 0) and wait for the second one (c = 1) to get the urgency hint. - Close the first tab using Ctrl+Q or Ctrl+D. This sets sel = 0 and c = 0, so focus() won't touch the urgency hint. - Now, the urgency hint on the second tab has not been cleared. Open a new tab to verify it. Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-06-01Replace emallocz with ecalloc.noname
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-05-19add urgent color cmdline optionsMarkus Teich
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-05-19support urgency wm hintsMarkus Teich
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-01-26Simplifying the lastsel handling a bit.Christoph Lohmann
Some checks and comments were removed to simplify the function.
2014-01-26The check for a minimal new lastsel is not needed anymore.Christoph Lohmann
2014-01-26Applying the client sel handling of quinq.Christoph Lohmann
When after unmanaging the the last selected client was unmanaged, select the last client.
2014-01-22update years in copyright noticesMarkus Teich
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2014-01-21Adding conforming documentation of the commandline color support.Christoph Lohmann
2014-01-21Fix crash on client terminationGregor Best
Signed-off-by: Gregor Best <gbe@ring0.de> Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-12-16Allow selecting the colors on command line.Markus Teich
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-12-01select or open new tab with Ctrl-TMarkus Teich
The default config will display all open tabs in dmenu. You can either select one of them, or if you enter a string, that does not start with „0x“, tabbed will open a new tab and run the command specified at tabbed-startup but append the entered string to the command first. With tabbed -r 2 surf -e '' you can hit Ctrl-T and either select an already opened tab or enter an URL, which will be opened in a new tab with surf. Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-12-01Revert "select tab with X ClientMessage event"Christoph Lohmann
This reverts commit 34baef933d0bba6dad20e1b9f24878b63756e443.
2013-12-01select tab with X ClientMessage eventMarkus Teich
Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-10-10Fixed obscure miscalculation when a client is closed.Alexander Sedov
This crops up whenever you just switched from tab # N+1 to tab # N and close current tab. unmanage() first decreases lastsel (so it becomes N) then erroneously tests it against sel and focuses first tab instead. One can see that focus() would never set lastsel == sel, so I took liberty to fix this annoying behaviour which happens to frequently with newposition = 0 and npisrelative = True settings. Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-08-20Adding a geometry flag to tabbed.Christoph Lohmann
Thanks for the hint Thorsten Glaser!
2013-07-12Don't set cmd[0] to the window IDGregor Best
Ahoy, the attached patch fixes a tiny issue with tabbed. When running it without a command and having it run spawn(), it tried to execute its window ID as a command. While most people probably don't have executables called 341123 or the like in their path, I think that is not exactly intended. The following patch fixes that: From c7ade36f8ef6429546ad89bc9ab479fa44c4790a Mon Sep 17 00:00:00 2001 From: Gregor Best <gbe@ring0.de> Date: Sun, 7 Jul 2013 20:36:06 +0200 Subject: [PATCH] Don't set cmd[0] to the window ID Starting tabbed without a command sets cmd[0] to the window ID of tabbed. This leads to funky errors such as "execvp: <ID> failed: no such file or directory" when running spawn(). Signed-off-by: Gregor Best <gbe@ring0.de> Signed-off-by: Christoph Lohmann <20h@r-36.net>
2013-05-28Applying a fix for tab rotation.Christoph Lohmann
Thanks "Oleg O. Chukaev" <oleg.chukaev@mail.ru>!
2013-05-20Fix issue with clicks on the tabbed border.Christoph Lohmann
Thanks David Dufberg Tøttrup <david@dufberg.se>!
2013-01-16Making tabbed convert the title string to native.Christoph Lohmann
Thanks "Markus Wichmann" <nullplan@gmx.net>!
2013-01-06Allowing xterm again to be run in tabbed.Christoph Lohmann
Thanks "Oleg O. Chukaev" <oleg.chukaev@mail.ru> for reporting this!
2012-12-26Fixing the position parameter and adding the documentation for it.Christoph Lohmann
2012-12-25Setting the XEMBED environment variable.Christoph Lohmann
Thanks Kyle Kramer for the suggestion!
2012-12-25Adding an option to do relative new position. And fixing tab position.Christoph Lohmann
Thanks Kyle Kramer for the suggestion!
2012-12-25Adding the -c option to close on last client close.Christoph Lohmann
Thanks for the suggestion by Kyle Kramer!
2012-12-07Just some change I always wanted to apply.Christoph Lohmann
2012-12-03Adding fullscreen mode to tabbed.Christoph Lohmann
2012-11-29Removing that change.Christoph Lohmann
2012-11-29A test, if this works.Christoph Lohmann