Skip to content

Releases: zdykstra/tmuxc

Geech, that's my smell hound.

29 Sep 14:28
2cebe0c
Compare
Choose a tag to compare

Perl 5.38.0 changed the default behavior of readline(). A single command could be sent to the control FIFO, all additional commands would not be read out and would be no-ops.

You'll have to speak up. I'm wearing a towel.

01 Dec 22:07
2291cd3
Compare
Choose a tag to compare

It's been a while since the last release, and a few minor improvements and changes have accumulated.

Breaking changes

The options --swm and --mwm have been moved to the --wm flag. Possible values are single or multi.

New features

First time contributor @ClashTheBunny provided the ssh_prereqs configuration option. Commands defined here are executed on the local host prior to attempting to start a ControlMaster session to the remote machine. If any of the commands exit with a status of 1, tmuxc exits. Thank you!

TMUX_SESSION_NAME is defined before starting tmux, so that it's available as an environment variable inside sessions.

All commits

  • 2291cd3 - perltidy, bump to v1.9 (Zach Dykstra)
  • 0545138 - Add ability to add a command as a prerequisite for SSH (Randall Mason)
  • ba99c1b - Fix usage of single|multi (Zach Dykstra)
  • 9c734e2 - Add csv header to document each field (Zach Dykstra)
  • 6cfde25 - Clean tmux session names from all sources (Zach Dykstra)
  • fcb4ede - Move mwm/swm to a single multi-opt CLI flag (Zach Dykstra)
  • 8bb609d - Correctly reap child processes instead of zombifying them (Zach Dykstra)
  • aa30037 - '.' is invalid in tmux session names (Zach Dykstra)
  • 2f76ddc - Only do swm if mwm is not explicitly enabled on the CLI (Zach Dykstra)
  • fdfd889 - Reap zombie SSH processes when a ControlMaster session dies (Zach Dykstra)
  • 5bbcb31 - Set it when attaching a terminal to a session (Zach Dykstra)
  • f0cd34c - Set TMUX_SESSION_NAME when creating sessions via SSH (Zach Dykstra)

It smells like comic books and loneliness!

11 Feb 20:46
Compare
Choose a tag to compare

This release has been a long time coming! Significant commits:

  • d0a7296 - Quality of life fixes for Haiku (Zach Dykstra)
  • e111e61 - Add exponential backoff for failed remote connection (Zach Dykstra)
  • 6a2a4b8 - Ephemeral / remote session handling cleaning (Zach Dykstra)
  • 991a302 - Single/Multi window launcher shortcuts (Zach Dykstra)
  • 7e9ec09 - Logging fixes, reconnection fix (Zach Dykstra)
  • 0c1e13d - Add man page (Zach Dykstra)
  • 6157bab - Add remote host session picker (Zach Dykstra)
  • dc9a3b3 - Expose LoadConfig via options menu (Zach Dykstra)

I tried to use the controls ... but I obviously have no clue how to fly a plane.

09 Jul 22:22
Compare
Choose a tag to compare

This is a point-release fix for incorrect logic that slipped through last night. exitlast should now do the correct thing when enabled and the right conditions are met.

We all have a calling - yours might be to dance on dugouts!

09 Jul 04:02
Compare
Choose a tag to compare

This release rolls up a pair of small fixes accumulated over the last few months. Notably, --exitlast|E now correctly exits when a tmux session ends. This means that when you exit the last shell in an ephemeral session, tmuxc now exits instead of spawning the session again.

5218149 - Correctly handle tmux sessions closing (Zach Dykstra)
e9ad2c4 - Add debug output for control mode attach command (Zach Dykstra)
1880a96 - Kill child processes when going through the main loop again (Zach Dykstra)

Stay safe, stay isolated

06 Apr 19:51
Compare
Choose a tag to compare

Included in this release is the --poe|P option. This option, when enabled, can be used to automatically clean up a session on tmuxc exit.

  • --poe none: no action taken
  • --poe ephemeral: if the session is marked as ephemeral, it will be removed via kill-session on tmuxc exit
  • --poe any: regardless of the session type, it is removed on tmuxc exit. Use this option cautiously!

Also: don't forget to HACK THE PLANET!

28 Feb 03:32
Compare
Choose a tag to compare
  • SSH speed improvements
    Instead of executing a series of commands over an SSH session, one-by-one, the startup process is now written to a shell script and executed via /bin/sh on the remote host. This step helps improve startup time for remote sessions over a high latency link.
    Additionally, instead of executing a few commands over SSH, they're instead executed through the tmux control mode socket which avoids the setup/teardown time involved with SSH.

  • Single Window Mode
    Some times, a session is still best served as a single window. tmuxc now supports this behavior via the swm option in the configuration file, or via -w on the command line. Refer to the updated documentation for additional configuration file options usable in single window mode - specifically on_connect. The launched terminal is tied to the life of tmuxc - if tmuxc exits, the terminal is reclaimed.

  • CLI usability

    • When tmuxc is invoked without any arguments, the --help output is displayed.
    • Sessions on the CLI can now be defined as session@hostname, to match the pretty process entry.
    • With out any flags, a full session can be launched - tmuxc session@hostname will start that session for you.
  • Cloned session names
    Previously, cloned sessions were composed of a number of different unique elements separated by a series of dashes. This lead to difficulties parsing the cloned session name if a hostname or a session name had a dash in it. Instead, sessions are now composed of a few unique elements separated by slashes.

    • In multi-window mode, cloned session names take the format tmuxc/hostname/session/window id (tmuxc/meluan/global-session/11)
    • In single-window mode, cloned session names take the format tmuxc/hostname/session (tmuxc/meluan/global-session)
    • Control sessions are now created once per tmux session, and shared between clients. They take the format tmuxc/session/control (tmuxc/global-session/control).
  • Internal changes
    The options/flags killrc and pauserc have been removed, as they only worked under a very specific set of circumstances. I will be re-implementing them to be more functional under a variety of situations.

Command line golfing is a real sport!

20 Jan 23:09
Compare
Choose a tag to compare

This release adds a few cosmetic changes.

  • The configuration option prettyps is enabled by default, which renames a running tmuxc process to be the name of the script, with the session@host. Entries in the process table will now look like tmuxc global-session@localhost.
  • A number of tmux command line argument changes were enacted, to further shrink the length of the command that is executed. All of the required options are either set now when a session group is cloned, or after a client has attached to a session. An attached tmux client will now look like tmux attach -t meluan-global-session-1579560844-178905-21 in your process table.
  • As part of the tmux command line golfing process, commands can now be injected into a tmuxc socket when a client first connects to a session. Right now, destroy-unattached on is sent, but additional commands on connect can be added through this mechanism.
  • Ephemeral sessions (those without a respective .tmuxc.conf entry) are now properly tracked and noted in the --known output. These sessions will have (ephemeral) noted after the session@host line.
  • Fix actions taken on tmux major version 3. With the release of tmux 3.0a the major/minor had to be split apart so an integer comparison can be done on the major version. The refresh-client code path now executes again.

I'm lost in the menus ...

23 Dec 17:20
Compare
Choose a tag to compare

Interaction improvements!

  • Adds support for a single page menu, combining all known sessions and the actions that can be done for each session into one menu.
  • Add a pause toggle to the menu system
  • Support looking for a configuration file at ~/.tmuxc.conf ~/.config/tmuxc.conf and ~/.config/tmuxc/tmuxc.conf
  • Restore skipnw to the options parser, so that value is actually respected in configuration files.
  • Rewrite options handling so the last 'action' option on the command line is what is executed.

A session, like life, is now ephemeral

14 Dec 20:23
d9645a3
Compare
Choose a tag to compare

This release adds the --oneoff|-S command line flag. This will open up a prompt through the selection tool of your choice (currently defaults to rofi), then create a new tmuxc instance with a named session on a host.

Input can take the following forms:

  • session
  • session@localhost
  • session@remote-host

The first two forms are identical to each other. Once the tmux session exits (the last window closes), tmuxc will exit and not respawn. If tmuxc is killed before the tmux session ends, there is no further record of the session. These sessions are not persisted to .tmuxc.conf, nor are they discoverable once the controlling tmuxc instance exits.