Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 14 additions & 7 deletions .github/workflows/conformance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ name: Conformance

on:
push:
branches: [main]
branches: [main, v4.5]
pull_request:
branches: [main]
types: [opened, ready_for_review, reopened, synchronize]
branches: [main, v4.5]

jobs:
plugin-test:
Expand All @@ -19,20 +20,26 @@ jobs:
- uses: actions/checkout@v5
with:
repository: fruwehq/eve
ref: ${{ (github.base_ref == 'v4.5' || github.head_ref == 'v4.5' || github.ref_name == 'v4.5') && 'v4.5' || 'main' }}
path: eve

- uses: actions/setup-python@v6
with:
python-version: "3.12"

- run: pip install jsonschema pyyaml
- run: pip install ./eve pytest==9.0.3

- name: Validate manifest environment contracts
run: python tests/test-manifest-env-contract

- name: Run plugin-test against every package
run: |
set -e
for manifest in */eve-plugin.yaml; do
plugin="$(dirname "$manifest")"
echo "::group::plugin-test $plugin"
eve/scripts/plugin-test "$plugin"
git ls-files '*eve-plugin.yaml' | while IFS= read -r manifest; do
echo "::group::plugin-test $manifest"
eve/scripts/plugin-test "$manifest"
echo "::endgroup::"
done

- name: Launcher parity tests
run: python -m pytest -q tests
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
*.pyc
.pytest_cache/
__pycache__/
5 changes: 5 additions & 0 deletions bundles/desktop-gnome-headless/eve-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
api_version: eve.plugin/v1
kind: bundle
id: desktop-gnome-headless
display_name: GNOME Desktop (Headless)
members: [gnome-desktop-headless, rdp]
5 changes: 5 additions & 0 deletions bundles/desktop-gnome-mac/eve-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
api_version: eve.plugin/v1
kind: bundle
id: desktop-gnome-mac
display_name: GNOME Desktop (macOS themed)
members: [gnome-desktop, macos-desktop-theme, rdp]
5 changes: 5 additions & 0 deletions bundles/desktop-gnome/eve-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
api_version: eve.plugin/v1
kind: bundle
id: desktop-gnome
display_name: GNOME Desktop
members: [gnome-desktop, rdp]
5 changes: 5 additions & 0 deletions bundles/desktop-kde-headless/eve-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
api_version: eve.plugin/v1
kind: bundle
id: desktop-kde-headless
display_name: KDE Plasma Desktop (Headless)
members: [kde-desktop-headless, rdp]
5 changes: 5 additions & 0 deletions bundles/desktop-kde/eve-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
api_version: eve.plugin/v1
kind: bundle
id: desktop-kde
display_name: KDE Plasma Desktop
members: [kde-desktop, rdp]
5 changes: 5 additions & 0 deletions bundles/desktop-streaming/eve-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
api_version: eve.plugin/v1
kind: bundle
id: desktop-streaming
display_name: Desktop Streaming
members: [sunshine, rustdesk, vnc, rdp, waypipe]
5 changes: 5 additions & 0 deletions bundles/desktop-xfce-headless/eve-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
api_version: eve.plugin/v1
kind: bundle
id: desktop-xfce-headless
display_name: XFCE Desktop (Headless)
members: [xfce-desktop-headless, rdp]
5 changes: 5 additions & 0 deletions bundles/desktop-xfce/eve-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
api_version: eve.plugin/v1
kind: bundle
id: desktop-xfce
display_name: XFCE Desktop
members: [xfce-desktop, rdp]
5 changes: 5 additions & 0 deletions bundles/remote-xpra/eve-plugin.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
api_version: eve.plugin/v1
kind: bundle
id: remote-xpra
display_name: Remote Xpra
members: [xpra]
57 changes: 39 additions & 18 deletions gnome-desktop-headless/eve-plugin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,47 @@ kind: package
id: gnome-desktop-headless
display_name: GNOME Desktop Headless
commands:
install: {exec: scripts/package-plugin, args: [gnome-desktop-headless, install]}
status: {exec: scripts/package-plugin, args: [gnome-desktop-headless, status]}
down: {exec: scripts/package-plugin, args: [gnome-desktop-headless, down]}
supports: {os_families: [ubuntu]}
conflicts_with: [xfce-desktop, xfce-desktop-headless, gnome-desktop, kde-desktop, kde-desktop-headless]
install:
exec: scripts/package-plugin
args:
- gnome-desktop-headless
- install
status:
exec: scripts/package-plugin
args:
- gnome-desktop-headless
- status
down:
exec: scripts/package-plugin
args:
- gnome-desktop-headless
- down
supports:
os_families:
- ubuntu
conflicts_with:
- xfce-desktop
- xfce-desktop-headless
- gnome-desktop
- kde-desktop
- kde-desktop-headless
compatibility:
- platform: ubuntu
desktop: GNOME Headless
session: Wayland
status: supported
notes: Installs GNOME with GDM autologin and persistent Wayland virtual monitor setup.
down: {destructive: true}
env: [VIRTUAL_MONITOR_WIDTH, VIRTUAL_MONITOR_HEIGHT]
- platform: ubuntu
desktop: GNOME Headless
session: Wayland
status: supported
notes: Installs GNOME with GDM autologin and persistent Wayland virtual monitor
setup.
down:
destructive: true
env: []
desktop:
name: "GNOME Headless"
session: "Wayland"
name: GNOME Headless
session: Wayland
headless: true
install:
ubuntu:
steps: [base.sh, timezone.sh, provision/ubuntu/gnome-desktop-headless.sh]
bundles:
- id: desktop-gnome-headless
includes: [gnome-desktop-headless, rdp]
steps:
- base.sh
- timezone.sh
- provision/ubuntu/gnome-desktop-headless.sh
60 changes: 39 additions & 21 deletions gnome-desktop/eve-plugin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,47 @@ kind: package
id: gnome-desktop
display_name: GNOME Desktop
commands:
install: {exec: scripts/package-plugin, args: [gnome-desktop, install]}
status: {exec: scripts/package-plugin, args: [gnome-desktop, status]}
down: {exec: scripts/package-plugin, args: [gnome-desktop, down]}
supports: {os_families: [ubuntu]}
conflicts_with: [xfce-desktop, xfce-desktop-headless, gnome-desktop-headless, kde-desktop, kde-desktop-headless]
install:
exec: scripts/package-plugin
args:
- gnome-desktop
- install
status:
exec: scripts/package-plugin
args:
- gnome-desktop
- status
down:
exec: scripts/package-plugin
args:
- gnome-desktop
- down
supports:
os_families:
- ubuntu
conflicts_with:
- xfce-desktop
- xfce-desktop-headless
- gnome-desktop-headless
- kde-desktop
- kde-desktop-headless
compatibility:
- platform: ubuntu
desktop: GNOME
session: Wayland
status: supported
notes: Installs GNOME with GDM autologin for the local graphical session.
down: {destructive: true}
- platform: ubuntu
desktop: GNOME
session: Wayland
status: supported
notes: Installs GNOME with GDM autologin for the local graphical session.
down:
destructive: true
env: []
provides: [session:wayland]
provides:
- session:wayland
desktop:
name: "GNOME"
session: "Wayland"
name: GNOME
session: Wayland
install:
ubuntu:
steps: [base.sh, timezone.sh, provision/ubuntu/gnome-desktop.sh]
bundles:
- id: desktop-gnome
includes: [gnome-desktop, rdp]

- id: desktop-gnome-mac
includes: [gnome-desktop, macos-desktop-theme, rdp]
steps:
- base.sh
- timezone.sh
- provision/ubuntu/gnome-desktop.sh
57 changes: 40 additions & 17 deletions kde-desktop-headless/eve-plugin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,49 @@ kind: package
id: kde-desktop-headless
display_name: KDE Plasma Desktop Headless
commands:
install: {exec: scripts/package-plugin, args: [kde-desktop-headless, install]}
status: {exec: scripts/package-plugin, args: [kde-desktop-headless, status]}
down: {exec: scripts/package-plugin, args: [kde-desktop-headless, down]}
supports: {os_families: [ubuntu], arches: [amd64]}
conflicts_with: [xfce-desktop, xfce-desktop-headless, gnome-desktop, gnome-desktop-headless, kde-desktop]
install:
exec: scripts/package-plugin
args:
- kde-desktop-headless
- install
status:
exec: scripts/package-plugin
args:
- kde-desktop-headless
- status
down:
exec: scripts/package-plugin
args:
- kde-desktop-headless
- down
supports:
os_families:
- ubuntu
arches:
- amd64
conflicts_with:
- xfce-desktop
- xfce-desktop-headless
- gnome-desktop
- gnome-desktop-headless
- kde-desktop
compatibility:
- platform: ubuntu
desktop: KDE Plasma Headless
session: Wayland
status: supported
notes: Installs KDE Plasma with SDDM autologin and disables lock/power management for unattended krdp.
down: {destructive: true}
- platform: ubuntu
desktop: KDE Plasma Headless
session: Wayland
status: supported
notes: Installs KDE Plasma with SDDM autologin and disables lock/power management
for unattended krdp.
down:
destructive: true
env: []
desktop:
name: "KDE Plasma Headless"
session: "Wayland"
name: KDE Plasma Headless
session: Wayland
headless: true
install:
ubuntu:
steps: [base.sh, timezone.sh, provision/ubuntu/kde-desktop-headless.sh]
bundles:
- id: desktop-kde-headless
includes: [kde-desktop-headless, rdp]
steps:
- base.sh
- timezone.sh
- provision/ubuntu/kde-desktop-headless.sh
56 changes: 39 additions & 17 deletions kde-desktop/eve-plugin.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,47 @@ kind: package
id: kde-desktop
display_name: KDE Plasma Desktop
commands:
install: {exec: scripts/package-plugin, args: [kde-desktop, install]}
status: {exec: scripts/package-plugin, args: [kde-desktop, status]}
down: {exec: scripts/package-plugin, args: [kde-desktop, down]}
supports: {os_families: [ubuntu], arches: [amd64]}
conflicts_with: [xfce-desktop, xfce-desktop-headless, gnome-desktop, gnome-desktop-headless, kde-desktop-headless]
install:
exec: scripts/package-plugin
args:
- kde-desktop
- install
status:
exec: scripts/package-plugin
args:
- kde-desktop
- status
down:
exec: scripts/package-plugin
args:
- kde-desktop
- down
supports:
os_families:
- ubuntu
arches:
- amd64
conflicts_with:
- xfce-desktop
- xfce-desktop-headless
- gnome-desktop
- gnome-desktop-headless
- kde-desktop-headless
compatibility:
- platform: ubuntu
desktop: KDE Plasma
session: Wayland
status: supported
notes: Installs KDE Plasma with SDDM autologin; RDP uses krdp.
down: {destructive: true}
- platform: ubuntu
desktop: KDE Plasma
session: Wayland
status: supported
notes: Installs KDE Plasma with SDDM autologin; RDP uses krdp.
down:
destructive: true
env: []
desktop:
name: "KDE Plasma"
session: "Wayland"
name: KDE Plasma
session: Wayland
install:
ubuntu:
steps: [base.sh, timezone.sh, provision/ubuntu/kde-desktop.sh]
bundles:
- id: desktop-kde
includes: [kde-desktop, rdp]
steps:
- base.sh
- timezone.sh
- provision/ubuntu/kde-desktop.sh
2 changes: 2 additions & 0 deletions macos-desktop-theme/commands/ubuntu/down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/usr/bin/env sh
set -eu

# Variables in the command payload expand on the guest.
# shellcheck disable=SC2016
exec ./scripts/package-down-command macos-desktop-theme 'sudo rm -f "$EVE_HUMAN_HOME/.config/autostart/eve-gnome-macos-theme.desktop" "$EVE_HUMAN_HOME/.local/bin/eve-gnome-macos-theme"; sudo DEBIAN_FRONTEND=noninteractive apt-get remove -y gnome-shell-extension-ubuntu-dock papirus-icon-theme || true'
2 changes: 2 additions & 0 deletions macos-desktop-theme/commands/ubuntu/status
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/usr/bin/env sh
set -eu

# Variables in the command payload expand on the guest.
# shellcheck disable=SC2016
exec ./scripts/package-status-command macos-desktop-theme 'if [ -f "$HOME/.local/bin/eve-gnome-macos-theme" ]; then echo installed; else echo missing; fi'
2 changes: 1 addition & 1 deletion nomachine/commands/nomachine-info
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ def main() -> int:
ip = os.environ.get("EVE_REMOTE_IP", "(no IP)")
user = os.environ.get("VM_USER_NAME", "") or "the instance user"
print(f"Host: {ip}")
print(f"Port: 4000 (NX)")
print("Port: 4000 (NX)")
print(f"User: {user}")
print("Auth: the instance user's system password")
return 0
Expand Down
Binary file removed rdp/commands/__pycache__/_client.cpython-314.pyc
Binary file not shown.
2 changes: 2 additions & 0 deletions rdp/commands/ubuntu/status
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
#!/usr/bin/env sh
set -eu

# Variables in the command payload expand on the guest.
# shellcheck disable=SC2016
exec ./scripts/package-status-command rdp 'if systemctl is-active --quiet gnome-remote-desktop.service 2>/dev/null || command -v xrdp >/dev/null 2>&1 || dpkg-query -W -f="${Status}" xrdp 2>/dev/null | grep -q "install ok installed"; then echo installed; else echo missing; fi'
Loading
Loading