-
Notifications
You must be signed in to change notification settings - Fork 0
raboof/syell
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
The tried-and-tested combination of terminal emulator, shell and command-line tools is an immensely powerful tool. However, it does come with its limitations. This repo contains some playful experiments to see what becomes possible when we take apart these components and try to recombine them in different ways. overrideexecve.so ================= While the command line is an awesome way to, issue and combine commands, the output can come in all kinds of different ways: * no output * a few lines of feedback * spawning a GUI * starting an interactive CLI * starting an ncurses UI * flood your terminal with hundreds of lines of output It would be nice to have some more control here. 'overrideexecve.so' monkey-patches bash (not tested with other shells) through LD_PRELOAD to send any commands' output to another terminal instead of the one where bash was started. Limitations: currently does not set the 'controlling terminal', which is visible when using commands that use /dev/tty like 'ps' or 'resize'. Interestingly I haven't found any 'real' applications that are actually affected by this though. Plans: * instead sending all output to a specific TTY, come up with some IPC mechanism to ask some kind of 'TTY broker' for a TTY to connect to for each command. * use /bin/echo instead of builtin 'echo' syell.py ======== Starts 2 terminals and starts bash in one of them, using overrideexecve.so to cause any application output to be presented in the other terminal. This project uses some extensions to the qtermwidget component as published at https://github.com/raboof/qtermwidget Plans: * shutdown when bash exits * better focus handling * starting new output terminals upon request detach ====== Optionally print your tty to a given file, then close stdin and sleep indefinitely. This is executed in a 'target' xterm to free it up so other apps can be attached to it. isatty ====== diagnostic tool that tells us whether it thinks its output is a tty
About
Shell/terminal experiments
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published