Commit Graph

299 Commits

Author SHA1 Message Date
Ilya Fedin 4becfe409a Add Haiku autostart & system settings support 2021-02-22 23:39:00 +04:00
Ilya Fedin 14b09e88d6 Add DESKTOP_APP_DISABLE_X11_INTEGRATION 2021-02-22 23:39:00 +04:00
Ilya Fedin 53fd3fce84 Allow initializing gtk integration before QApplication 2021-02-22 23:38:09 +04:00
Ilya Fedin bbf49b024a Fix implicit conversions from QByteArray 2021-02-19 14:15:09 +04:00
Ilya Fedin 4fde7852b1 Use qEnvironmentVariable where appropriate 2021-02-19 14:15:09 +04:00
Ilya Fedin 513054a307 Get rid of unneeded material wayland decorations 2021-02-19 14:15:09 +04:00
Ilya Fedin 15d18077b8 Use new methods from lib_ui 2021-02-19 14:15:09 +04:00
Ilya Fedin f1ee5b5704 Expose gtk integration to lib_base 2021-02-19 12:41:09 +04:00
Ilya Fedin 7977331d8b Read DESKTOPINTEGRATION variable instead of TDESKTOP_DISABLE_DESKTOP_FILE_GENERATION
Since it's widely used (by AppImages, for instance)
2021-02-17 11:12:06 +04:00
Ilya Fedin 36acf60f7e Add XDG Desktop Portal based file dialog implementation from Qt
This allows to use portal dialogs more flexibly (e.g. fallback mechanism)
This also allows to have any changes we want for portal dialogs without patchig Qt

No more need to override QT_QPA_PLATFORM to use portal dialogs
2021-02-05 20:23:00 +04:00
Ilya Fedin 160cd975ce Another attempt to implement shadows on Wayland
Works only with patched Qt
2021-01-28 22:19:34 +04:00
Ilya Fedin 89ccc95023 Fix early return from Platform::ThirdParty::start on Linux 2021-01-23 16:14:22 +04:00
Ilya Fedin ea9813825d Move EscapeShell to specific_linux 2021-01-22 17:22:37 +04:00
Ilya Fedin 36b6f70613 Get rid of unneeded includes in specific_linux 2021-01-22 17:22:37 +04:00
Ilya Fedin ada22ee6cc Split GTK integration into a singleton 2021-01-22 17:22:37 +04:00
Ilya Fedin 690c5df87c Format dbus errors logging 2021-01-22 17:02:50 +04:00
Ilya Fedin bad888496c Decrease some indentation in linux platform code 2021-01-22 17:02:50 +04:00
Ilya Fedin e8edbb16ae Make notification manager creation async 2021-01-22 17:02:50 +04:00
Ilya Fedin 49736cd879 Recreate notification manager on notification service owner change 2021-01-22 17:02:50 +04:00
Ilya Fedin 99af2a7058 Check for xdg-decoration protocol support on Wayland 2021-01-04 17:08:49 +04:00
Ilya Fedin b9acea9cef Move GSDMediaKeys initialization to SetWatchingMediaKeys 2021-01-04 11:55:10 +04:00
Ilya Fedin f66cfb5684 Use new IsSupportedByWM XCB API from lib_base 2020-12-29 12:29:11 +04:00
Ilya Fedin e99558abeb Remove linux LastUserInputTime dependency since it's only in lib_base 2020-12-24 07:47:13 +04:00
John Preston df420e4ccf Revert "Use gtk not only to get image from clipboard, but also to set"
This reverts commit f88c132c96.

Fixes #9885.
2020-12-11 12:00:52 +04:00
Ilya Fedin cffb05e3c9 Detect more dark themes on Linux 2020-12-08 21:19:28 +03:00
Ilya Fedin f88c132c96 Use gtk not only to get image from clipboard, but also to set 2020-12-08 21:18:49 +03:00
mid-kid 49480001f7 Move IsWayland() checks into WaylandIntegration 2020-11-17 16:23:54 +03:00
mid-kid 96b2e26f42 Build wayland support optionally 2020-11-17 16:23:54 +03:00
Ilya Fedin e4b9900a06 Construct WindowControlsLayout without variable 2020-11-16 12:35:01 +03:00
Ilya Fedin c8ce5dfa8b Fix escaping in scheme creation on Linux and set -workdir 2020-11-16 12:33:22 +03:00
Ilya Fedin e64f6f7266 Since changing the ibus portal check, it is not compatible with snap anymore 2020-11-12 18:12:17 +03:00
Ilya Fedin 21133abe13 Fix 30s hang in case ibus portal couldn't be started 2020-11-12 15:51:00 +03:00
Ilya Fedin 3a45957ceb Set parent window ID for portal autostart dialog 2020-11-09 11:19:03 +03:00
Ilya Fedin 876c57dcfb Fix getting FileChooser portal version 2020-11-09 11:19:03 +03:00
Ilya Fedin f980cade39 Use static QFile methods in linux platform code 2020-11-09 11:19:03 +03:00
Ilya Fedin 3d18d28dc5 Use kIconName on icon creating 2020-11-09 11:19:03 +03:00
Ilya Fedin e04598835b Move _monitorRect and _monitorLastGot to psDesktopRect method 2020-11-09 11:19:03 +03:00
John Preston 74d2313784 Build Linux version with Qt 5.15.1 in CentOS 7 docker. 2020-11-06 11:21:34 +03:00
Ilya Fedin f7dcf6ce81 Hide IsXDGDesktopPortalPresent in a private namespace 2020-11-06 11:20:47 +03:00
Ilya Fedin 6c023084d9 Move the excluding portal checks to UseXDGDesktopPortal 2020-11-06 11:20:47 +03:00
Ilya Fedin f521275acc Fix AreQtPluginsBundled to include static binary 2020-11-06 09:57:47 +03:00
Ilya Fedin 2b39da483b Fix IBus portal service name 2020-11-05 14:38:41 +03:00
Ilya Fedin d9711f8ebd QDir::tempPath already has fallback to /tmp 2020-11-05 14:38:25 +03:00
Ilya Fedin 204a08df14 Add a cheat code to install launcher on Linux 2020-11-02 10:17:24 +03:00
Ilya Fedin 03c2fc2c48 Use ibus portal whenever it present 2020-11-01 18:28:52 +03:00
Ilya Fedin d73d3cd43d Implement ShowWindowMenu for XCB 2020-10-30 11:29:02 +03:00
Ilya Fedin 8f5b136003 Implement possibility to hide taskbar icon on Linux 2020-10-30 11:27:42 +03:00
Ilya Fedin a38b4f039a Use some methods from lib_base 2020-10-30 10:52:49 +03:00
Ilya Fedin 152f1ef17f Use Core::UpdaterDisabled where a check is for installed or not 2020-10-28 09:57:10 +03:00
Ilya Fedin f749647567 Check Qt version in runtime in CanOpenDirectoryWithPortal
It is not guaranteed that app is running with the same Qt version that was compiled
2020-10-26 14:58:06 +03:00
Ilya Fedin 77e1b9f156 Change socket path length condition to >=
Looks like 108 is the length including \0, therefore actual limit is 107
2020-10-24 09:10:16 +03:00
Ilya Fedin ca67ac913f Check for KDE portal backend when using portals on KDE 2020-10-23 11:28:18 +03:00
Ilya Fedin 0179a2ca10 Rename InstallMainDesktopFile to InstallLauncher 2020-10-23 11:25:18 +03:00
Ilya Fedin f58874572d Check actual socket path length rather than InSnap/InFlatpak 2020-10-23 11:25:18 +03:00
Ilya Fedin 2aa0b674cd Use new XCB methods from lib_base 2020-10-16 16:12:38 +03:00
Ilya Fedin 093fcc3821 Subscribe to StatusNotifierHostRegistered signal 2020-10-07 13:06:06 +03:00
Ilya Fedin 6f89598a7b Clean old attempts to register url scheme on scheme registration 2020-10-07 12:55:34 +03:00
Ilya Fedin 638ea3111f Fallback to D-Bus methods if XCB-based LastUserInputTime failed 2020-10-05 10:10:40 +03:00
Ilya Fedin a0af748fc5 Update SNI state even if tray is deactivated 2020-10-02 19:19:16 +03:00
John Preston f3a2460a54 Version 2.4.1: Fix build for Linux. 2020-10-01 20:06:00 +03:00
Ilya Fedin 1d24d29afa Little cleanup for Linux platform code & build
CheckCXXSourceCompiles is not needed anymore

Material wayland decorations could be checked just with IsQtPluginsBundled
2020-10-01 16:34:01 +03:00
Ilya Fedin 0536a479f9 Use startSystemMove/startSystemResize instead of platform code on Wayland with Qt 5.15 2020-10-01 16:30:53 +03:00
Ilya Fedin 7fef7e6315 Don't add shadow on Wayland
It was implemented like a hack and worked like a hack... Looks like it is better to wait until Qt give a way to create shadows.
2020-10-01 16:30:53 +03:00
Ilya Fedin 10012d6b31 Handle launcher basename compile-time for snap
Just like for flatpak
2020-10-01 10:54:42 +03:00
Ilya Fedin 6805085bbc Use unique desktop file name for static binary 2020-09-29 18:54:01 +03:00
Ilya Fedin 70c993774a Get rid of redudant cmake options 2020-09-29 18:24:16 +03:00
Ilya Fedin 242ced4022 Write icon theme names to debug log 2020-09-20 16:51:01 +03:00
Ilya Fedin 6635d03818 Check if xcb-screensaver extension present 2020-08-30 17:00:43 +04:00
Ilya Fedin c77f1bf082 Add UnsetWindowExtents method 2020-08-30 17:00:43 +04:00
Ilya Fedin ea8e256a23 Revert "Revert "Add main window shadow for Linux""
This reverts commit b7f5cfe083.
2020-08-30 17:00:43 +04:00
Ilya Fedin 2f2de84b43 Fix d-bus type in MutterDBusLastUserInputTime 2020-08-30 16:57:51 +04:00
John Preston b7f5cfe083 Revert "Add main window shadow for Linux"
This reverts commit d02092f09e.

Conflicts:
	Telegram/SourceFiles/mainwindow.cpp
	Telegram/SourceFiles/platform/linux/specific_linux.cpp
	Telegram/SourceFiles/window/main_window.cpp
2020-08-23 16:38:49 +04:00
Ilya Fedin 6dfefa3f21 g_message is a more appropriate log level for some messages 2020-08-18 08:16:17 +04:00
Ilya Fedin eaae7b1d03 Decrease indentation in XCBLastUserInputTime 2020-08-18 08:16:17 +04:00
Ilya Fedin d02092f09e Add main window shadow for Linux 2020-08-18 08:16:17 +04:00
Ilya Fedin 1dcbb103a8 Move gtk clibpboard to linux_libs 2020-08-15 17:43:28 +04:00
Ilya Fedin 47673bba50 Move cExeName checks 2020-08-15 17:43:28 +04:00
Ilya Fedin 580e6baee6 Get rid of redudant fontconfig hack 2020-08-15 17:43:28 +04:00
Ilya Fedin f56af090e0 Use GAppInfo instead of xdg-mime
This makes registering custom scheme distribution-compatible
2020-08-15 17:43:28 +04:00
Ilya Fedin 95c0c400c7 Use QProcess instead of system()
Use g_get_home_dir since it already uses both $HOME and passwd
2020-08-15 17:43:28 +04:00
Ilya Fedin 170ec16f39 Remove outdated snap autostart hack 2020-08-15 17:43:28 +04:00
Ilya Fedin 786bedf271 Disable Qt's integration mechanism on GTK-based DE to avoid early GTK loading
This also removes TDESKTOP_USE_GTK_FILE_DIALOG since it doesn't forces GTK dialog for anyone and there is no reason to leave it

TDESKTOP_DISABLE_GTK_INTEGRATION can be also tested via action now
2020-08-15 17:43:28 +04:00
Ilya Fedin 1de1747c38 Fix length of some lines in specific_linux and main_window_linux 2020-08-15 17:43:28 +04:00
Ilya Fedin 5dad293335 Add warnings about some build options and environment variables 2020-08-15 17:43:28 +04:00
Ilya Fedin dc9d0aae54 Add support for showing window menu on Wayland 2020-08-11 10:56:29 +04:00
Ilya Fedin 252bdd2353 TDESKTOP_DISABLE_DBUS_INTEGRATION -> DESKTOP_APP_DISABLE_DBUS_INTEGRATION 2020-08-11 10:55:50 +04:00
Ilya Fedin 2b89700f66 libwayland headers are needed only with Qt < 5.13 2020-07-23 14:29:56 +04:00
Ilya Fedin 841908fe31 Read decoration layout property from gtk 2020-07-23 14:29:56 +04:00
John Preston 8c4e8212cd Add 'respect system dark mode' checkbox. 2020-07-22 17:18:17 +04:00
Ilya Fedin 47a237c924 Implement system-based dark mode for Windows and Linux 2020-07-22 10:32:56 +04:00
Ilya Fedin a6fe5c08ad Add a method to get flatpak ID 2020-07-13 06:53:45 +04:00
Ilya Fedin 256e976167 Hide ProcessNameByPID and RealExecutablePath into a private namespace 2020-07-13 06:53:45 +04:00
Ilya Fedin b587328fed Add support for custom titlebar on Linux with Qt < 5.15 2020-07-12 23:19:05 +04:00
Ilya Fedin 2fd5771c3d Add support for org.gnome.Mutter.IdleMonitor 2020-07-12 22:19:44 +04:00
Ilya Fedin 59b521d666 Implement xcb-based LastUserInputTime method 2020-07-12 22:19:44 +04:00
Ilya Fedin dd76d54aeb Fix build with TDESKTOP_DISABLE_GTK_INTEGRATION 2020-06-30 22:13:36 +04:00
Ilya Fedin 4922768086 Don't use QLibrary for glib 2020-06-29 16:27:45 +04:00
Ilya Fedin 806f2e0b50 Check for all needed gtk functions for gtk clipboard 2020-06-29 16:27:45 +04:00
23rd e318a7d65f Simplified ranges::find_if with ranges::any_of and ranges::none_of. 2020-06-23 21:53:43 +04:00
Ilya Fedin 9a65481e9d Unset QT_STYLE_OVERRIDE instead of forcing Fusion
To don't break styling on KDE
2020-06-23 21:23:47 +04:00
Ilya Fedin 3a91003eea Use gtk clipboard when available to avoid https://bugreports.qt.io/browse/QTBUG-56595 2020-06-17 20:34:47 +04:00
Ilya Fedin e009ac026d Update snap to core20 2020-06-09 19:01:35 +04:00
Ilya Fedin ab13d9bdaf Skip empty parts in QT_QPA_PLATFORMTHEME 2020-06-03 11:31:34 +04:00
Ilya Fedin 0165e31ca7 Never use custom code for portal detecting in flatpak 2020-06-03 11:31:34 +04:00
Ilya Fedin c776f81dc7 Add support for choosing directories via xdg-desktop-portal 2020-06-03 11:31:34 +04:00
Ilya Fedin e098922a4b Add Platform::AutostartSupported 2020-06-01 18:25:21 +04:00
Ilya Fedin 10b169f9f6 Make not supported errors static 2020-06-01 18:19:34 +04:00
Ilya Fedin c83b8d4043 Fix naming of static variables 2020-06-01 18:19:34 +04:00
Ilya Fedin 1fc2b19c94 Add Cinnamon sound settings command 2020-06-01 18:19:34 +04:00
Ilya Fedin fb97940cac Rename SandboxAutostart to PortalAutostart 2020-06-01 18:19:34 +04:00
Ilya Fedin 16c38b54e2 Rename InSandbox to InFlatpak 2020-06-01 18:19:34 +04:00
Ilya Fedin 7f29f57c3d Use custom gtk file dialog only on gtk-based DEs 2020-06-01 18:19:34 +04:00
Ilya Fedin 47d7bd95ae Add a method to check if gtk integration is forced 2020-06-01 18:19:34 +04:00
Ilya Fedin 1504136828 Don't spam logs if there are no dbus 2020-05-26 07:24:18 +04:00
Ilya Fedin 4c1f83daca Add a check for bundled Qt plugins 2020-05-24 10:57:37 +04:00
Ilya Fedin d1d1f83881 Remove outdated LIBGL_ALWAYS_INDIRECT hack 2020-05-08 12:54:21 +04:00
Ilya Fedin 161e51757c Change color of wayland decoration according to theme 2020-05-01 12:26:10 +04:00
Ilya Fedin 7f890122e6 Add methods to detect appimage, static binary and forced gtk dialog 2020-04-26 12:28:34 +04:00
Ilya Fedin 7bc86cc9af Fix directory opening with portal and use them by default with KDE 2020-04-24 14:33:26 +04:00
Ilya Fedin ed91c07f99 Restore the old behavior with fallback fontconfig configuration
With current code fallback works only through time and replaces the config even if it is changed by the user.

This commit fixes that.
2020-04-13 10:49:30 +04:00
John Preston 0d58f1c9fa Try system font config once in snap build. 2020-03-30 12:18:50 +04:00
Ilya Fedin aa4968faaa Re-use fontconfig fallback code in snap 2020-03-29 14:14:56 +04:00
Ilya Fedin d47e94ea4d Fallback to launcher basename if FLATPAK_ID variable is empty 2020-03-16 13:04:52 +04:00
Ilya Fedin 99a8c93ac1 Fix build with gcc 9 2020-03-16 13:00:16 +04:00
Ilya Fedin ba5d9eda2d Minimize dbus requests 2020-03-11 11:43:14 +04:00
Ilya Fedin 5927e8272c Convert TDESKTOP_DISABLE_DESKTOP_FILE_GENERATION to runtime environment variable 2020-03-09 11:02:45 +04:00
Ilya Fedin 7202ffca76 Remove unneeded TrayIconFileTemplate function
Use /.flatpak-info instead of deprecated /run/user/$UID/flatpak-info

Improve indentation in UseXDGDesktopPortal and IsAppIndicator

Remove unneeded NeedTrayIconFile and rename IsAppIndicator to IsIndicatorApplication

Include only needed part of QtDBus in main_window_linux.cpp

Remove usage of QDBusInterface from SandboxAutostart and IsSNIAvailable

Don't check dbus activatable services in IsIndicatorApplication

Move XEmbed menu initialization to initTrayMenuHook, tray availability check to initHook

Don't create unneeded file for tooltip icon, since indicator-application doesn't support tooltips

Passthrough counter from updateIconCounters

Suppress log errors for LastUserInputTime on GNOME

Set applcation name and icon name for pulseaudio
2020-03-06 18:28:56 +04:00
Ilya Fedin 5c89dfad85 Implement LastUserInputTime on Linux
This is a dbus implementation, ideally a X11 implementation should be added as a fallback to get it work on non-mainstream DEs (and WMs)
2020-03-03 18:39:31 +04:00
Ilya Fedin 7bd0598555 Unified function to detect icon name on Linux 2020-02-27 15:17:32 +04:00
Ilya Fedin 8b704f9bd7 Fix escaping in linux launcher creating 2020-02-27 11:51:28 +04:00
John Preston 3b327d9397 Fix launching with data in ~/.TelegramDesktop
Regression was introduced in 60612635ef.

Fixes #7289.
2020-02-26 20:13:40 +04:00
Ilya Fedin 5bdc0db9e2 Generalize backward compatibility of linux launcher 2020-02-21 18:12:48 +04:00
Ilya Fedin ca1623f34a Use XDG Desktop Portal only when variable is set 2020-02-21 18:11:24 +04:00
Ilya Fedin 3574a9c874 Fix lost qgetenv in GetLauncherBasename 2020-02-11 13:14:22 +04:00
Ilya Fedin e62f727135 Fix creating of autostart launcher in snap 2020-02-10 19:30:41 +04:00
Ilya Fedin 77719750ee Fix name of the snap desktop file
Use new switch for GSL
2020-02-10 15:34:03 +04:00
Ilya Fedin 3b4dfa1381 Use LXQt's StatusNotifierItem implementation instead of appindicator 2020-02-05 18:38:34 +04:00
John Preston 28a567986d Try linking some libs dynamically on Linux. 2020-01-31 16:33:35 +03:00
Ilya Fedin 0477bda929 Use XDG Desktop Portal for file dialog 2020-01-31 16:02:11 +03:00
Ilya Fedin d80b3fda7d Fix duplicate object path in SandboxAutostart and add some logging 2020-01-31 15:47:44 +03:00
Ilya Fedin a831c1703a Split launcher filename detection to a function 2020-01-31 15:46:39 +03:00
John Preston 74d848311b Replace str_const with base::const_string. 2020-01-29 12:47:50 +03:00
Ilya Fedin 9536a3c98e Use packaged build in the snap package 2020-01-28 20:38:12 +03:00
Ilya Fedin 05eabfd539 Add autostart support for linux 2020-01-28 16:44:27 +03:00
Ilya Fedin 04cfd598e2 Use appindicator in flatpak and fix desktop environment detection, add pavucontrol-qt 2020-01-24 16:51:50 +03:00
Ilya Fedin ffe037f9f1 Fix single instance socket path for compatibility with flatpak 2020-01-23 09:58:12 +03:00
Ilya Fedin 0bcc4befa1 Change fc-custom.conf condition to DESKTOP_APP_USE_PACKAGED 2020-01-17 17:49:07 +03:00
John Preston 4eeac7dc18 Fix whitespace and indentation errors.
See #6672, thanks Sea-n.
2020-01-02 14:25:53 +03:00
ilya-fedin 3d36b4f866 Replace libnotify with QtDBus notification implementation (#6825) 2019-12-29 18:41:45 +03:00
John Preston 849deb57e2 Move many widget classes to lib_ui. 2019-10-01 23:59:46 +03:00