From 52b9783fea954f5378f072b3da7630bed426cd20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Sat, 9 May 2026 02:52:47 -0400 Subject: [PATCH] Add Linux desktop metadata --- .github/workflows/ci.yml | 3 ++ .../linux/com.elydora.ely-browser.desktop | 10 ++++ scripts/verify_linux_desktop_metadata.sh | 48 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 packaging/linux/com.elydora.ely-browser.desktop create mode 100755 scripts/verify_linux_desktop_metadata.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4214284..eb6f030 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,6 +50,9 @@ jobs: - name: Verify macOS bundle metadata run: scripts/verify_macos_bundle_metadata.sh + - name: Verify Linux desktop metadata + run: scripts/verify_linux_desktop_metadata.sh + - name: Build macOS app bundle run: scripts/create_macos_app_bundle.sh diff --git a/packaging/linux/com.elydora.ely-browser.desktop b/packaging/linux/com.elydora.ely-browser.desktop new file mode 100644 index 0000000..3d92cb3 --- /dev/null +++ b/packaging/linux/com.elydora.ely-browser.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Name=ELY Browser +GenericName=Web Browser +Comment=ELY Browser by Elydora +Exec=ely_app %u +Icon=com.elydora.ely-browser +Terminal=false +Categories=Network;WebBrowser; +MimeType=x-scheme-handler/ely; diff --git a/scripts/verify_linux_desktop_metadata.sh b/scripts/verify_linux_desktop_metadata.sh new file mode 100755 index 0000000..446a7bb --- /dev/null +++ b/scripts/verify_linux_desktop_metadata.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +set -euo pipefail + +desktop_path="${1:-packaging/linux/com.elydora.ely-browser.desktop}" +expected_file_name="com.elydora.ely-browser.desktop" + +if [[ ! -f "${desktop_path}" ]]; then + echo "${desktop_path}: desktop entry file is missing" + exit 1 +fi + +if [[ "$(basename "${desktop_path}")" != "${expected_file_name}" ]]; then + echo "${desktop_path}: desktop entry filename expected '${expected_file_name}'" + exit 1 +fi + +if ! grep -qx '\[Desktop Entry\]' "${desktop_path}"; then + echo "${desktop_path}: [Desktop Entry] group is missing" + exit 1 +fi + +desktop_value() { + local key="$1" + awk -F= -v key="${key}" '$1 == key { print substr($0, length(key) + 2); exit }' "${desktop_path}" +} + +assert_value() { + local key="$1" + local expected="$2" + local actual + actual="$(desktop_value "${key}")" + if [[ "${actual}" != "${expected}" ]]; then + echo "${desktop_path}: ${key} expected '${expected}', got '${actual}'" + exit 1 + fi +} + +assert_value "Type" "Application" +assert_value "Name" "ELY Browser" +assert_value "GenericName" "Web Browser" +assert_value "Comment" "ELY Browser by Elydora" +assert_value "Exec" "ely_app %u" +assert_value "Icon" "com.elydora.ely-browser" +assert_value "Terminal" "false" +assert_value "Categories" "Network;WebBrowser;" +assert_value "MimeType" "x-scheme-handler/ely;" + +echo "${desktop_path}: Linux desktop metadata ok"