reveal terminal programs in the gui
Appear your terminal programs in your gui!
Docs: current gem, github master, your branch: bundle exec rake doc
Appear is a tool for revealing a given process in your terminal. Given a
process ID, appear
finds the terminal emulator view (be it a window, tab, or
pane) containing that process and shows it to you. Appear understands terminal
multiplexers like tmux
, so if your target process is in a multiplexer
session, appear
will reveal a client connected to that session, or start one
if needed.
This project intends to support all POSIX operating systems eventually, but currently only supports macOS.
Usage: appear [OPTION]... [PID]
Appear PID in your user interface.
Appear will use the current process PID by default.
Options:
-l, --log-file [PATH] log to a file
-v, --verbose tell many tales about how the appear process is going
--record-runs record every executed command as a JSON file in the appear spec folder
--version show version information, then exit
-?, -h, --help show this help, then exit
Exit status:
0 if successfully revealed something,
1 if an exception occurred,
2 if there were no errors, but nothing was revealed.
macOS:
cross-platform:
GNU Screen support is a non-goal. It's time for screen users to switch to tmux.
ruby
>= 1.9.3lsof
commandps
commandpgrep
commandAppear depends only on the Ruby standard library.
Here's how Appear works in a nutshell, given a target_pid
target_pid
, up to pid1. We end up with a
list of ProcessInfos, which have fields {pid, parent_pid, command, name}
lsof
on a /dev/ttys*
device to see what
processes are talking on what ttys to each other, which takes a bunch of
timelsof
in Appear is parallel, so grouped lsof calls are less expensivetarget_pid
is running in, AND to recurse the revealing process with the
tmux client id, to reveal the tmux client.The method documented here is the only part of Appear that should be considered stable.
require 'appear'
# super simple
Appear.appear(pid)
# You may customize logging, if needed, using the Config class
config = Appear::Config.new
# print debug info to STDOUT
config.silent = false
# also write to a log file
config.log_file = '/tmp/my-app-appear.log'
Appear.appear(pid, config)
First, get yourself set up:
gem install bundler
./scripts/setup
or bundle install
Then, submit PRs from feature branches for review:
git checkout -b my-name--my-branch-topic
./scripts/console
for a nice pry session with an instance ready to gobundle exec rake
to run tests and doc coverageYou must be a collaborator on Rubygems.org, and a committer on the main repo at https://github.com/airbnb/appear.
bundle exec rake release