Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

State of a default command execution interface support on xdg platforms #1416

Open
2 of 23 tasks
ManuelSchneid3r opened this issue Jul 16, 2024 · 1 comment
Open
2 of 23 tasks

Comments

@ManuelSchneid3r
Copy link
Member

ManuelSchneid3r commented Jul 16, 2024

Running a command in a terminal from another app is a common usecase. Almost all terminals provide such a command execution interface (-e, -x, -- or such). Clients of the desktop entry spec can guess, but they cant know for sure since terminals break their CLI (no offense, I'd be happy if you all break it to go to --).

There is a freedesktop spec proposal that tries to standardize the way we configure a default terminal for command execution. It implicitly solves the above problem by requiring the dektop entry to provide this info.

To support it (X-)ExecArg has to be added to the desktop file (like this, the reference implementation respects both) and, as the proposal specifies currently, make sure there is TerminalEmulator in Categories. It has not yet been approved, therefore the X-.

The draft states that the default should be -e (because xterm once did). But I think we should not have a default at all because we have to support terminals not having such an interface and even if we do (which will break a lot of configs) we should use -- (terminal authors should as well), because it is not a usual argument but instead changes the way the remainder of the command line is to be interpreted. So please be explicit.

As the author of a launcher I'd be even happy with the implicit changes to the lacking (we have the Terminal key, do we?) desktop entry spec. There is also a related intentapp draft and a terminal intent. I dont have a favorite, but a pragmatic opinion. This will help making Linux a better user experience and a less annoying developer experience.

Thank you


@ManuelSchneid3r ManuelSchneid3r changed the title State of xdg-terminal-exec support State of a default command execution interface support on xdg platforms Aug 21, 2024
@ManuelSchneid3r
Copy link
Member Author

ManuelSchneid3r commented Nov 8, 2024

Recent terminal telemetry (desktop entries identifiying themselves as terminal)

{
  "Alacritty": "alacritty",
  "UXTerm-ebe624a8-ac9b-11ee-9c8f-ac2b6e50f0af": "uxterm",
  "XTerm-0605613c-ac9c-11ee-9c8f-ac2b6e50f0af": "xterm",
  "XTerm-febce6ac-ac9b-11ee-9c8f-ac2b6e50f0af": "xterm",
  "alacritty_alacritty": "env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/alacritty_alacritty.desktop /snap/bin/alacritty",
  "app.devsuite.Ptyxis": "/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=ptyxis app.devsuite.Ptyxis",
  "appimagekit_28f0999754b978c51d93845ef0dc0fc3-Tabby": "/home/…/.local/bin/tabby.AppImage --no-sandbox %U",
  "appimagekit_4fc8a6d2ac198e4ebb606b74570c0b54-Hyper": "/home/…/Applications/Hyper-3.4.1_266a2577ff8643bf74a5c4a86890cd45.AppImage --no-sandbox %U",
  "appimagekit_6cfd72c5c3abb1ff617752967ef0df42-Warp": "/home/…/Applications/Warp-x86_64_9053ec433a27aeb1f0fbd717c72b8065.AppImage %U",
  "appimagekit_70fd1eb20facb2e6190d4e7a3360251d-Tabby": "/home/…/.local/bin/tabby-1.0.210-linux-x64.AppImage --no-sandbox %U",
  "appimagekit_77252ceadfb595f9a8c657b8d5d2844f": "/home/…/Applications/appimaged-840-x86_64.AppImage wrap /home/…/Applications/WezTerm-20240203-110809-5046fc22-Ubuntu20.04.AppImage start --cwd .",
  "appimagekit_c9f5363d2e6a1316cc6283478b27221e": "/home/…/Applications/appimaged-840-x86_64.AppImage wrap /home/…/Applications/Warp-x86_64.AppImage %U",
  "appimagekit_e9c0addfd34276ca5c92880babd17276": "/home/…/Applications/appimaged-840-x86_64.AppImage wrap /home/…/Applications/waveterm-linux-x86_64-0.8.11.AppImage --enable-features UseOzonePlatform --ozone-platform-hint auto %U",
  "asbru-cm": "env GDK_BACKEND=x11 asbru-cm",
  "bl-terminal-emulator": "x-terminal-emulator",
  "byobu": "gnome-terminal --name=us.kirkland.terminals.byobu --class=us.kirkland.terminals.byobu -- byobu",
  "com.alacritty.Alacritty": "alacritty",
  "com.gexperts.Tilix": "tilix",
  "com.github.amezin.ddterm": "/home/…/.local/share/gnome-shell/extensions/[email protected]/bin/com.github.amezin.ddterm",
  "com.github.marhkb.Pods": "/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=pods com.github.marhkb.Pods",
  "com.raggesilver.BlackBox": "/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=blackbox com.raggesilver.BlackBox",
  "com.system76.CosmicTerm": "cosmic-term",
  "cool-retro-term": "cool-retro-term",
  "cool-retro-term_cool-retro-term": "env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/cool-retro-term_cool-retro-term.desktop /snap/bin/cool-retro-term %U",
  "debian-uxterm": "uxterm",
  "debian-xterm": "xterm",
  "deepin-terminal": "deepin-terminal %u",
  "dev.warp.Warp": "warp-terminal %U",
  "domterm": "domterm",
  "electerm": "/opt/electerm/electerm %U",
  "fish": "fish",
  "foot": "foot",
  "foot-server": "foot --server",
  "footclient": "footclient",
  "guake": "guake",
  "hyper": "/opt/Hyper/hyper %U",
  "io.elementary.terminal": "io.elementary.terminal",
  "ipython-3.10": "ipython-3.10",
  "ipython-3.11": "ipython-3.11",
  "jupyter-qtconsole-3.10": "jupyter-qtconsole-3.10",
  "jupyter-qtconsole-3.11": "jupyter-qtconsole-3.11",
  "kitty": "/home/…/.local/kitty.app/bin/kitty",
  "konsolesu": "konsole --profile Root Shell",
  "logout": "gnome-session-quit",
  "lxterminal": "lxterminal",
  "mate-terminal": "mate-terminal",
  "mlterm": "mlterm",
  "open_guake": "/home/fcharlaix/Nextcloud/Scripts/guake.fish",
  "org.codeberg.dnkl.foot": "foot",
  "org.codeberg.dnkl.foot-server": "foot --server",
  "org.codeberg.dnkl.footclient": "footclient",
  "org.contourterminal.Contour": "contour",
  "org.gnome.Console": "kgx",
  "org.gnome.Ptyxis": "ptyxis",
  "org.gnome.Ptyxis.Devel": "/usr/bin/flatpak run --branch=master --arch=x86_64 --command=ptyxis org.gnome.Ptyxis.Devel",
  "org.gnome.Terminal": "gnome-terminal",
  "org.kde.konsole": "/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=konsole org.kde.konsole",
  "org.kde.terminal": "konsole",
  "org.kde.yakuake": "/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=yakuake org.kde.yakuake",
  "org.wezfurlong.wezterm": "/usr/bin/flatpak run --branch=stable --arch=x86_64 --command=wezterm org.wezfurlong.wezterm start --cwd .",
  "parrot-root-terminal": "menuexecg /usr/bin/x-terminal-emulator",
  "qtdomterm": "qtdomterm",
  "qterminal": "qterminal",
  "qterminal-drop": "qterminal --drop",
  "reboot": "gnome-session-quit --reboot",
  "rooncommand": "qterminal --name Roon --title Roon --execute=/usr/local/Roon/bin/roon",
  "rxvt-unicode": "urxvt",
  "sakura": "sakura",
  "shutdown": "gnome-session-quit --power-off",
  "st": "st",
  "tabby": "/home/…/.local/bin/tabby.AppImage",
  "terminator": "terminator -m",
  "terminology": "terminology",
  "terminology_terminology": "env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/terminology_terminology.desktop /snap/bin/terminology",
  "terminus": "terminus",
  "termite": "termite",
  "termius": "termius %U",
  "tilda": "/usr/bin/tilda",
  "tilda-dbus": "/usr/bin/tilda --dbus",
  "urxvt": "urxvt",
  "urxvt-tabbed": "urxvt-tabbed",
  "urxvtc": "urxvtc",
  "uxterm": "uxterm",
  "waveterm": "/opt/Wave/waveterm --enable-features UseOzonePlatform --ozone-platform-hint auto --no-sandbox %U",
  "xfce4-terminal": "fterm.sh",
  "xfce4-terminal-dropdown": "xfce4-terminal --drop-down --hide-menubar",
  "xiterm+thai": "txiterm -ls -cursorColor yellow -cursorColorThai red -bg black -fg white",
  "xterm": "xterm",
  "zutty": "zutty"
}

What a mess. we need this standard.

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

No branches or pull requests

1 participant