Fix: Shutdown/Restart actions

Feat: Add USB Forwarding selection
This commit is contained in:
2026-09-07 11:32:41 +01:00
parent cc6d70baaf
commit 1436f4ecb8
6 changed files with 336 additions and 14 deletions

61
launcher/usbdev.py Normal file
View File

@@ -0,0 +1,61 @@
from dataclasses import dataclass
import pyudev
@dataclass
class USBDevice:
vendor_id: str | None
product_id: str | None
vendor: str | None
product: str | None
serial: str | None
@property
def id(self) -> str | None:
if self.vendor_id is None or self.product_id is None:
return None
return f"{self.vendor_id}:{self.product_id}"
@property
def name(self) -> str:
return f"{self.vendor} {self.product}"
class USBDevices:
def __init__(self):
self.context = pyudev.Context()
def enumerate(self) -> list[USBDevice]:
devices = []
for device in self.context.list_devices(
subsystem="usb",
DEVTYPE="usb_device"
):
usb_device = USBDevice(
vendor_id=device.get("ID_VENDOR_ID"),
product_id=device.get("ID_MODEL_ID"),
vendor=device.get("ID_VENDOR"),
product=device.get("ID_MODEL"),
serial=device.get("ID_SERIAL_SHORT"),
)
if self._is_valid_device(usb_device):
devices.append(usb_device)
return devices
@staticmethod
def _is_valid_device(device: USBDevice) -> bool:
# Exclude Linux USB root hubs
if device.vendor_id == "1d6b":
return False
return True
if __name__ == "__main__":
devices = USBDevices()
enumerated = devices.enumerate()
#print(devices.enumerate())
for device in enumerated:
print(device.id, device.name)