Commit graph

16 commits

Author SHA1 Message Date
Albert Vaca Cintora
e04c43882c Don't install kdeconnectd in libexec
Few programs use libexec so it's not well known and there's no real
reason to "hide" our daemon binary in case somebody wants to run it
manually.
2024-03-06 22:18:59 +00:00
Alexander Lohnau
dc8f3e209e Reformat project with clang-format 2023-12-02 14:56:20 +01:00
Albert Vaca Cintora
034ecd24c7 Expand comment based on explanation in https://invent.kde.org/network/kdeconnect-kde/-/merge_requests/584 2023-08-06 19:48:23 +00:00
Weixuan Xiao
7ce39e93af Remove QIcon loading to avoid pre-stage D-Bus session cache
Use a QPixmap icon and black color for all texts in the QSplashScreen
2023-08-06 19:48:23 +00:00
Weixuan Xiao
621ae3e007 Fix potential race condition 2023-08-06 19:48:23 +00:00
Alexander Lohnau
83888412a9 Simplify and optimize some string usages
- Using QLatin1String when concatinating strings is faster, because they
  are more lightweight. For the resulting string, we need to allocate
  new memory anyway
- Use QLatin1String overloads where they are provided by Qt APIs
- Just use const char* for log messages, the quoting of QStrings is not
  needed
- Make sure to reuse string results when possible
2023-08-05 20:22:18 +00:00
Albert Vaca Cintora
fb73fe2ecc Windows: change the systray icon for light/dark themes 2023-06-12 15:34:43 +02:00
Nicolas Fella
a918ffc0cb Add and make use of ECM's clang-format integration 2022-09-11 23:21:58 +00:00
Weixuan Xiao
19d0b8f4bc Improve D-Bus processing on macOS
Unset launchctl env before running the new one, to avoid connecting through the old launchctl env.
Show a warn message for D-Bus connection failure on macOS.
2022-06-26 18:16:55 +00:00
Weixuan Xiao
f1843cb492 Improve D-Bus implementation on macOS
Better patch to replace !218.

- Auto and quick detection of previous D-Bus instance;
- Remove private D-Bus compile definition, only use it on macOS without an existing D-Bus instance;
- Safe reboot after crashes because the indicator is not relating on the kdeconnectd to run a D-Bus session;
- Safe exit after clicking on `Quit` in the systray.


More details in commit logs:

Only enable private D-Bus on macOS because the other platforms do not
need them.
The app should be able to easily detect the session bus from the env
DBUS_LAUNCHD_SESSION_BUS_SOCKET from launchd through launchctl.
Because https://gitlab.freedesktop.org/dbus/dbus/-/blob/master/dbus/dbus-sysdeps-unix.c#L4392
shows that it is the only probing method on macOS with launchd.

The D-Bus session bus can be easily found from launchd/launchctl
with DBUS_LAUNCHD_SESSION_BUS_SOCKET env. It can be an external one
(installed from HomeBrew) or an internal one (launched by a previous
instance followed by a crash).

The indicator helper on macOS can now automatically detect whether we can use a potentially
(with launchd/launchctl env set, or KDE Connect macOS
private_bus_address set) existed and usable session bus.
If previous bus is usable, just try to launch the kdeconnectd with us.
Otherwise, launch a private D-Bus daemon, export the launchd/launchctl
env, and run a kdeconnectd instance.

Everything works better and quicker now :)
2022-04-12 05:40:03 +00:00
Ryan Adolf
531418c7d2 Change tray icon so it is the right color on MacOS
## Summary

On MacOS the system tray icon is off-color because it uses the gray-colored `kdeconnectindicatordark` icon which does not match the rest of MacOS.

![image](/uploads/430933399d9570dc1c59807e4715e87b/image.png)

BUG: 430226

I've used two patches to fix this:
1. Always use the status `KStatusNotifierItem::Passive` on MacOS. `KStatusNotifierItem` will only mark the icon as a mask (which is needed to allow it to dynamically switch between light and dark theme) [if the status is passive](cff7c337ab/src/kstatusnotifieritem.cpp (L1079-1081)).
2. The above should theoretically be enough to fix the issue and I swear at one point it was all that was needed. However, to fix this issue in my dev environment I also needed to pass in a `QIcon` with `setIsMask(true)` instead of setting the icon by its name. And I also use the `kdeconnectindicator` instead of `kdeconnectindicatordark` icon.

## Test Plan

The icon now renders in the correct color, regardless of whether devices are connected:

![image](/uploads/5010a07cbb5f23a286ece641c6b3879c/image.png) ![image](/uploads/2ae5d3d8aa633ebafb260febe313057c/image.png)

## Future work

Once I've verified this PR is working in the right direction, I want to look into making the icon gray (and hopefully a much easier-to-see gray) when no devices are connected!

For example, WireGuard, when not connected, looks like this:

![image](/uploads/43c2ef6bc7261431e878c9c1c05174f9/image.png) ![image](/uploads/f7587190648606df77ad3e3dde84098f/image.png)

P.S. I've been testing off the v21.12.2 tag since the master branch doesn't compile for me, so I haven't tested this change on the latest dev commit. But there should be no conflicts.
2022-03-02 12:06:36 +00:00
Albert Vaca Cintora
0ebe9db019 Fix MacOS build
If neither  PRIVATE_DBUS_ENABLED and APPLE_IN_APP_BUNDLE weren't set,
DBusHelper::macosUnsetLaunchctlEnv() wasn't declared.
2021-10-19 18:29:55 +02:00
Nicolas Fella
87db95b22f Convert license headers to SPDX expressions 2020-08-17 09:48:10 +00:00
Weixuan Xiao
b57a321632 Add "Send File via KDE Connect" Finder integration on macOS 2020-05-19 13:41:02 +00:00
Weixuan Xiao
dc8a2cf5f4 Fix missing icons on macOS 2020-04-16 22:05:48 +00:00
Nicolas Fella
41f5273574 Better macOS support in indicator
- Prolong waiting time on macOS
- Add a splash screen for macOS
- Separate platform-specified actions
2019-12-11 16:00:39 +01:00