| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| _tmux.conf | 2026-05-15 | 44.6 kB | |
| wezterm.lua | 2026-05-11 | 21.2 kB | |
| wezterm-tmux | 2026-05-11 | 9.1 kB | |
| wezterm-launch | 2026-05-11 | 8.9 kB | |
| launch-in-terminal | 2026-05-11 | 6.0 kB | |
| README.md | 2026-05-11 | 50.9 kB | |
| README.html | 2026-05-11 | 189.6 kB | |
| alacritty.toml | 2026-04-22 | 10.8 kB | |
| reboot.sh | 2026-04-22 | 5.2 kB | |
| upd | 2026-04-22 | 39.5 kB | |
| fonts.conf | 2026-04-22 | 43.9 kB | |
| _Xresources | 2024-02-05 | 5.5 kB | |
| _vimrc | 2023-08-06 | 11.5 kB | |
| _Xmodmap | 2023-08-06 | 280 Bytes | |
| _xprofile | 2023-08-06 | 1.5 kB | |
| _inputrc | 2023-08-06 | 2.9 kB | |
| _nanorc | 2023-08-06 | 12.8 kB | |
| _screenrc | 2023-08-06 | 1.9 kB | |
| Totals: 18 Items | 465.9 kB | 1 | |
Support Files
These are files I use along with the Extreme Ultimate .bashrc (SourceForge does not allow files to start with a period so you will need to rename them, and all these should go into your home directory).
| File | Description |
|---|---|
.inputrc |
The configuration file for GNU Readline and sets addition options |
.nanorc |
My configuration file for the nano editor (you may need to remove an include line towards the end if you get an error because the source code highlighting is not installed) |
.screenrc |
The configuation file for GNU screen |
.tmux.conf |
A highly customized configuration file for Tmux terminal multiplexer with a beautiful status bar (See more information below) |
.vimrc |
My configuration file for the vim editor |
.wezterm.lua |
My configuration file for the WezTerm terminal application |
.Xmodmap |
This file remaps keys (this example remaps and swaps CAPS LOCK and Right-CTRL) |
.xprofile |
Allows you to execute commands and settings at the beginning of the X user session before the window manager is started |
.Xresources |
Allows you to set up terminal options and color schemes for XTerm and UXTerm |
alacritty.toml |
My configuration file for the Alacritty terminal application |
fonts.conf |
My configuration for font settings located in ~/.config/fontconfig/fonts.conf |
launch-in-terminal |
Runs a command in the best available terminal, preferring dropdown terminals (Yakuake, Guake) then falling back through 20+ terminal emulators |
reboot.sh |
Smart reboot script that detects and offers soft reboot (systemd) when available, with options to force full or soft reboot |
upd |
My smart update script for distos based on Arch Linux that detects and updates the Arch repo, AUR, Flatpak, Snap, TLDR, DidYouMean, Git repos, Micro plugins, Distrobox containers, and Wine |
wezterm-launch |
Opens a new WezTerm window or tab with any given parameters, and opens a new tab in WezTerm instead of launching another instance |
wezterm-tmux |
Launches WezTerm with Tmux as the terminal multiplexer, reusing existing sessions and focusing the window (see WezTerm section below) |
TMUX Configuration Overview
"Unleashing the full potential of the terminal, one config at a time." — Me 🚀
This section outlines the key bindings and settings configured in this .tmux.conf file.
General Configuration
- Minimum tmux version: 3.2 (Rocky 9+, Debian 12+, Ubuntu 22.04+). Features requiring 3.5+ are version-gated with
if-shell. - Terminal Scrollbars: Use terminal's scrollbars by adjusting overflow settings
- Scrollback History: Set to 100,000 lines
- Command Delay: Reduced to 1ms
- Key Repeat Time: Set to 600ms for repeating actions on held keys
- Focus Event Reporting: Enabled for better terminal synchronization
- Extended Keys: Enables programs inside tmux to receive full modifier key combos (Ctrl+Shift+Up vs Ctrl+Up, etc.)
- Path Retention: Retains current path in new panes and windows
- Window and Pane Numbering: Starts at 1, more intuitive
- Window Renumbering: Automatic renumbering on window closure
- Toggle Window:
akey to toggle between the last most recent window and back - Next Window:
Tabkey to move to next window - Previous Window:
Shift-TaborBTabto move to previous window - Resize Behavior: Aggressive resize and visual activity notifications
- True Color Support: Enabled via
terminal-featureswith per-terminal RGB support - Popup Windows:
display-popupfor floating terminals without disrupting layout - Pane Output: Dump scrollback to file (
D) or toggle ongoing pane logging (P) - Quick Action Menu: Popup menu (
m) for common layout, pane, and toggle actions - Session/Window Switching: Uses fzf in a popup if available, falls back to built-in chooser
- Status Bar: Sensibly but deeply customized, light weight, self contained, cross platform, visually appealing, and helpful status bar
- Mouse Mode: Toggle with
M, scroll with wheel, pane selection - Scrolling Behavior: Custom bindings for mouse wheel actions
- Copy Mode: Vim keybindings in copy mode with keyboard selection (v/V/Ctrl-v) and clipboard yank (y)
- Clipboard Copy: Integration with system clipboard tools (
xsel,xclip,wl-copy,pbcopy, etc.)
Key Bindings
- Prefix: Kept
CTRL-bbut also addedCTRL-aas aPREFIXkey - Quick Command Popup:
`or~opens a thin floating shell at the top of the screen (Quake-style) - Man Page Lookup:
CTRL-mto search and display man pages - Quick Action Menu:
mopens a popup menu for splits, layouts, toggles, and pane management - Status Bar Toggle:
Skey to toggle the status bar - Detach:
dto detach,CTRL-dto choose a client - Buffer Operations: Various keys (
v,V,C-v) for buffer operationsv: Paste most recent copied item.V: Show list of copied item buffers in tmux.C-v: Select from copied items to paste.
- Pane and Window Creation: Keys (
c,%,",|,-,g,G,T) for creating and arranging panes and windows - Pane Synchronization:
+to add all and synchronize panes - Session Selection:
sopens fzf popup (if installed) or choose-session - Window Selection:
'opens fzf popup (if installed) or choose-window - Zoom:
bfor toggling zoom of the current pane. - Resize: While constantly holding down the modifier key, the arrow keys will resize the current pane.
- Joining Panes:
jandJfor joining panes - Home and End Keys: Custom bindings for Home and End in copy mode
- Editing Configuration:
CTRL-eto edit.tmux.confwith available editor - Pane Output:
Ddumps entire scrollback to ~/tmux-dump-TIMESTAMP.txt,Ptoggles ongoing logging to ~/tmux-pane.log - Copy Mode: Vim keybindings with keyboard selection (
vvisual,Vline,CTRL-vblock,yyank to clipboard) - Clipboard Copy: Integration with system clipboard tools (
xsel,xclip,wl-copy,pbcopy, etc.)
Nearly all the original default keys still work in Tmux by design to make it easier to work on other systems. The additional new key bindings to provide additional functionality are marked in the first column with a ✓.
| N | Keybinding | Description |
|---|---|---|
| ✓ | CTRL-a |
Use either C-a or C-b as the default PREFIX key |
| - | PREFIX C-Down |
Resize pane down |
| - | PREFIX C-Left |
Resize pane left |
| - | PREFIX C-Right |
Resize pane right |
| - | PREFIX C-Up |
Resize pane up |
| - | PREFIX C-b |
Send prefix |
| - | PREFIX C-o |
Rotate window |
| - | PREFIX C-z |
Suspend client |
| ✓ | PREFIX CTRL+Alt+Down |
Move the current tab (window) to the far left end |
| ✓ | PREFIX CTRL+Alt+Left |
Move the current tab (window) to the right |
| ✓ | PREFIX CTRL+Alt+Right |
Move the current tab (window) to the left |
| ✓ | PREFIX CTRL+Alt+Up |
Move the current tab (window) to the far right end |
| ✓ | PREFIX CTRL-a |
Pass C-a to the current application (usually Select All) |
| ✓ | PREFIX CTRL-d |
Choose a client to detach |
| ✓ | PREFIX CTRL-e |
Edit the Tmux configuration file and then reload settings |
| ✓ | PREFIX CTRL-h |
Show the Extreme Ultimate .bashrc README file in a new pane |
| ✓ | PREFIX CTRL-l |
Clear screen and the buffer history |
| ✓ | PREFIX CTRL-m |
Prompt for keyword and open a man page for it in a new pane |
| ✓ | PREFIX CTRL-v |
Choose which buffer to paste from |
| - | PREFIX Down |
Select pane down (repeated) |
| - | PREFIX Left |
Select pane left (repeated) |
| - | PREFIX M-1 |
Select even horizontal layout |
| - | PREFIX M-2 |
Select even vertical layout |
| - | PREFIX M-3 |
Select main horizontal layout |
| - | PREFIX M-4 |
Select main vertical layout |
| - | PREFIX M-5 |
Select tiled layout |
| - | PREFIX M-Down |
Resize pane down by 5 (repeated) |
| - | PREFIX M-Left |
Resize pane left by 5 (repeated) |
| - | PREFIX M-Right |
Resize pane right by 5 (repeated) |
| - | PREFIX M-Up |
Resize pane up by 5 (repeated) |
| - | PREFIX M-n |
Next window (all) |
| - | PREFIX M-o |
Rotate window (down) |
| - | PREFIX M-p |
Previous window (all) |
| - | PREFIX Page Up |
Copy mode (up) |
| - | PREFIX Right |
Select pane right (repeated) |
| ✓ | PREFIX Shift-Tab |
Switch to the most recently accessed window |
| - | PREFIX Space |
Next layout |
| ✓ | PREFIX Tab |
Switch to the next available window |
| - | PREFIX Up |
Select pane up (repeated) |
| ✓ | PREFIX D |
Dump pane scrollback to a timestamped file |
| ✓ | PREFIX G |
Split the pane into a grid of 4 panes (vertical resize) |
| ✓ | PREFIX J |
Send pane to another pane (show the numbers with CTRL-w) |
| - | PREFIX L |
Switch client (last) |
| ✓ | PREFIX M |
Toggle the mouse on and off |
| ✓ | PREFIX P |
Toggle pane output logging to ~/tmux-pane.log |
| ✓ | PREFIX S |
Toggle the status bar on and off |
| ✓ | PREFIX T |
Make the current window the first window |
| ✓ | PREFIX V |
List paste buffers |
| ✓ | PREFIX a |
Switch most recent windows |
| ✓ | PREFIX c |
Create a new window now opens using the current path |
| - | PREFIX d |
Detach client |
| - | PREFIX f |
Find window prompt |
| ✓ | PREFIX g |
Split the pane into a grid of 4 panes (horizontal resize) |
| ✓ | PREFIX h |
Show the Extreme Ultimate .bashrc help file in a new pane |
| - | PREFIX i |
Display message |
| ✓ | PREFIX j |
Join panes (show the numbers with CTRL-w) |
| - | PREFIX l |
Last window |
| ✓ | PREFIX m |
Quick action menu (popup menu for common actions) |
| - | PREFIX n |
Next window |
| - | PREFIX o |
Select pane |
| - | PREFIX p |
Previous window |
| - | PREFIX q |
Display visible indicator of each pane |
| ✓ | PREFIX r |
Reload the .tmux.conf configuration file |
| ✓ | PREFIX s |
Choose session (fzf popup if available) |
| - | PREFIX t |
Clock mode |
| ✓ | PREFIX v |
Paste from the top paste buffer |
| - | PREFIX w |
Choose window |
| - | PREFIX x |
Confirm before killing pane |
| - | PREFIX z |
Toggle zoom (make a pane full screen) |
| - | PREFIX 0-9 |
Select window by number (0-9) |
| ✓ | PREFIX _/Del |
Delete buffer |
| ✓ | PREFIX - |
Split the window vertically (keeping the current path) |
| ✓ | PREFIX |/\ |
Split the window horizontally (keeping the current path) |
| - | PREFIX ! |
Break pane |
| - | PREFIX " |
Split window |
| - | PREFIX # |
List buffers |
| - | PREFIX $ |
Rename session prompt |
| - | PREFIX % |
Split window horizontally |
| - | PREFIX & |
Confirm before killing window |
| ✓ | PREFIX ' |
Choose window (fzf popup if available) |
| - | PREFIX ( |
Switch client (previous) |
| - | PREFIX ) |
Switch client (next) |
| ✓ | PREFIX + |
Synchronize panes (on/off) |
| - | PREFIX , |
Rename window prompt |
| - | PREFIX . |
Move window prompt |
| - | PREFIX : |
Command prompt |
| - | PREFIX ; |
Last pane |
| ✓ | PREFIX < |
Swap the current pane left |
| - | PREFIX = |
Choose buffer |
| ✓ | PREFIX > |
Swap the current pane right |
| - | PREFIX ? |
List keys |
| - | PREFIX [ |
Copy mode |
| - | PREFIX ] |
Paste buffer |
| - | PREFIX { |
Swap pane with previous |
| - | PREFIX } |
Swap pane with next |
| ✓ | `PREFIX `` | Quick command popup at top of screen (same as ~) |
| ✓ | PREFIX ~ |
Quick command popup at top of screen (same as `) |
| ✓ | CTRL+Alt+Down |
Swap the pane down (no modifier) |
| ✓ | CTRL+Alt+Left |
Swap the pane left (no modifier) |
| ✓ | CTRL+Alt+Right |
Swap the pane right (no modifier) |
| ✓ | CTRL+Alt+Up |
Swap the pane up (no modifier) |
| ✓ | ENTER |
Copy selection to OS clipboard when in copy mode |
| ✓ | Mouse Selection | Copy selection to OS clipboard (in copy mode, mouse drag) |
| ✓ | Copy v |
Start visual selection (copy mode only) |
| ✓ | Copy V |
Select entire line (copy mode only) |
| ✓ | Copy CTRL-v |
Toggle rectangle/block selection (copy mode only) |
| ✓ | Copy y |
Yank selection to system clipboard (copy mode only) |
| ✓ | Copy Escape |
Cancel copy mode |
Characters left for bindings:
These are the keys available (
PREFIX+Key) and excludes all the default bindings already present. Does not include additional modifier combinations.
k u y
A B C E F H I K N O Q R U W X Y Z
Tmux in Desktop Terminals
To automatically open Tmux within desktop terminals (such as Alacritty, Konsole, or XFCE Terminal) and manage their sessions effectively:
- Utilize the provided scripts: Instead of directly launching terminal program binaries, call these scripts (with the full path) instead.
- Single Tmux session: Using these scripts guarantees that only one terminal instance is loaded, as all instances share the same Tmux session. This prevents the confusion of having multiple terminals displaying identical content.
- Initial script run: When you execute the script for the first time, it will launch your terminal with Tmux already loaded. The Tmux session name defaults to the username, but can be customized with
_TMUX_LOAD_SESSION_NAME(see configuration below). - Additional terminal instances: Running the script again to launch another terminal instance will seamlessly add a new tab to your existing Tmux session (I put the status bar at the top to give the appearance of Tmux windows as tabs). This behavior resembles Konsole's behavior with
konsole --new-tabbut it employs Tmux instead. - Optional
xdotoolorwmctrlintegration: While not mandatory, if either of these is installed, the terminal window will also be brought to the forefront and focused automatically.
Save and execute the provided script file(s) to launch your terminal. For example, edit the menu items and change the program to /your-path/tmux-alacritty instead of alacritty. You can also make the full path to the script the default terminal.
Alacritty - GPU-accelerated terminal based on performance
Note: Alacritty appears to fit and support Tmux the best out of most of the popular terminals - especially with keys like Home and End and Shift or Control and Home and End for moving around and selection using the keybinds of modern editors and IDEs.
#!/bin/sh
# =============================================================================
# Description:
# =============================================================================
# Launch Alacritty with Tmux as the terminal multiplexer
# Tmux owns the session (tabs, panes, persistence), Alacritty is the display.
#
# - Opens a new Alacritty window with Tmux, or creates a new Tmux window
# if Alacritty is already running
# - Automatically focuses on an existing Alacritty window if already running
# - Reattaches to an existing Tmux session or creates a new one
#
# Optional Parameters:
# Passing a directory will start the new Tmux window in that directory
# Passing a command or executable will run it in a new Tmux window
# Anything else will be passed as parameters to the Alacritty command line
#
# Dependencies:
# 1. Alacritty (required): Terminal emulator
# 2. tmux (required): Terminal multiplexer
# 3. xdotool (preferred): For focusing the Alacritty window (X11 only)
# 4. wmctrl (optional): Alternative to xdotool for window focus (X11 only)
#
# Note:
# The process priority is slightly elevated using nice -n -1 when available.
# This can make the terminal feel more responsive under heavy system load.
# To disable, edit the launch() function below.
# =============================================================================
# Script name determined at runtime
SCRIPT_NAME="$(basename "$0")"
# Display colored help output
show_help() {
printf "\033[1;36m${SCRIPT_NAME}\033[0m: Launch Alacritty with Tmux as the multiplexer\n"
printf "\033[1;37mUsage:\033[0m \033[1;36m${SCRIPT_NAME}\033[0m \033[1;35m[\033[1;33marguments\033[1;35m]\033[0m\n"
printf '\n'
printf '\033[1;37mExamples:\033[0m\n'
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;34m# Launch or new Tmux window\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33m/path/to/directory\033[0m \033[1;34m# Start in directory\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33mhtop\033[0m \033[1;34m# Run executable in Tmux\033[0m\n"
printf '\n'
printf '\033[1;37mDependencies:\033[0m\n'
printf ' \033[1;33malacritty\033[0m Terminal emulator (required)\n'
printf ' \033[1;33mtmux\033[0m Terminal multiplexer (required)\n'
printf ' \033[1;33mxdotool\033[0m Window focus, X11 only (preferred)\n'
printf ' \033[1;33mwmctrl\033[0m Alternative window focus (optional)\n'
printf '\n'
printf '\033[1;37mEnvironment:\033[0m\n'
printf ' \033[1;33m_TMUX_LOAD_SESSION_NAME\033[0m Override the Tmux session name\n'
}
# Handle -h and --help flags
if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
show_help
exit 0
fi
# Launch a command as a detached background process with elevated priority
# Bundles nohup + nice + backgrounding because nohup is an external binary
# that cannot execute shell functions (only programs in PATH)
launch() {
if command -v nice > /dev/null; then
nohup nice -n -1 "$@" > /dev/null 2>&1 &
else
nohup "$@" > /dev/null 2>&1 &
fi
}
# Get the Tmux session name from environment, existing sessions, or username
get_session_name() {
if [ -n "${_TMUX_LOAD_SESSION_NAME}" ]; then
echo "${_TMUX_LOAD_SESSION_NAME}"
elif [ "$(tmux list-sessions 2>/dev/null | wc -l)" -gt 0 ]; then
SESSION="$(tmux ls -F "#{session_name}" 2>/dev/null | head -n 1)"
echo "${SESSION:-$(whoami)}"
else
whoami
fi
}
# Focus Alacritty window using available tools (X11 only)
focus_window() {
if command -v xdotool > /dev/null && [ -n "${DISPLAY}" ]; then
WINDOW_ID=$(xdotool search --class "Alacritty" | tail -n 1)
if [ -n "${WINDOW_ID}" ]; then
xdotool windowactivate "${WINDOW_ID}"
fi
elif command -v wmctrl > /dev/null && [ -n "${DISPLAY}" ]; then
wmctrl -x -a "Alacritty"
fi
}
# ------------------------------------------------------------------------------
# Main script execution
# ------------------------------------------------------------------------------
# Check if Alacritty and Tmux are both running
if pidof "alacritty" > /dev/null 2>&1 && tmux info > /dev/null 2>&1; then
# If a directory was passed, open the new window there
if [ -n "${1}" ] && [ -d "${1}" ]; then
tmux new-window -c "${1}"
# If an executable was passed, run it in a new Tmux window
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
tmux new-window "$@"
# Default: open a new Tmux window in the current directory
else
tmux new-window
fi
# Focus the existing Alacritty window
focus_window
else
# Alacritty is not running; start it with Tmux
_TMUX_SESSION_NAME="$(get_session_name)"
# If a directory was passed, start there
if [ -n "${1}" ] && [ -d "${1}" ]; then
cd "${1}" || exit 1
launch alacritty -T "Terminal" \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}"
# If an executable was passed, run it as the initial Tmux command
# Note: when -A attaches to an existing session, the command is ignored;
# the executable only runs when creating a new session
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
launch alacritty -T "Terminal" \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}" "$@"
# Default: start Alacritty with Tmux
else
launch alacritty -T "Terminal" \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}"
fi
fi
Kitty - Fast, feature-rich, GPU based terminal emulator
https://sw.kovidgoyal.net/kitty/
#!/bin/sh
# =============================================================================
# Description:
# =============================================================================
# Launch Kitty with Tmux as the terminal multiplexer
# Tmux owns the session (tabs, panes, persistence), Kitty is the display.
#
# - Opens a new Kitty window with Tmux, or creates a new Tmux window
# if Kitty is already running
# - Automatically focuses on an existing Kitty window if already running
# - Reattaches to an existing Tmux session or creates a new one
#
# Optional Parameters:
# Passing a directory will start the new Tmux window in that directory
# Passing a command or executable will run it in a new Tmux window
# Anything else will be passed as parameters to the Kitty command line
#
# Dependencies:
# 1. Kitty (required): Terminal emulator
# 2. tmux (required): Terminal multiplexer
# 3. xdotool (preferred): For focusing the Kitty window (X11 only)
# 4. wmctrl (optional): Alternative to xdotool for window focus (X11 only)
#
# Note:
# The process priority is slightly elevated using nice -n -1 when available.
# This can make the terminal feel more responsive under heavy system load.
# To disable, edit the launch() function below.
# =============================================================================
# Script name determined at runtime
SCRIPT_NAME="$(basename "$0")"
# Display colored help output
show_help() {
printf "\033[1;36m${SCRIPT_NAME}\033[0m: Launch Kitty with Tmux as the multiplexer\n"
printf "\033[1;37mUsage:\033[0m \033[1;36m${SCRIPT_NAME}\033[0m \033[1;35m[\033[1;33marguments\033[1;35m]\033[0m\n"
printf '\n'
printf '\033[1;37mExamples:\033[0m\n'
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;34m# Launch or new Tmux window\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33m/path/to/directory\033[0m \033[1;34m# Start in directory\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33mhtop\033[0m \033[1;34m# Run executable in Tmux\033[0m\n"
printf '\n'
printf '\033[1;37mDependencies:\033[0m\n'
printf ' \033[1;33mkitty\033[0m Terminal emulator (required)\n'
printf ' \033[1;33mtmux\033[0m Terminal multiplexer (required)\n'
printf ' \033[1;33mxdotool\033[0m Window focus, X11 only (preferred)\n'
printf ' \033[1;33mwmctrl\033[0m Alternative window focus (optional)\n'
printf '\n'
printf '\033[1;37mEnvironment:\033[0m\n'
printf ' \033[1;33m_TMUX_LOAD_SESSION_NAME\033[0m Override the Tmux session name\n'
}
# Handle -h and --help flags
if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
show_help
exit 0
fi
# Launch a command as a detached background process with elevated priority
# Bundles nohup + nice + backgrounding because nohup is an external binary
# that cannot execute shell functions (only programs in PATH)
launch() {
if command -v nice > /dev/null; then
nohup nice -n -1 "$@" > /dev/null 2>&1 &
else
nohup "$@" > /dev/null 2>&1 &
fi
}
# Get the Tmux session name from environment, existing sessions, or username
get_session_name() {
if [ -n "${_TMUX_LOAD_SESSION_NAME}" ]; then
echo "${_TMUX_LOAD_SESSION_NAME}"
elif [ "$(tmux list-sessions 2>/dev/null | wc -l)" -gt 0 ]; then
SESSION="$(tmux ls -F "#{session_name}" 2>/dev/null | head -n 1)"
echo "${SESSION:-$(whoami)}"
else
whoami
fi
}
# Focus Kitty window using available tools (X11 only)
focus_window() {
if command -v xdotool > /dev/null && [ -n "${DISPLAY}" ]; then
WINDOW_ID=$(xdotool search --class "kitty" | tail -n 1)
if [ -n "${WINDOW_ID}" ]; then
xdotool windowactivate "${WINDOW_ID}"
fi
elif command -v wmctrl > /dev/null && [ -n "${DISPLAY}" ]; then
wmctrl -x -a "kitty"
fi
}
# ------------------------------------------------------------------------------
# Main script execution
# ------------------------------------------------------------------------------
# Check if Kitty and Tmux are both running
if pidof "kitty" > /dev/null 2>&1 && tmux info > /dev/null 2>&1; then
# If a directory was passed, open the new window there
if [ -n "${1}" ] && [ -d "${1}" ]; then
tmux new-window -c "${1}"
# If an executable was passed, run it in a new Tmux window
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
tmux new-window "$@"
# Default: open a new Tmux window in the current directory
else
tmux new-window
fi
# Focus the existing Kitty window
focus_window
else
# Kitty is not running; start it with Tmux
_TMUX_SESSION_NAME="$(get_session_name)"
# If a directory was passed, start there
if [ -n "${1}" ] && [ -d "${1}" ]; then
cd "${1}" || exit 1
launch kitty -T "Terminal" \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}"
# If an executable was passed, run it as the initial Tmux command
# Note: when -A attaches to an existing session, the command is ignored;
# the executable only runs when creating a new session
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
launch kitty -T "Terminal" \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}" "$@"
# Default: start Kitty with Tmux
else
launch kitty -T "Terminal" \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}"
fi
fi
Konsole - KDE default terminal
#!/bin/sh
# =============================================================================
# Description:
# =============================================================================
# Launch Konsole with Tmux as the terminal multiplexer
# Tmux owns the session (tabs, panes, persistence), Konsole is the display.
#
# - Opens a new Konsole window with Tmux, or creates a new Tmux window
# if Konsole is already running
# - Automatically focuses on an existing Konsole window if already running
# - Reattaches to an existing Tmux session or creates a new one
# - Hides Konsole's menu bar and tab bar (Tmux handles tabs)
#
# Optional Parameters:
# Passing a directory will start the new Tmux window in that directory
# Passing a command or executable will run it in a new Tmux window
# Anything else will be passed as parameters to the Konsole command line
#
# Dependencies:
# 1. Konsole (required): Terminal emulator
# 2. tmux (required): Terminal multiplexer
# 3. xdotool (preferred): For focusing the Konsole window (X11 only)
# 4. wmctrl (optional): Alternative to xdotool for window focus (X11 only)
#
# Note:
# The process priority is slightly elevated using nice -n -1 when available.
# This can make the terminal feel more responsive under heavy system load.
# To disable, edit the launch() function below.
# =============================================================================
# Script name determined at runtime
SCRIPT_NAME="$(basename "$0")"
# Display colored help output
show_help() {
printf "\033[1;36m${SCRIPT_NAME}\033[0m: Launch Konsole with Tmux as the multiplexer\n"
printf "\033[1;37mUsage:\033[0m \033[1;36m${SCRIPT_NAME}\033[0m \033[1;35m[\033[1;33marguments\033[1;35m]\033[0m\n"
printf '\n'
printf '\033[1;37mExamples:\033[0m\n'
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;34m# Launch or new Tmux window\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33m/path/to/directory\033[0m \033[1;34m# Start in directory\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33mhtop\033[0m \033[1;34m# Run executable in Tmux\033[0m\n"
printf '\n'
printf '\033[1;37mDependencies:\033[0m\n'
printf ' \033[1;33mkonsole\033[0m Terminal emulator (required)\n'
printf ' \033[1;33mtmux\033[0m Terminal multiplexer (required)\n'
printf ' \033[1;33mxdotool\033[0m Window focus, X11 only (preferred)\n'
printf ' \033[1;33mwmctrl\033[0m Alternative window focus (optional)\n'
printf '\n'
printf '\033[1;37mEnvironment:\033[0m\n'
printf ' \033[1;33m_TMUX_LOAD_SESSION_NAME\033[0m Override the Tmux session name\n'
}
# Handle -h and --help flags
if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
show_help
exit 0
fi
# Launch a command as a detached background process with elevated priority
# Bundles nohup + nice + backgrounding because nohup is an external binary
# that cannot execute shell functions (only programs in PATH)
launch() {
if command -v nice > /dev/null; then
nohup nice -n -1 "$@" > /dev/null 2>&1 &
else
nohup "$@" > /dev/null 2>&1 &
fi
}
# Get the Tmux session name from environment, existing sessions, or username
get_session_name() {
if [ -n "${_TMUX_LOAD_SESSION_NAME}" ]; then
echo "${_TMUX_LOAD_SESSION_NAME}"
elif [ "$(tmux list-sessions 2>/dev/null | wc -l)" -gt 0 ]; then
SESSION="$(tmux ls -F "#{session_name}" 2>/dev/null | head -n 1)"
echo "${SESSION:-$(whoami)}"
else
whoami
fi
}
# Focus Konsole window using available tools (X11 only)
focus_window() {
if command -v xdotool > /dev/null && [ -n "${DISPLAY}" ]; then
WINDOW_ID=$(xdotool search --class "konsole" | tail -n 1)
if [ -n "${WINDOW_ID}" ]; then
xdotool windowactivate "${WINDOW_ID}"
fi
elif command -v wmctrl > /dev/null && [ -n "${DISPLAY}" ]; then
wmctrl -x -a "konsole"
fi
}
# ------------------------------------------------------------------------------
# Main script execution
# ------------------------------------------------------------------------------
# Check if Konsole and Tmux are both running
if pidof "konsole" > /dev/null 2>&1 && tmux info > /dev/null 2>&1; then
# If a directory was passed, open the new window there
if [ -n "${1}" ] && [ -d "${1}" ]; then
tmux new-window -c "${1}"
# If an executable was passed, run it in a new Tmux window
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
tmux new-window "$@"
# Default: open a new Tmux window in the current directory
else
tmux new-window
fi
# Focus the existing Konsole window
focus_window
else
# Konsole is not running; start it with Tmux
_TMUX_SESSION_NAME="$(get_session_name)"
# Konsole uses tmux -c for directory instead of shell cd
if [ -n "${1}" ] && [ -d "${1}" ]; then
launch konsole --hide-menubar --hide-tabbar \
-e tmux -u new-session -A -c "${1}" -s "${_TMUX_SESSION_NAME}"
# If an executable was passed, run it as the initial Tmux command
# Note: when -A attaches to an existing session, the command is ignored;
# the executable only runs when creating a new session
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
launch konsole --hide-menubar --hide-tabbar \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}" "$@"
# Default: start Konsole with Tmux
else
launch konsole --hide-menubar --hide-tabbar \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}"
fi
fi
WezTerm - GPU-accelerated terminal emulator and multiplexer written in Rust
https://wezfurlong.org/wezterm/index.html
#!/bin/sh
# =============================================================================
# Description:
# =============================================================================
# Launch WezTerm with Tmux as the terminal multiplexer
# Tmux owns the session (tabs, panes, persistence), WezTerm is the display.
#
# - Opens a new WezTerm window with Tmux, or creates a new Tmux window
# if WezTerm is already running
# - Automatically focuses on an existing WezTerm window if already running
# - Reattaches to an existing Tmux session or creates a new one
#
# Optional Parameters:
# Passing a directory will start the new Tmux window in that directory
# Passing a command or executable will run it in a new Tmux window
# Passing a .lua configuration file will use it for a new WezTerm instance
# Anything else will be passed as parameters to the WezTerm command line
#
# Dependencies:
# 1. WezTerm (required): Terminal emulator
# 2. tmux (required): Terminal multiplexer
# 3. xdotool (preferred): For focusing the WezTerm window (X11 only)
# 4. wmctrl (optional): Alternative to xdotool for window focus (X11 only)
# 5. xseticon (optional): For overriding the window icon with a custom PNG
#
# Note:
# The process priority is slightly elevated using nice -n -1 when available.
# This can make the terminal feel more responsive under heavy system load.
# To disable, edit the launch() function below.
# =============================================================================
# Script name determined at runtime
SCRIPT_NAME="$(basename "$0")"
# Custom window icon (set to empty string to disable)
CUSTOM_ICON="${HOME}/.local/share/icons/wezterm-rgb.png"
# Display colored help output
show_help() {
printf "\033[1;36m${SCRIPT_NAME}\033[0m: Launch WezTerm with Tmux as the multiplexer\n"
printf "\033[1;37mUsage:\033[0m \033[1;36m${SCRIPT_NAME}\033[0m \033[1;35m[\033[1;33marguments\033[1;35m]\033[0m\n"
printf '\n'
printf '\033[1;37mExamples:\033[0m\n'
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;34m# Launch or new Tmux window\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33m/path/to/directory\033[0m \033[1;34m# Start in directory\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33mhtop\033[0m \033[1;34m# Run executable in Tmux\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33mconfig.lua\033[0m \033[1;34m# Use custom WezTerm config\033[0m\n"
printf '\n'
printf '\033[1;37mDependencies:\033[0m\n'
printf ' \033[1;33mwezterm\033[0m Terminal emulator (required)\n'
printf ' \033[1;33mtmux\033[0m Terminal multiplexer (required)\n'
printf ' \033[1;33mxdotool\033[0m Window focus, X11 only (preferred)\n'
printf ' \033[1;33mwmctrl\033[0m Alternative window focus (optional)\n'
printf ' \033[1;33mxseticon\033[0m Custom window icon, X11 only (optional)\n'
printf '\n'
printf '\033[1;37mEnvironment:\033[0m\n'
printf ' \033[1;33m_TMUX_LOAD_SESSION_NAME\033[0m Override the Tmux session name\n'
printf '\n'
printf '\033[1;37mCustom Icon:\033[0m\n'
printf ' Set \033[1;33mCUSTOM_ICON\033[0m at the top of the script to change or disable\n'
printf " Current: \033[1;36m${CUSTOM_ICON:-disabled}\033[0m\n"
}
# Handle -h and --help flags
if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
show_help
exit 0
fi
# Launch a command as a detached background process with elevated priority
# Bundles nohup + nice + backgrounding because nohup is an external binary
# that cannot execute shell functions (only programs in PATH)
launch() {
if command -v nice > /dev/null; then
nohup nice -n -1 "$@" > /dev/null 2>&1 &
else
nohup "$@" > /dev/null 2>&1 &
fi
}
# Configure and focus a newly launched WezTerm window (X11 only)
# Runs in a single background subshell to avoid delaying the launch
# and to prevent race conditions between separate polling loops.
# Sets the custom icon (if xseticon available), window title, and focus.
# Uses PID-based search because WezTerm dynamically changes WM_CLASS
# to match the running application (e.g., "bash", "tmux").
# Uses xdotool (preferred) or wmctrl (fallback); silently skips if neither exists.
# Only called when launching a new WezTerm instance (not when already running).
setup_new_window() {
if [ -z "${DISPLAY}" ]; then
return
fi
if command -v xdotool > /dev/null; then
(
# Poll until the WezTerm window appears (up to 5 seconds)
ATTEMPTS=0
while [ ${ATTEMPTS} -lt 50 ]; do
for PID in $(pidof wezterm-gui 2>/dev/null); do
WINDOW_IDS=$(xdotool search --pid "${PID}" 2>/dev/null)
if [ -n "${WINDOW_IDS}" ]; then
for WINDOW_ID in ${WINDOW_IDS}; do
# Set custom icon if xseticon and the icon file are available
if command -v xseticon > /dev/null && [ -f "${CUSTOM_ICON}" ]; then
xseticon -id "${WINDOW_ID}" "${CUSTOM_ICON}"
fi
xdotool set_window --name "Terminal" "${WINDOW_ID}"
done
# Focus the last window (the one just launched)
LAST_ID=$(echo "${WINDOW_IDS}" | tail -n 1)
xdotool windowactivate "${LAST_ID}"
break 2
fi
done
ATTEMPTS=$((ATTEMPTS + 1))
sleep 0.1
done
) &
# wmctrl can focus but cannot set titles or icons (match by PID)
elif command -v wmctrl > /dev/null; then
(
ATTEMPTS=0
while [ ${ATTEMPTS} -lt 50 ]; do
for PID in $(pidof wezterm-gui 2>/dev/null); do
WMCTRL_ID=$(wmctrl -l -p | awk -v pid="${PID}" '$3 == pid {print $1; exit}')
if [ -n "${WMCTRL_ID}" ]; then
wmctrl -i -a "${WMCTRL_ID}"
break 2
fi
done
ATTEMPTS=$((ATTEMPTS + 1))
sleep 0.1
done
) &
fi
}
# Get the Tmux session name from environment, existing sessions, or username
get_session_name() {
if [ -n "${_TMUX_LOAD_SESSION_NAME}" ]; then
echo "${_TMUX_LOAD_SESSION_NAME}"
elif [ "$(tmux list-sessions 2>/dev/null | wc -l)" -gt 0 ]; then
SESSION="$(tmux ls -F "#{session_name}" 2>/dev/null | head -n 1)"
echo "${SESSION:-$(whoami)}"
else
whoami
fi
}
# Focus WezTerm window using available tools (X11 only)
# Uses PID-based search because WezTerm dynamically changes WM_CLASS
# to match the running application (e.g., "bash", "claude-code")
focus_window() {
# Try xdotool first (preferred)
if command -v xdotool > /dev/null && [ -n "${DISPLAY}" ]; then
for PID in $(pidof wezterm-gui 2>/dev/null); do
WINDOW_ID=$(xdotool search --pid "${PID}" 2>/dev/null | tail -n 1)
if [ -n "${WINDOW_ID}" ]; then
xdotool windowactivate "${WINDOW_ID}"
return
fi
done
# Fall back to wmctrl (match by PID from process list)
elif command -v wmctrl > /dev/null && [ -n "${DISPLAY}" ]; then
for PID in $(pidof wezterm-gui 2>/dev/null); do
WMCTRL_ID=$(wmctrl -l -p | awk -v pid="${PID}" '$3 == pid {print $1; exit}')
if [ -n "${WMCTRL_ID}" ]; then
wmctrl -i -a "${WMCTRL_ID}"
return
fi
done
fi
}
# ------------------------------------------------------------------------------
# Main script execution
# ------------------------------------------------------------------------------
# Check if WezTerm and Tmux are both running
if pidof "wezterm-gui" > /dev/null 2>&1 && tmux info > /dev/null 2>&1; then
# If a .lua config file was passed, launch a separate WezTerm instance
# (a different config cannot be applied to an already-running instance)
if [ $# -eq 1 ] && [ -f "${1}" ] && [ "${1##*.}" = "lua" ]; then
_TMUX_SESSION_NAME="$(get_session_name)"
launch wezterm --config-file "${1}" \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}"
# If a directory was passed, open the new window there
elif [ -n "${1}" ] && [ -d "${1}" ]; then
tmux new-window -c "${1}"
# If an executable was passed, run it in a new Tmux window
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
tmux new-window -- "$@"
# Default: open a new Tmux window in the current directory
else
tmux new-window
fi
# Focus the existing WezTerm window
focus_window
else
# WezTerm is not running; start it with Tmux
_TMUX_SESSION_NAME="$(get_session_name)"
# If a .lua config file was passed, use it for WezTerm
if [ $# -eq 1 ] && [ -f "${1}" ] && [ "${1##*.}" = "lua" ]; then
launch wezterm --config-file "${1}" \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}"
# If a directory was passed, start there
elif [ -n "${1}" ] && [ -d "${1}" ]; then
launch wezterm \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}" -c "${1}"
# If an executable was passed, run it as the initial Tmux command
# Note: when -A attaches to an existing session, the command is ignored;
# the executable only runs when creating a new session
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
launch wezterm \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}" -- "$@"
# Default: start WezTerm with Tmux
else
launch wezterm \
-e tmux -u new-session -A -s "${_TMUX_SESSION_NAME}"
fi
# Set icon, title, and focus on the new window (X11 only)
setup_new_window
fi
XFCE Terminal - Xfce default terminal
https://docs.xfce.org/apps/terminal/start
#!/bin/sh
# =============================================================================
# Description:
# =============================================================================
# Launch XFCE4 Terminal with Tmux as the terminal multiplexer
# Tmux owns the session (tabs, panes, persistence), XFCE4 Terminal is the
# display.
#
# - Opens a new XFCE4 Terminal window with Tmux, or creates a new Tmux window
# if XFCE4 Terminal is already running
# - Automatically focuses on an existing XFCE4 Terminal window if running
# - Reattaches to an existing Tmux session or creates a new one
#
# Optional Parameters:
# Passing a directory will start the new Tmux window in that directory
# Passing a command or executable will run it in a new Tmux window
# Anything else will be passed as parameters to the xfce4-terminal command
#
# Dependencies:
# 1. xfce4-terminal (required): Terminal emulator
# 2. tmux (required): Terminal multiplexer
# 3. xdotool (preferred): For focusing the terminal window (X11 only)
# 4. wmctrl (optional): Alternative to xdotool for window focus (X11 only)
#
# Note:
# The process priority is slightly elevated using nice -n -1 when available.
# This can make the terminal feel more responsive under heavy system load.
# To disable, edit the launch() function below.
# =============================================================================
# Script name determined at runtime
SCRIPT_NAME="$(basename "$0")"
# Display colored help output
show_help() {
printf "\033[1;36m${SCRIPT_NAME}\033[0m: Launch XFCE4 Terminal with Tmux as the multiplexer\n"
printf "\033[1;37mUsage:\033[0m \033[1;36m${SCRIPT_NAME}\033[0m \033[1;35m[\033[1;33marguments\033[1;35m]\033[0m\n"
printf '\n'
printf '\033[1;37mExamples:\033[0m\n'
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;34m# Launch or new Tmux window\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33m/path/to/directory\033[0m \033[1;34m# Start in directory\033[0m\n"
printf " \033[1;36m${SCRIPT_NAME}\033[0m \033[1;33mhtop\033[0m \033[1;34m# Run executable in Tmux\033[0m\n"
printf '\n'
printf '\033[1;37mDependencies:\033[0m\n'
printf ' \033[1;33mxfce4-terminal\033[0m Terminal emulator (required)\n'
printf ' \033[1;33mtmux\033[0m Terminal multiplexer (required)\n'
printf ' \033[1;33mxdotool\033[0m Window focus, X11 only (preferred)\n'
printf ' \033[1;33mwmctrl\033[0m Alternative window focus (optional)\n'
printf '\n'
printf '\033[1;37mEnvironment:\033[0m\n'
printf ' \033[1;33m_TMUX_LOAD_SESSION_NAME\033[0m Override the Tmux session name\n'
}
# Handle -h and --help flags
if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
show_help
exit 0
fi
# Launch a command as a detached background process with elevated priority
# Bundles nohup + nice + backgrounding because nohup is an external binary
# that cannot execute shell functions (only programs in PATH)
launch() {
if command -v nice > /dev/null; then
nohup nice -n -1 "$@" > /dev/null 2>&1 &
else
nohup "$@" > /dev/null 2>&1 &
fi
}
# Get the Tmux session name from environment, existing sessions, or username
get_session_name() {
if [ -n "${_TMUX_LOAD_SESSION_NAME}" ]; then
echo "${_TMUX_LOAD_SESSION_NAME}"
elif [ "$(tmux list-sessions 2>/dev/null | wc -l)" -gt 0 ]; then
SESSION="$(tmux ls -F "#{session_name}" 2>/dev/null | head -n 1)"
echo "${SESSION:-$(whoami)}"
else
whoami
fi
}
# Focus XFCE4 Terminal window using available tools (X11 only)
focus_window() {
if command -v xdotool > /dev/null && [ -n "${DISPLAY}" ]; then
WINDOW_ID=$(xdotool search --class "Xfce4-terminal" | tail -n 1)
if [ -n "${WINDOW_ID}" ]; then
xdotool windowactivate "${WINDOW_ID}"
fi
elif command -v wmctrl > /dev/null && [ -n "${DISPLAY}" ]; then
wmctrl -x -a "Xfce4-terminal"
fi
}
# ------------------------------------------------------------------------------
# Main script execution
# ------------------------------------------------------------------------------
# Check if XFCE4 Terminal and Tmux are both running
if pidof "xfce4-terminal" > /dev/null 2>&1 && tmux info > /dev/null 2>&1; then
# If a directory was passed, open the new window there
if [ -n "${1}" ] && [ -d "${1}" ]; then
tmux new-window -c "${1}"
# If an executable was passed, run it in a new Tmux window
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
tmux new-window "$@"
# Default: open a new Tmux window in the current directory
else
tmux new-window
fi
# Focus the existing XFCE4 Terminal window
focus_window
else
# XFCE4 Terminal is not running; start it with Tmux
_TMUX_SESSION_NAME="$(get_session_name)"
# xfce4-terminal -e takes a single command string; session name is
# inner-quoted to protect spaces from the shell that parses the string
if [ -n "${1}" ] && [ -d "${1}" ]; then
cd "${1}" || exit 1
launch xfce4-terminal -T "Terminal" \
-e "tmux -u new-session -A -s '${_TMUX_SESSION_NAME}'"
# If an executable was passed, run it as the initial Tmux command
# Note: when -A attaches to an existing session, the command is ignored;
# the executable only runs when creating a new session
elif [ -n "${1}" ] && command -v "${1}" > /dev/null; then
launch xfce4-terminal -T "Terminal" \
-e "tmux -u new-session -A -s '${_TMUX_SESSION_NAME}' '${1}'"
# Default: start XFCE4 Terminal with Tmux
else
launch xfce4-terminal -T "Terminal" \
-e "tmux -u new-session -A -s '${_TMUX_SESSION_NAME}'"
fi
fi
I would have created scripts for Tilix or Terminator, but the split screen features are already handled by Tmux and are redundant.
If you wish to connect to a server that has Tmux already running, and you don't want to run Tmux on the server inside of Tmux locally, use the tmd command from Extreme Ultimate .bashrc function like this:
tmd ssh user@server
Or create an alias:
alias ssh1='tmd ssh user@server'
alias ssh2='tmd ssh -X -p 1234 user@server' # enable X11 forwarding and specify port
Just know that there is a bug where older versions of Tmux don't recognize Alacritty and give an error:
open terminal failed: missing or unsuitable terminal: alacritty
But you can fix this by specifying the TERM environment variable like this:
/usr/bin/alacritty -e ssh -t user@myserver 'export TERM=xterm-256color; bash'
So the alias should look like this:
alias myserver='/usr/bin/alacritty --title "MyServer (SSH)" -e ssh -t user@myserver "export TERM=xterm-256color; bash" >/dev/null 2>&1 & disown'
Just put your server information instead of "myserver". You can even specify a window title so you always know what it is.
I recommend turning on the auto-loading of Tmux for your TTY and SSH sessions. See the Configuration section in the Extreme Ultimate .bashrc readme file where you can set these options in your configuration or environment files:
# Automatically launch TMUX terminal multiplexer in local, TTY, or SSH sessions
# https://github.com/tmux/tmux/wiki
# Since TMUX is pre-installed on most systems, these must be enabled here
_TMUX_LOAD_TTY=true
_TMUX_LOAD_SSH=true
_TMUX_LOAD_LOCAL=false
# OPTIONAL: Set and force the default TMUX session name for this script and tm
# If not specified, an active TMUX session is used and attached to
# If no active TMUX session exists, the current logged in user name is used
#export _TMUX_LOAD_SESSION_NAME=""
#export _TMUX_LOAD_SESSION_NAME='I❤Linux'
#export _TMUX_LOAD_SESSION_NAME='ᗧ·●··ᗣ'
If you use drop down terminals like Yakuake, Tilda, or Guake, just set _TMUX_LOAD_LOCAL=true since we don't need to worry about multiple instances of the terminal since there is only one.