Package: procmux
procmuxa TUI utility for running multiple commands in parallel in easily switchable terminalsthis app is heavily influenced by this TUI app:https://github.com/pvolok/mprocsThe goals/use-cases:procmux allows the user to run multiple commands in parallel and makes it
easy to view the output from each terminal session.
Procmux configuration files can be included in projects that have a series of commonly used scripts / long-running
processes.
is intended to make it easy for newcomers to a project to browse and run necessary commands, while also reducing the
need to manually spin up multiple terminal sessions for potentially long-running processes.
Alternatively, personal or system-wide procmux config files can be defined for browsing/running snippets or commonly
used shell
scripts.Installation# if you use pipxpipxinstallprocmux# if you use pippipinstallprocmux# if you use brewbrewtapnapisani/procmux
brewinstallprocmuxUsage# standard usageprocmux--config/path/to/config.yaml# with overriding config valuesprocmux--config/path/to/config.yaml--config-override/path/to/override-file.yamlConfigurationHere is a procmux configuration example with ALL available configuration points.
Only theprocssection is required, the rest of the properties have defaults predefined:procmux.yamllayout:# hide or show the help window that show all keybindings and actions at the bottom of the screenhide_help:false# hide or show the window second from the bottom that shows the full command name and the descriptionhide_process_description_panel:false# the prompt_toolkit width of the sidebar (containing all the process names)processes_list_width:31# whether to sort the process list alphabeticallysort_process_list_alpha:True# used as the prefix for category filters of the process listcategory_search_prefix:'cat:'# the prompt template to be rendered everytime a field replacement input box is rendered# __FIELD_NAME__ will be replaced by the field name defined in the replacement definition# IE: `echo "<something>"`  # field name is 'something'field_replacement_prompt:'__FIELD_NAME__⮕'style:#foreground color of the process in the process list when it is selectedselected_process_color:'ansiblack'#background color of the process in the process list when it is selectedselected_process_bg_color:'ansimagenta'#foregroud color of the process in the process list when it is not selectedunselected_process_color:'ansiblue'#foregroud color of the process list status when the status is RUNNINGstatus_running_color:'ansigreen'#foregroud color of the process list status when the status is STOPPEDstatus_stopped_color:'ansired'#the color of the right panel (terminal panel) when no terminal is created/selected yetplaceholder_terminal_bg_color:'#1a1b26'#character used to indicate the current selectionpointer_char:'▶'#override default style classes#https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/src/prompt_toolkit/styles/defaults.pystyle_classes:cursor-line:'underline'#one of: monochrome | ansicolors | 256colors | truecolorscolor_level:'truecolors'keybinding:# a map of app actions to their respective key bindings.# each key combo in an action list is an alias for the same action.# IE up is fired when 'j' or the 'up arrow' is pressed# All modifiers for a keybinding should be included in the same list element IE: switch focus - 'c-w' (Control-W)quit:-qfilter:-/submit_filter:-enterstart:-sstop:-xup:-up-kdown:-down-jdocs:-?switch_focus:-'c-w'zoom:-'c-z'# using a keybinding of 'disabled' will remove any keybinding entirely#zoom:#  - 'disabled'toggle_scroll:-'c-s'shell_cmd:# this is the command used for all 'procs' that are defined with a 'shell' property.# by default the configured "$SHELL" environment variable will be used.-'/bin/bash'-'-c'# if this property is defined, the app will log all debug, info, error level logs to the designated filelog_file:/tmp/term.logenable_mouse:trueprocs:# each key will show up as its own process/script in the process list"taillog":# the shell command to run when this process is startedshell:"tail-f/tmp/term.log"# whether to start this process when ProcMux startsautostart:true# a short description of what this process/command does - will be displayed at the bottom of the screen when selecteddescription:'tailtheapplog'# meta tags will be searched against for during process filtering# meta tags much match fully (unlike the process name itself, which is fuzzy matched)meta_tags:-"follow"-"-f""printenvs":shell:"echo$SOME_TEST"description:'thiscommandwillprintenvvarsthatareconfiguredinthechildpid'#used for showing man page/documentation dialog when the docs keybinding is presseddocs:|<b>echo an env var set in the child pid</b><style fg="ansigreen">first an env var is set in the child pid</style><style fg="ansiblue">then the var is printed</style># environment variables before the command/shell is invokedenv:SOME_TEST:"AAAAAA""vim":shell:"vim"autostart:falsedescription:'startvim'# categories can be used to view your process list by single groups using filters formatted# like this: `cat:<category name>`# IE: `cat:edit` - this will show all processes that have a category 'edit'categories:-"edit""longrunningprint":shell:"echo'sometexthere'&&sleep3&&echo'stillrunning'&&sleep3&&echo'finaltext'"autostart:falsedescription:'printausingsleepsinbetween'"printcolors":shell:"./print_colors.sh"# used to change the directory that the command/process is started fromcwd:"/Users/nick/code/procmux-tui"autostart:falsedescription:'testterminalcolors'"justecho":# an example of using a specific CMD list instead of a shell stringcmd:-'/bin/bash'-'-c'-'echo"DONE!"'autostart:falsedescription:'runusingcmdproperty'"interpolation":# processes can be defined with replaceable values in this format <field_name:default> or <field_name># when processes with interpolated values are started, the user will be prompted to enter values for each field.# processes with interpolated values cannot be configured with 'autostart: true'shell:"echo'<first_echo:somedefault>'&&echo'<second_echo>'"autostart:falsedescription:'testinterpolation'