Bug 485829 - "Virtual Display" button doesn't work, if krfb / krdc are not installed
Summary: "Virtual Display" button doesn't work, if krfb / krdc are not installed
Status: RESOLVED FIXED
Alias: None
Product: kdeconnect
Classification: Applications
Component: plasmoid (other bugs)
Version First Reported In: unspecified
Platform: Fedora RPMs Linux
: NOR normal
Target Milestone: ---
Assignee: Fabian Arndt
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-04-20 02:30 UTC by Fabian Arndt
Modified: 2024-05-30 23:13 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Fabian Arndt 2024-04-20 02:30:18 UTC
SUMMARY

A button should only be shown, if there is any functionality behind it.
Therefore it shouldn't be shown if the prerequisite is missing.
It should at least give the user some kind of feedback, if the triggered functionality isn't available or failed executing.

STEPS TO REPRODUCE

1. Pair two computers, lacking krfb/krdc
2. Activate "Virtual Monitor" plugin
3. Open Plasmoid
4. Click "Virtual Display"

OBSERVED RESULT

The current implementation fails silently, if krfb (guest) or krdc (host) are not installed.
Nothing happens, if you click the "Virtual Display" button.

EXPECTED RESULT

The plugin / plasmoid should check if host and client are capable to establish a "Virtual Display" connection, which requires kfrb to create a virtual display and krdc to host it. 

There should/could be some instruction or hint, if this is not the case.
If we don't want to implement this, we should at least hide the button.

SOFTWARE/OS VERSIONS

Linux: Nobara Linux 39
KDE Plasma Version: 6.0.3
KDE Frameworks Version: 6.0.0
Qt Version: 6.6.2
Comment 1 Fabian Arndt 2024-04-20 02:31:29 UTC
I'm not sure if this is considered a bug, or a feature request.
I consider a silent failing button as a bug.
Comment 2 Sven Grewe 2024-04-27 13:45:57 UTC
I can confirm this bug. I didn't even know what to do as user because there was no hint from the system. KDE Neon doesn't even come pre-installed with krfb/krdc.
I mean the virtual display feature doesn't work too but that's another issue.
Comment 3 Fabian Arndt 2024-04-27 16:05:38 UTC
I'm working on it, in some capacity. I've implemented the necessary checks in the plugin already and I will try to gray out the button, if krfb isn't installed or krdc on the paired device.

I'm not sure yet, how to communicate a failure.. and if I will actually implement it, but my change could prevent a lot of issues first hand.
Comment 4 Fabian Arndt 2024-05-01 00:24:53 UTC
I failed to trigger the bot, here is my MR:
https://invent.kde.org/network/kdeconnect-kde/-/merge_requests/670
Comment 5 Aleix Pol 2024-05-30 23:13:57 UTC
Git commit b24d6298027fa0b94c61f2c27ecf955a5123d3fc by Aleix Pol Gonzalez, on behalf of Fabian Arndt.
Committed on 30/05/2024 at 23:13.
Pushed by apol into branch 'master'.

virtualmonitor: implemented capabilities check

## Summary

Currently, the plugin just fails silently if the local device is missing the `krfb` package or if the remote device misses an `vnc://` protocol/scheme handler. You click the button and nothing happens.

One issue is, that the plugin is considered `virtualmonitor.available` in the `DeviceDelegate.qml`, even if the check for `krfb-virtualmonitor` fails and no dbus-path is provided. I investigated the behavior a bit, but ignored it in the end as this MR benefits from being shown for device constellations that _could_ provide this feature.

A warning is shown with brief instructions, how to get the plugin working correctly.

- Check if krfb-virtualmonitor is available locally
- Check default scheme handler for vnc:// on device (Linux)
- Show warnings / reasons, if no connection could be established


## Test Plan

Regarding if the devices have mentioned packages installed, we should see different behaviors.

If the remote device has no VNC client, it can not connect to out server. _A warning should be shown._

If the local device hasn't the `krfb-virtualmonitor` available, the remote device couldn't connect. _A warning should be shown._

If both problems are present, _both warnings should be shown._


If none of these are present, no warning should be shown and we should try to establish a connection.


The connection attempts failed? _A warning should be shown._

M  +0    -1    declarativeplugin/qml/PluginChecker.qml
M  +29   -7    plasmoid/package/contents/ui/DeviceDelegate.qml
M  +4    -0    plugins/virtualmonitor/kdeconnect_virtualmonitor.json
M  +61   -1    plugins/virtualmonitor/virtualmonitorplugin.cpp
M  +25   -0    plugins/virtualmonitor/virtualmonitorplugin.h

https://invent.kde.org/network/kdeconnect-kde/-/commit/b24d6298027fa0b94c61f2c27ecf955a5123d3fc