fix: start apps in subprocess

This commit is contained in:
2026-05-04 20:06:52 +02:00
parent e7a1a2c0ee
commit 4c8b9020b0

View File

@@ -1,3 +1,7 @@
import re
import shlex
import subprocess
from fabric.utils.helpers import DesktopApp, get_desktop_applications from fabric.utils.helpers import DesktopApp, get_desktop_applications
from fabric.widgets.box import Box from fabric.widgets.box import Box
from fabric.widgets.image import Image from fabric.widgets.image import Image
@@ -9,6 +13,8 @@ from .base import FuzzyMenu
ICON_SIZE = 32 ICON_SIZE = 32
_FIELD_CODE_RE = re.compile(r"^%[fFuUickdDnNvm]$")
class AppProvider: class AppProvider:
def items(self) -> list[DesktopApp]: def items(self) -> list[DesktopApp]:
@@ -39,6 +45,14 @@ class AppProvider:
return Box(name="slot-box", orientation="h", spacing=10, children=children) return Box(name="slot-box", orientation="h", spacing=10, children=children)
def activate(self, item: DesktopApp) -> None: def activate(self, item: DesktopApp) -> None:
# Detach from sims's session so apps survive sims shutdown.
if item.command_line:
argv = [
t for t in shlex.split(item.command_line) if not _FIELD_CODE_RE.match(t)
]
if argv:
subprocess.Popen(argv, start_new_session=True)
return
item.launch() item.launch()