mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-12-28 17:14:39 +00:00
This removes `launched-from` entirely and moves our `gtk-single-instance` detection logic to assume true unless we detect CLI instead of assume false unless we detect desktop/dbus/systemd. The "assume true" scenario for single instance is desirable because detecting a CLI instance is much more reliable. Removing `launched-from` fixes an issue where we had a difficult-to-understand relationship between `launched-from`, `gtk-single-instance`, and `initial-window`. Now, only `gtk-single-instance` has some hueristic logic. And `initial-window` ALWAYS sends a GTK activation signal regardless of single instance or not. As a result, we need to be explicit in our systemd, dbus, desktop files about what we want Ghostty to do, but everything works as you'd mostly expect. Now, if you put plain old `ghostty` in your terminal, you get a new Ghostty instance. If you put it anywhere else, you get a GTK single instance activation call (either creates a first instance or opens a new window in the existing instance). Works for launchers and so on.
27 lines
632 B
Desktop File
27 lines
632 B
Desktop File
[Desktop Entry]
|
|
Version=1.0
|
|
Name=@NAME@
|
|
Type=Application
|
|
Comment=A terminal emulator
|
|
TryExec=@GHOSTTY@
|
|
Exec=@GHOSTTY@ --gtk-single-instance=true
|
|
Icon=com.mitchellh.ghostty
|
|
Categories=System;TerminalEmulator;
|
|
Keywords=terminal;tty;pty;
|
|
StartupNotify=true
|
|
StartupWMClass=@APPID@
|
|
Terminal=false
|
|
Actions=new-window;
|
|
X-GNOME-UsesNotifications=true
|
|
X-TerminalArgExec=-e
|
|
X-TerminalArgTitle=--title=
|
|
X-TerminalArgAppId=--class=
|
|
X-TerminalArgDir=--working-directory=
|
|
X-TerminalArgHold=--wait-after-command
|
|
DBusActivatable=true
|
|
X-KDE-Shortcuts=Ctrl+Alt+T
|
|
|
|
[Desktop Action new-window]
|
|
Name=New Window
|
|
Exec=@GHOSTTY@ --gtk-single-instance=true
|