/* * title "Tagged Project Ideas" * author "Dylan Lom" * date "2023-04-29" * link stylesheet "/main.css" */ # $(echo $title) This post attempts to collect some ideas that have been floating about in my head for a little while now. ## Overview Tagged is a program similar to suckless tabbed\[1\] 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\[1\] technically allows for this via the `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\[2\] 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\[2\]. ## Other features 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 `stdout`/`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\[3\], 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\[4\] 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. ## References [1]: Tabbed(1) by suckless.org - http://tools.suckless.org/tabbed/ [2]: Acme(1) by Rob Pike - http://acme.cat-v.org/ [3]: Visual Studio Code(1) by Microsoft - https://code.visualstudio.com/ [4]: Xwininfo(1) by X.org - https://www.x.org/releases/X11R7.7/doc/man/man1/xwininfo.1.xhtml