Skip to content

Add terminal multiplexer launcher#1687

Open
salah-walid wants to merge 12 commits intoAvengeMedia:masterfrom
salah-walid:master
Open

Add terminal multiplexer launcher#1687
salah-walid wants to merge 12 commits intoAvengeMedia:masterfrom
salah-walid:master

Conversation

@salah-walid
Copy link

@salah-walid salah-walid commented Feb 15, 2026

Add terminal multiplexer sessions listing launcher for tmux + zellij, possible to add other terminal multiplexers later

  • Add a terminal multiplexer session manager modal with support for tmux and zellij backends
  • New MuxService singleton that abstracts session listing, attaching, creating, killing, and renaming (only for tmux as zellij doesn't allow for rename outside of a session context issue)
  • New MuxModal with searchable session list, keyboard-driven navigation, and shortcuts bar
  • New InputModal to allow for renaming and inputing a new session name (can be used later for other purposes)
  • Settings tab under System > Multiplexers for configuring multiplexer type, custom commands, and session name filters (with regex support)

@bbedward
Copy link
Collaborator

I'm gonna take a look at this soon, wanted to wait for 1.4 release

}
}

MuxModal {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should wrap in a LazyLoader here, like other modals - allow it to unload from memory

spacing: Theme.spacingXS

Repeater {
model: muxModal.filteredSessions
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better to use ScriptModel here

}

if (sessionList.length !== root.sessions.length)
sessionsChanged()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't need to emit this signal here, it will be emited on the below assignment implicitly.

}

if (sessionList.length !== root.sessions.length)
sessionsChanged()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't need to emit this signal here, it will be emited on the below assignment implicitly.

continue
if (pattern.startsWith("/") && pattern.endsWith("/") && pattern.length > 2) {
try {
var re = new RegExp(pattern.slice(1, -1))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be more efficient to compute this one time and re-use it, when mux session list changes. But it's not that critical

import Quickshell.Io
import qs.Common

Singleton {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be nice to get some onCompleted check here, like other services do, to check isZellijAvailable, isTmuxAvailable in the case they arent available in the PATH

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants