From fc4682d77eeadb5655b5d7083314ae342703ce65 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Mon, 7 Nov 2022 13:29:35 +0400 Subject: [PATCH] Get rid of TDESKTOP_LAUNCHER_BASENAME This key was mainly used to let flatpak and snap provide right desktop file name. Now, we can compute it from the environment in runtime for both flatpak and snap. There's no more need in this option. Desktop filename override by downstreams is highly discouraged. --- Telegram/CMakeLists.txt | 5 ++--- .../SourceFiles/platform/linux/specific_linux.cpp | 13 ++++++++++++- Telegram/cmake/telegram_options.cmake | 9 --------- ...metainfo.xml.in => telegramdesktop.metainfo.xml} | 1 - snap/snapcraft.yaml | 3 +-- 5 files changed, 15 insertions(+), 16 deletions(-) rename lib/xdg/{telegramdesktop.metainfo.xml.in => telegramdesktop.metainfo.xml} (98%) diff --git a/Telegram/CMakeLists.txt b/Telegram/CMakeLists.txt index d9bcc80f9..ac8b90c8b 100644 --- a/Telegram/CMakeLists.txt +++ b/Telegram/CMakeLists.txt @@ -1680,7 +1680,6 @@ endif() if (LINUX AND DESKTOP_APP_USE_PACKAGED) include(GNUInstallDirs) - configure_file("../lib/xdg/telegramdesktop.metainfo.xml.in" "${CMAKE_CURRENT_BINARY_DIR}/telegramdesktop.metainfo.xml" @ONLY) generate_appdata_changelog(Telegram "${CMAKE_SOURCE_DIR}/changelog.txt" "${CMAKE_CURRENT_BINARY_DIR}/telegramdesktop.metainfo.xml") install(TARGETS Telegram RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" BUNDLE DESTINATION "${CMAKE_INSTALL_BINDIR}") install(FILES "Resources/art/icon16.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/16x16/apps" RENAME "telegram.png") @@ -1690,6 +1689,6 @@ if (LINUX AND DESKTOP_APP_USE_PACKAGED) install(FILES "Resources/art/icon128.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/128x128/apps" RENAME "telegram.png") install(FILES "Resources/art/icon256.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/256x256/apps" RENAME "telegram.png") install(FILES "Resources/art/icon512.png" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/512x512/apps" RENAME "telegram.png") - install(FILES "../lib/xdg/telegramdesktop.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications" RENAME "${TDESKTOP_LAUNCHER_BASENAME}.desktop") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/telegramdesktop.metainfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo" RENAME "${TDESKTOP_LAUNCHER_BASENAME}.metainfo.xml") + install(FILES "../lib/xdg/telegramdesktop.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") + install(FILES "../lib/xdg/telegramdesktop.metainfo.xml" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/metainfo") endif() diff --git a/Telegram/SourceFiles/platform/linux/specific_linux.cpp b/Telegram/SourceFiles/platform/linux/specific_linux.cpp index 6a63aff42..15498ed09 100644 --- a/Telegram/SourceFiles/platform/linux/specific_linux.cpp +++ b/Telegram/SourceFiles/platform/linux/specific_linux.cpp @@ -403,6 +403,17 @@ namespace Platform { void start() { QGuiApplication::setDesktopFileName([] { + if (KSandbox::isFlatpak()) { + return qEnvironmentVariable("FLATPAK_ID") + qsl(".desktop"); + } + + if (KSandbox::isSnap()) { + return qEnvironmentVariable("SNAP_INSTANCE_NAME") + + '_' + + cExeName() + + qsl(".desktop"); + } + if (!Core::UpdaterDisabled() && !cExeName().isEmpty()) { const auto appimagePath = qsl("file://%1%2").arg( cExeDir(), @@ -419,7 +430,7 @@ void start() { AppName.utf16().replace(' ', '_')); } - return qsl(QT_STRINGIFY(TDESKTOP_LAUNCHER_BASENAME) ".desktop"); + return qsl("telegramdesktop.desktop"); }()); LOG(("Launcher filename: %1").arg(QGuiApplication::desktopFileName())); diff --git a/Telegram/cmake/telegram_options.cmake b/Telegram/cmake/telegram_options.cmake index 1c3c25431..ff6bd398a 100644 --- a/Telegram/cmake/telegram_options.cmake +++ b/Telegram/cmake/telegram_options.cmake @@ -8,10 +8,6 @@ option(TDESKTOP_API_TEST "Use test API credentials." OFF) set(TDESKTOP_API_ID "0" CACHE STRING "Provide 'api_id' for the Telegram API access.") set(TDESKTOP_API_HASH "" CACHE STRING "Provide 'api_hash' for the Telegram API access.") -if (LINUX) - set(TDESKTOP_LAUNCHER_BASENAME "" CACHE STRING "Desktop file base name.") -endif() - if (TDESKTOP_API_TEST) set(TDESKTOP_API_ID 17349) set(TDESKTOP_API_HASH 344583e45741c457fe1862106095a5eb) @@ -53,8 +49,3 @@ endif() if (DESKTOP_APP_SPECIAL_TARGET) target_compile_definitions(Telegram PRIVATE TDESKTOP_ALLOW_CLOSED_ALPHA) endif() - -if (NOT TDESKTOP_LAUNCHER_BASENAME) - set(TDESKTOP_LAUNCHER_BASENAME "telegramdesktop") -endif() -target_compile_definitions(Telegram PRIVATE TDESKTOP_LAUNCHER_BASENAME=${TDESKTOP_LAUNCHER_BASENAME}) diff --git a/lib/xdg/telegramdesktop.metainfo.xml.in b/lib/xdg/telegramdesktop.metainfo.xml similarity index 98% rename from lib/xdg/telegramdesktop.metainfo.xml.in rename to lib/xdg/telegramdesktop.metainfo.xml index d9ee7635c..40675e798 100644 --- a/lib/xdg/telegramdesktop.metainfo.xml.in +++ b/lib/xdg/telegramdesktop.metainfo.xml @@ -73,7 +73,6 @@ none moderate - @TDESKTOP_LAUNCHER_BASENAME@.desktop telegram-desktop diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index d8014d496..7934511c0 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -17,7 +17,7 @@ apps: telegram-desktop: command: bin/desktop-launch telegram-desktop common-id: org.telegram.desktop - desktop: usr/share/applications/telegram-desktop_telegram-desktop.desktop + desktop: usr/share/applications/telegramdesktop.desktop environment: # Tell glib to use portals on file associations handling. GTK_USE_PORTAL: 1 @@ -127,7 +127,6 @@ parts: - -DTDESKTOP_API_ID=611335 - -DTDESKTOP_API_HASH=d524b414d21f4d37f08684c1df41ac9c - -DDESKTOP_APP_USE_PACKAGED_LAZY=ON - - -DTDESKTOP_LAUNCHER_BASENAME=telegram-desktop_telegram-desktop override-pull: | craftctl default