This post attempts to collect some ideas that have been floating about in my head for a little while now.
Tagged is a program similar to suckless tabbed which allows embedding of X11 windows inside of one parent window.
Only one child window is visible at any given time, but a command in the tag bar (described later) allows the user to change this.
Unlike tabbed, the program should not be limited to multiple instances
of the same program (although tabbed technically allows for this
xembed script provided). In order to facilitate for this the
program should also be able to reparent existing windows into itself,
rather than simply spawn new windows.
If a child of the tagged program spawns a new window, that should automatically be captured by the tagged program and focused.
The program will also feature a “tag” bar, similar to one seen in the acme editor. This tag line will allow control and extension of program’s functionality. For example a default item in the tags might be the “New” command; which would create a new instance of the command argument and embed that in the current tagged instance.
The program should be primarily mouse driven, adopting a similar three-button mouse pattern as in acme.
Commands should be programmable as shell scripts, allowing the user to extend the program easily as required.
As graphical clients will often log additional information to
stderr, the program should capture this output into
a transcript. The “Transcript” command should spawn a new child
window listing the transcripts of all other children. This can then
be non-destructively filtered or edited by the user through common
text-processing tools such as grep(1).
As some graphical programs will detatch from their parent process, such as code, the program will have an “Attach” command, which provides a graphical target allowing the user to select an external X11 program to embed inside of the instance. Using the xwininfo program this should be achievable with a shell script such as:
xwininfo | grep 'Window id: ' | cut -d':' -f3 | cut -d' ' -f2
The mechanism by which the command actually communicates back to the tagged program has not yet been decided.
: Tabbed(1) by suckless.org - http://tools.suckless.org/tabbed/ : Acme(1) by Rob Pike - http://acme.cat-v.org/ : Visual Studio Code(1) by Microsoft - https://code.visualstudio.com/ : Xwininfo(1) by X.org - https://www.x.org/releases/X11R7.7/doc/man/man1/xwininfo.1.xhtml