Browse Source

README and dunst

main
Yiğit Çolakoğlu 4 years ago
parent
commit
5602d9e5e0
22 changed files with 2007 additions and 155 deletions
  1. +34
    -0
      README.md
  2. +2
    -2
      gtk/gtk-3.0/bookmarks
  3. +1
    -1
      gtk/gtk-3.0/settings.ini
  4. +5
    -5
      misc/dunst/dunstrc
  5. +0
    -78
      misc/termite/config
  6. +0
    -69
      misc/termite/config.user
  7. BIN
      screenshots/w1.jpg
  8. BIN
      screenshots/w2.jpg
  9. BIN
      screenshots/w4.jpg
  10. +14
    -0
      suckless/build.sh
  11. +23
    -0
      suckless/tabbed/LICENSE
  12. +65
    -0
      suckless/tabbed/Makefile
  13. +22
    -0
      suckless/tabbed/README
  14. +4
    -0
      suckless/tabbed/TODO
  15. +48
    -0
      suckless/tabbed/arg.h
  16. +66
    -0
      suckless/tabbed/config.h
  17. +33
    -0
      suckless/tabbed/config.mk
  18. +54
    -0
      suckless/tabbed/tabbed-autohide-20201222-dabf6a2.diff
  19. +171
    -0
      suckless/tabbed/tabbed.1
  20. +1385
    -0
      suckless/tabbed/tabbed.c
  21. +35
    -0
      suckless/tabbed/xembed.1
  22. +45
    -0
      suckless/tabbed/xembed.c

+ 34
- 0
README.md View File

@ -0,0 +1,34 @@
# Fr1nge's Dotfiles
Welcome to my dungeon. Here, I keep all my configuration files in case I have a stroke and lose all my memory. You're very welcome to explore and use anything in this repository. Have fun!
## My Setup:
* Arch Linux
* DWM ([dwm-flexipatch](https://github.com/bakkeby/dwm-flexipatch))
* dmenu
* st (simple terminal)
* dunst
* zsh with powerlevel10k and antibody
* tmux
* zathura
* [Material Ocean](https://github.com/material-ocean/) color scheme for pretty much everything
## Installation
Just run `git clone --recurse-submodules github.com/yigitcolakoglu/dotfiles.git ~/.dotfiles`. This will download everything you need. After that, I have a list of all the packages I have installed on my machine in the directory chroot/. If you have any problems regarding the setup, you should first check whether you have missing packages. After the clone process, it is pretty straightforward, you can run the `install.sh` script which creates necessary symlinks. Finally, DO NOT FORGET to run sudo make clean install in each directory under suckless, I also have a script named build.sh in that directory which does that automatically.
## Some eye candy
![Workspace 1](screenshots/w1.jpg)
![Workspace 1](screenshots/w2.jpg)
![Workspace 1](screenshots/w4.jpg)
## TODOs
* Switch to surf & tabbed
* Find more cool stuff to add to your rice

+ 2
- 2
gtk/gtk-3.0/bookmarks View File

@ -3,5 +3,5 @@ file:///home/yigit/Projects Projects
file:///home/yigit/Downloads Downloads
file:///home/yigit/Nextcloud Nextcloud
file:///home/yigit/Pictures Pictures
file:///home/yigit/Documents/
file:///home/yigit/Pictures/
file:///home/yigit/Documents Documents
file:///home/yigit/Pictures Pictures

+ 1
- 1
gtk/gtk-3.0/settings.ini View File

@ -1,6 +1,6 @@
[Settings]
gtk-theme-name=material-ocean
gtk-icon-theme-name=Tela-orange-dark
gtk-icon-theme-name=Tela-orange
gtk-font-name=Cantarell 11
gtk-cursor-theme-name=Adwaita
gtk-cursor-theme-size=0


+ 5
- 5
misc/dunst/dunstrc View File

@ -5,15 +5,15 @@
# frame_color = "#282828"
# dracula
background = "#282a36"
foreground = "#f8f8f2"
frame_color = "#282a36"
background = "#0f111a"
foreground = "#e5e9f0"
frame_color = "#bf616a"
[global]
frame_width = 0
#font = JetBrains Mono 10
font = Ubuntu 10
font = CaskaydiaCove Nerd Font 10
follow = none
# Allow a small subset of html markup:
@ -80,7 +80,7 @@
# the top and down respectevly.
# The width can be negative. In this case the actual width is the
# screen width minus the width defined in within the geometry option.
geometry = "500x8-8-8"
geometry = "500x8-8+8"
# Show how many messages are currently hidden (because of geometry).
indicate_hidden = yes


+ 0
- 78
misc/termite/config View File

@ -1,78 +0,0 @@
[options]
allow_bold = true
#audible_bell = false
#bold_is_bright = true
#cell_height_scale = 1.0
#cell_width_scale = 1.0
clickable_url = true
dynamic_title = true
font = CaskaydiaCove Nerd Font 12
#fullscreen = true
#icon_name = terminal
#mouse_autohide = false
#scroll_on_output = false
#scroll_on_keystroke = true
# Length of the scrollback buffer, 0 disabled the scrollback buffer
# and setting it to a negative value means "infinite scrollback"
scrollback_lines = 10000
#search_wrap = true
#urgent_on_bell = true
#hyperlinks = false
# $BROWSER is used by default if set, with xdg-open as a fallback
browser = xdg-open
# "system", "on" or "off"
cursor_blink = system
# "block", "underline" or "ibeam"
cursor_shape = block
# Hide links that are no longer valid in url select overlay mode
#filter_unmatched_urls = true
# Emit escape sequences for extra modified keys
#modify_other_keys = false
# set size hints for the window
#size_hints = false
# "off", "left" or "right"
#scrollbar = off
# ====================================
[colors]
# http://www.xcolors.net/dl/gnometerm
# Black
color0= #000000
color8= #555753
# Red
color1= #cc0000
color9= #ef2929
# Green
color2= #4e9a06
color10= #8ae234
# Yellow
color3= #c4a000
color11= #fce94f
# Blue
color4= #3465a4
color12= #729fcf
# Magenta
color5= #75507b
color13= #ad7fa8
# Cyan
color6= #06989a
color14= #34e2e2
# White
color7= #d3d7cf
color15= #eeeeec

+ 0
- 69
misc/termite/config.user View File

@ -1,69 +0,0 @@
[options]
allow_bold = true
#audible_bell = false
#bold_is_bright = true
#cell_height_scale = 1.0
#cell_width_scale = 1.0
clickable_url = true
dynamic_title = true
font = Cascadia Mono 12
#fullscreen = true
#icon_name = terminal
#mouse_autohide = false
#scroll_on_output = false
#scroll_on_keystroke = true
# Length of the scrollback buffer, 0 disabled the scrollback buffer
# and setting it to a negative value means "infinite scrollback"
scrollback_lines = 10000
#search_wrap = true
#urgent_on_bell = true
#hyperlinks = false
# $BROWSER is used by default if set, with xdg-open as a fallback
browser = xdg-open
# "system", "on" or "off"
cursor_blink = system
# "block", "underline" or "ibeam"
cursor_shape = block
# Hide links that are no longer valid in url select overlay mode
#filter_unmatched_urls = true
# Emit escape sequences for extra modified keys
#modify_other_keys = false
# set size hints for the window
#size_hints = false
# "off", "left" or "right"
#scrollbar = off
# ====================================
[colors]
cursor = #d8dee9
cursor_foreground = #2e3440
foreground = #d8dee9
foreground_bold = #d8dee9
background = #0F111A
highlight = #4c566a
color0 = #3b4252
color1 = #bf616a
color2 = #a3be8c
color3 = #ebcb8b
color4 = #81a1c1
color5 = #b48ead
color6 = #88c0d0
color7 = #e5e9f0
color8 = #4c566a
color9 = #bf616a
color10 = #a3be8c
color11 = #ebcb8b
color12 = #81a1c1
color13 = #b48ead
color14 = #8fbcbb
color15 = #eceff4

BIN
screenshots/w1.jpg View File

Before After
Width: 1920  |  Height: 1080  |  Size: 317 KiB

BIN
screenshots/w2.jpg View File

Before After
Width: 1920  |  Height: 1080  |  Size: 185 KiB

BIN
screenshots/w4.jpg View File

Before After
Width: 1920  |  Height: 1080  |  Size: 345 KiB

+ 14
- 0
suckless/build.sh View File

@ -0,0 +1,14 @@
#!/bin/bash
for d in */ ; do
echo "Building in $d..."
cd $d
sudo make clean install
if [ $? -ne 0 ]; then
echo "An error occured..."
exit 1
cd ..
echo "Done..."
done
echo "All builds done, you might want to check whether any errors has occures

+ 23
- 0
suckless/tabbed/LICENSE View File

@ -0,0 +1,23 @@
MIT/X Consortium License
© 2009-2011 Enno Boland <g s01 de>
© 2011,2015 Connor Lane Smith <cls@lubutu.com>
© 2012-2015 Christoph Lohmann <20h@r-36.net>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

+ 65
- 0
suckless/tabbed/Makefile View File

@ -0,0 +1,65 @@
# tabbed - tabbing interface
# See LICENSE file for copyright and license details.
include config.mk
SRC = tabbed.c xembed.c
OBJ = ${SRC:.c=.o}
BIN = ${OBJ:.o=}
all: options ${BIN}
options:
@echo tabbed build options:
@echo "CFLAGS = ${CFLAGS}"
@echo "LDFLAGS = ${LDFLAGS}"
@echo "CC = ${CC}"
.c.o:
@echo CC $<
@${CC} -c ${CFLAGS} $<
${OBJ}: config.h config.mk
config.h:
@echo creating $@ from config.def.h
@cp config.def.h $@
.o:
@echo CC -o $@
@${CC} -o $@ $< ${LDFLAGS}
clean:
@echo cleaning
@rm -f ${BIN} ${OBJ} tabbed-${VERSION}.tar.gz
dist: clean
@echo creating dist tarball
@mkdir -p tabbed-${VERSION}
@cp -R LICENSE Makefile README config.def.h config.mk \
tabbed.1 arg.h ${SRC} tabbed-${VERSION}
@tar -cf tabbed-${VERSION}.tar tabbed-${VERSION}
@gzip tabbed-${VERSION}.tar
@rm -rf tabbed-${VERSION}
install: all
@echo installing executable files to ${DESTDIR}${PREFIX}/bin
@mkdir -p "${DESTDIR}${PREFIX}/bin"
@cp -f ${BIN} "${DESTDIR}${PREFIX}/bin"
@chmod 755 "${DESTDIR}${PREFIX}/bin/tabbed"
@echo installing manual pages to ${DESTDIR}${MANPREFIX}/man1
@mkdir -p "${DESTDIR}${MANPREFIX}/man1"
@sed "s/VERSION/${VERSION}/g" < tabbed.1 > "${DESTDIR}${MANPREFIX}/man1/tabbed.1"
@chmod 644 "${DESTDIR}${MANPREFIX}/man1/tabbed.1"
@sed "s/VERSION/${VERSION}/g" < xembed.1 > "${DESTDIR}${MANPREFIX}/man1/xembed.1"
@chmod 644 "${DESTDIR}${MANPREFIX}/man1/xembed.1"
uninstall:
@echo removing executable files from ${DESTDIR}${PREFIX}/bin
@rm -f "${DESTDIR}${PREFIX}/bin/tabbed"
@rm -f "${DESTDIR}${PREFIX}/bin/xembed"
@echo removing manual pages from ${DESTDIR}${MANPREFIX}/man1
@rm -f "${DESTDIR}${MANPREFIX}/man1/tabbed.1"
@rm -f "${DESTDIR}${MANPREFIX}/man1/xembed.1"
.PHONY: all options clean dist install uninstall

+ 22
- 0
suckless/tabbed/README View File

@ -0,0 +1,22 @@
tabbed - generic tabbed interface
=================================
tabbed is a simple tabbed X window container.
Requirements
------------
In order to build tabbed you need the Xlib header files.
Installation
------------
Edit config.mk to match your local setup (tabbed is installed into
the /usr/local namespace by default).
Afterwards enter the following command to build and install tabbed
(if necessary as root):
make clean install
Running tabbed
--------------
See the man page for details.

+ 4
- 0
suckless/tabbed/TODO View File

@ -0,0 +1,4 @@
# TODO
* add some way to detach windows
* add some way to attach windows

+ 48
- 0
suckless/tabbed/arg.h View File

@ -0,0 +1,48 @@
/*
* Copy me if you can.
* by 20h
*/
#ifndef ARG_H__
#define ARG_H__
extern char *argv0;
/* use main(int argc, char *argv[]) */
#define ARGBEGIN for (argv0 = *argv, argv++, argc--;\
argv[0] && argv[0][0] == '-'\
&& argv[0][1];\
argc--, argv++) {\
char argc_;\
char **argv_;\
int brk_;\
if (argv[0][1] == '-' && argv[0][2] == '\0') {\
argv++;\
argc--;\
break;\
}\
for (brk_ = 0, argv[0]++, argv_ = argv;\
argv[0][0] && !brk_;\
argv[0]++) {\
if (argv_ != argv)\
break;\
argc_ = argv[0][0];\
switch (argc_)
#define ARGEND }\
}
#define ARGC() argc_
#define EARGF(x) ((argv[0][1] == '\0' && argv[1] == NULL)?\
((x), abort(), (char *)0) :\
(brk_ = 1, (argv[0][1] != '\0')?\
(&argv[0][1]) :\
(argc--, argv++, argv[0])))
#define ARGF() ((argv[0][1] == '\0' && argv[1] == NULL)?\
(char *)0 :\
(brk_ = 1, (argv[0][1] != '\0')?\
(&argv[0][1]) :\
(argc--, argv++, argv[0])))
#endif

+ 66
- 0
suckless/tabbed/config.h View File

@ -0,0 +1,66 @@
/* See LICENSE file for copyright and license details. */
/* appearance */
static const char font[] = "monospace:size=9";
static const char* normbgcolor = "#222222";
static const char* normfgcolor = "#cccccc";
static const char* selbgcolor = "#555555";
static const char* selfgcolor = "#ffffff";
static const char* urgbgcolor = "#111111";
static const char* urgfgcolor = "#cc0000";
static const char before[] = "<";
static const char after[] = ">";
static const char titletrim[] = "...";
static const int tabwidth = 200;
static const Bool foreground = True;
static Bool urgentswitch = False;
/*
* Where to place a new tab when it is opened. When npisrelative is True,
* then the current position is changed + newposition. If npisrelative
* is False, then newposition is an absolute position.
*/
static int newposition = 0;
static Bool npisrelative = False;
#define SETPROP(p) { \
.v = (char *[]){ "/bin/sh", "-c", \
"prop=\"`xwininfo -children -id $1 | grep '^ 0x' |" \
"sed -e's@^ *\\(0x[0-9a-f]*\\) \"\\([^\"]*\\)\".*@\\1 \\2@' |" \
"xargs -0 printf %b | dmenu -l 10 -w $1`\" &&" \
"xprop -id $1 -f $0 8s -set $0 \"$prop\"", \
p, winid, NULL \
} \
}
#define MODKEY ControlMask
static Key keys[] = {
/* modifier key function argument */
{ MODKEY|ShiftMask, XK_Return, focusonce, { 0 } },
{ MODKEY|ShiftMask, XK_Return, spawn, { 0 } },
{ MODKEY|ShiftMask, XK_l, rotate, { .i = +1 } },
{ MODKEY|ShiftMask, XK_h, rotate, { .i = -1 } },
{ MODKEY|ShiftMask, XK_j, movetab, { .i = -1 } },
{ MODKEY|ShiftMask, XK_k, movetab, { .i = +1 } },
{ MODKEY, XK_Tab, rotate, { .i = 0 } },
{ MODKEY, XK_grave, spawn, SETPROP("_TABBED_SELECT_TAB") },
{ MODKEY, XK_1, move, { .i = 0 } },
{ MODKEY, XK_2, move, { .i = 1 } },
{ MODKEY, XK_3, move, { .i = 2 } },
{ MODKEY, XK_4, move, { .i = 3 } },
{ MODKEY, XK_5, move, { .i = 4 } },
{ MODKEY, XK_6, move, { .i = 5 } },
{ MODKEY, XK_7, move, { .i = 6 } },
{ MODKEY, XK_8, move, { .i = 7 } },
{ MODKEY, XK_9, move, { .i = 8 } },
{ MODKEY, XK_0, move, { .i = 9 } },
{ MODKEY, XK_q, killclient, { 0 } },
{ MODKEY, XK_u, focusurgent, { 0 } },
{ MODKEY|ShiftMask, XK_u, toggle, { .v = (void*) &urgentswitch } },
{ 0, XK_F11, fullscreen, { 0 } },
};

+ 33
- 0
suckless/tabbed/config.mk View File

@ -0,0 +1,33 @@
# tabbed version
VERSION = 0.6
# Customize below to fit your system
# paths
PREFIX = /usr/local
MANPREFIX = ${PREFIX}/share/man
X11INC = /usr/X11R6/include
X11LIB = /usr/X11R6/lib
# freetype
FREETYPELIBS = -lfontconfig -lXft
FREETYPEINC = /usr/include/freetype2
# OpenBSD (uncomment)
#FREETYPEINC = ${X11INC}/freetype2
# includes and libs
INCS = -I. -I/usr/include -I$(X11INC) -I${FREETYPEINC}
LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 ${FREETYPELIBS}
# flags
CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE
CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
LDFLAGS = -s ${LIBS}
# Solaris
#CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\"
#LDFLAGS = ${LIBS}
# compiler and linker
CC = cc

+ 54
- 0
suckless/tabbed/tabbed-autohide-20201222-dabf6a2.diff View File

@ -0,0 +1,54 @@
diff --git a/tabbed.c b/tabbed.c
index eafe28a..b0b9662 100644
--- a/tabbed.c
+++ b/tabbed.c
@@ -152,7 +152,7 @@ static void (*handler[LASTEvent]) (const XEvent *) = {
[MapRequest] = maprequest,
[PropertyNotify] = propertynotify,
};
-static int bh, obh, wx, wy, ww, wh;
+static int bh, obh, wx, wy, ww, wh, vbh;
static unsigned int numlockmask;
static Bool running = True, nextfocus, doinitspawn = True,
fillagain = False, closelastclient = False,
@@ -324,7 +324,7 @@ void
drawbar(void)
{
XftColor *col;
- int c, cc, fc, width;
+ int c, cc, fc, width, nbh, i;
char *name = NULL;
if (nclients == 0) {
@@ -332,12 +332,21 @@ drawbar(void)
dc.w = ww;
XFetchName(dpy, win, &name);
drawtext(name ? name : "", dc.norm);
- XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, ww, bh, 0, 0);
+ XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, ww, vbh, 0, 0);
XSync(dpy, False);
return;
}
+ nbh = nclients > 1 ? vbh : 0;
+ if (bh != nbh) {
+ bh = nbh;
+ for (i = 0; i < nclients; i++)
+ XMoveResizeWindow(dpy, clients[i]->win, 0, bh, ww, wh - bh);
+ }
+ if (bh == 0)
+ return;
+
width = ww;
cc = ww / tabwidth;
if (nclients > cc)
@@ -984,7 +993,7 @@ setup(void)
screen = DefaultScreen(dpy);
root = RootWindow(dpy, screen);
initfont(font);
- bh = dc.h = dc.font.height + 2;
+ vbh = dc.h = dc.font.height + 2;
/* init atoms */
wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);

+ 171
- 0
suckless/tabbed/tabbed.1 View File

@ -0,0 +1,171 @@
.TH TABBED 1 tabbed\-VERSION
.SH NAME
tabbed \- generic tabbed interface
.SH SYNOPSIS
.B tabbed
.RB [ \-c ]
.RB [ \-d ]
.RB [ \-k ]
.RB [ \-s ]
.RB [ \-v ]
.RB [ \-g
.IR geometry ]
.RB [ \-n
.IR name ]
.RB [ \-p
.RB [ s {+/-} ] \fIpos\fR ]
.RB [ \-o
.IR normbgcol ]
.RB [ \-O
.IR normfgcol ]
.RB [ \-t
.IR selbgcol ]
.RB [ \-T
.IR selfgcol ]
.RB [ \-u
.IR urgbgcol ]
.RB [ \-U
.IR urgfgcol ]
.RB [ \-r
.IR narg ]
.RI [ "command ..." ]
.SH DESCRIPTION
.B tabbed
is a simple tabbed container for applications which support XEmbed. Tabbed
will then run the provided command with the xid of tabbed as appended
argument. (See EXAMPLES.) The automatic spawning of the command can be
disabled by providing the -s parameter. If no command is provided
tabbed will just print its xid and run no command.
.SH OPTIONS
.TP
.B \-c
close tabbed when the last tab is closed. Mutually exclusive with -f.
.TP
.B \-d
detaches tabbed from the terminal and prints its XID to stdout.
.TP
.B \-f
fill up tabbed again by spawning the provided command, when the last tab is
closed. Mutually exclusive with -c.
.TP
.BI \-g " geometry"
defines the X11 geometry string, which will fixate the height and width of
tabbed.
The syntax is
.RI [=][ width {xX} height ][{+-} xoffset {+-} yoffset ].
See
.BR XParseGeometry (3)
for further details.
.TP
.B \-k
close foreground tabbed client (instead of tabbed and all clients) when
WM_DELETE_WINDOW is sent.
.TP
.BI \-n " name"
will set the WM_CLASS attribute to
.I name.
.TP
.BR \-p " [" s {+-}] \fIpos\fR
will set the absolute or relative position of where to start a new tab. When
.I pos
is is given without 's' in front it is an absolute position. Then negative
numbers will be the position from the last tab, where -1 is the last tab.
If 's' is given, then
.I pos
is a relative position to the current selected tab. If this reaches the limits
of the tabs; those limits then apply.
.TP
.BI \-r " narg"
will replace the
.I narg
th argument in
.I command
with the window id, rather than appending it to the end.
.TP
.B \-s
will disable automatic spawning of the command.
.TP
.BI \-o " normbgcol"
defines the normal background color.
.RI # RGB ,
.RI # RRGGBB ,
and X color names are supported.
.TP
.BI \-O " normfgcol"
defines the normal foreground color.
.TP
.BI \-t " selbgcol"
defines the selected background color.
.TP
.BI \-T " selfgbcol"
defines the selected foreground color.
.TP
.BI \-u " urgbgcol"
defines the urgent background color.
.TP
.BI \-U " urgfgbcol"
defines the urgent foreground color.
.TP
.B \-v
prints version information to stderr, then exits.
.SH USAGE
.TP
.B Ctrl\-Shift\-Return
open new tab
.TP
.B Ctrl\-Shift\-h
previous tab
.TP
.B Ctrl\-Shift\-l
next tab
.TP
.B Ctrl\-Shift\-j
move selected tab one to the left
.TP
.B Ctrl\-Shift\-k
move selected tab one to the right
.TP
.B Ctrl\-Shift\-u
toggle autofocus of urgent tabs
.TP
.B Ctrl\-Tab
toggle between the selected and last selected tab
.TP
.B Ctrl\-`
open dmenu to either create a new tab appending the entered string or select
an already existing tab.
.TP
.B Ctrl\-q
close tab
.TP
.B Ctrl\-u
focus next urgent tab
.TP
.B Ctrl\-[0..9]
jumps to nth tab
.TP
.B F11
Toggle fullscreen mode.
.SH EXAMPLES
$ tabbed surf -e
.TP
$ tabbed urxvt -embed
.TP
$ tabbed xterm -into
.TP
$ $(tabbed -d >/tmp/tabbed.xid); urxvt -embed $(</tmp/tabbed.xid);
.TP
$ tabbed -r 2 st -w '' -e tmux
.SH CUSTOMIZATION
.B tabbed
can be customized by creating a custom config.h and (re)compiling the source
code. This keeps it fast, secure and simple.
.SH AUTHORS
See the LICENSE file for the authors.
.SH LICENSE
See the LICENSE file for the terms of redistribution.
.SH SEE ALSO
.BR st (1),
.BR xembed (1)
.SH BUGS
Please report them.

+ 1385
- 0
suckless/tabbed/tabbed.c
File diff suppressed because it is too large
View File


+ 35
- 0
suckless/tabbed/xembed.1 View File

@ -0,0 +1,35 @@
.TH XEMBED 1 tabbed\-VERSION
.SH NAME
xembed \- XEmbed foreground process
.SH SYNOPSIS
.B xembed
.I flag command
.RI [ "argument ..." ]
.SH DESCRIPTION
If the environment variable XEMBED is set, and
.B xembed
is in the foreground of its controlling tty, it will execute
.IP
command flag $XEMBED [argument ...]
.LP
Otherwise it will execute
.IP
command [argument ...]
.LP
.SH EXAMPLE
In a terminal emulator within a
.B tabbed
session, the shell alias
.IP
$ alias surf='xembed -e surf'
.LP
will cause `surf' to open in a new tab, unless it is run in the background,
i.e. `surf &', in which case it will instead open in a new window.
.SH AUTHORS
See the LICENSE file for the authors.
.SH LICENSE
See the LICENSE file for the terms of redistribution.
.SH SEE ALSO
.BR tabbed (1)
.SH BUGS
Please report them.

+ 45
- 0
suckless/tabbed/xembed.c View File

@ -0,0 +1,45 @@
/*
* See LICENSE file for copyright and license details.
*/
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int
main(int argc, char *argv[])
{
char *xembed;
int tty;
pid_t pgrp, tcpgrp;
if (argc < 3) {
fprintf(stderr, "usage: %s flag cmd ...\n", argv[0]);
return 2;
}
if (!(xembed = getenv("XEMBED")))
goto noembed;
if ((tty = open("/dev/tty", O_RDONLY)) < 0)
goto noembed;
pgrp = getpgrp();
tcpgrp = tcgetpgrp(tty);
close(tty);
if (pgrp == tcpgrp) { /* in foreground of tty */
argv[0] = argv[2];
argv[2] = xembed;
} else {
noembed:
argv += 2;
}
execvp(argv[0], argv);
perror(argv[0]); /* failed to execute */
return 1;
}

Loading…
Cancel
Save