GSConnect / gnome-shell-extension-gsconnect

KDE Connect implementation for GNOME
GNU General Public License v2.0
3.22k stars 259 forks source link

Inclusion by default in ubuntu #158

Closed didrocks closed 6 years ago

didrocks commented 6 years ago

Hey!

First, thanks for this extension, it's really great overall and impressive that you were able to reimplement so much of the KDEconnect stack.

I'm going to package it and we'll evaluate it for default installation in ubuntu. However, trying latest git tip, I noticed that some features doesn't seem to work, despite the switch being on on both side, and dependencies installed (contact integrations, despite having the deps + gnome-contacts showing them, but nothing in the sms dialog, same with nautilus plugin integration and so on…)

The main features are working though. However, I saw that you mention your WIP branch, and wanted to have a little bit of vision on how/when you are targetting it. I read on the other issues that you want to first release a 12 release and then merging the WIP work. Do you have a rough ideas of the timeline? I didn't open dedicated bugs yet as I see quite some stacktraces (even in widgets) and I wanted to know if you would prefer us to wait for the WIP branch to land to include it by default? Meanwhile, I'll try at least for 18.10 to package it (even if the packaging seems a bit hard from reading other issues) so that it's available in an easy form, with some dependencies installed, to most of our user base.

Let me know what you think and how we can help you :)

andyholmes commented 6 years ago

Hi, thanks for the kind words!

I believe most things in master should work (mostly why I don't touch it much anymore), so I'm not sure about those. Although, there are a few changes I might revert before v12, I've just been focusing on the rewrite.

The wip-rewrite branch has been through some big changes, for that reason I've not pushed many commits recently since I was unsure if anyone was actively testing it. I think for 18.10 using the wip-rewrite branch would be ideal, since I've worked out a meson.build for building as a system extension that seems to work well, added more complete support for Gnome (like GNotifications and respecting desktop preferences), and more user-friendly settings dialog (HIG). The downside is it has had a lot less testing, even though much of it was re-written to avoid problems entirely.

I hope by the end of the month to be early beta quality, when I can be sure any incompatible changes are done, start checking corner-cases, stabilise translation strings and making sure it's a smooth upgrade for current users. What is your timeline/cutoff for inclusion to 18.10?

To give you an idea of progress at the project level, here is a raw ZIP of my local repo (unpushed) with meson build scripts you can have a look at. It includes a built .deb and a script mkpkg.sh that uses checkinstall to build it. You could use gdebi to inspect it, or even try installing it and hopefully that will give you some idea, but no guarantees on stability right now :)

gsconnect-13.zip

didrocks commented 6 years ago

Thanks for the update! From what you told, it seems we can do something like this:

I'm happy to give the wip branch a try, packaging it so that it meets ubuntu standards and pushing that next week to the repo. Does that sound like a good plan?

didrocks commented 6 years ago

I had a look today and tried both your package and the WIP branch. I couldn't get the WIP branch to work as your unpushed changes fix quite some things that are currently blocking. chmod removed, glib schema now loading as expected from local version or system and so on. I started to write some patches for those before seeing that you already did it in your zip. The meson also looks better, not compiling schema and so. Good work!

I think it does make sense to wait for those changes to be pushed in your WIP branch before making this entering ubuntu. Do you think you will have time to push it next week, so that I can base my packaging on it (we don't use checkinstall but packaging made from scratch)? (I have a WIP package, but only on your WIP branch, will happily rebase on it).

FYI, the only weird things I spotted in the package are due to the autogeneration via checkinstall (no copyright, no changelog), but nothing to worry about!

Keep me posted ;)

andyholmes commented 6 years ago

Do I understand correctly that you would continue to rebase on the wip-rewrite branch, but just want to get started on the packaging files? If that's so then I think I can pull enough together to push on Monday, but I plan to re-organize some stuff inside the project a bit later on and translation strings are not finalized at all yet.

didrocks commented 6 years ago

@andyholmes: yes, we are far from feature freeze and we'll continuously (until cosmic is released) rebasing on that WIP branch. The goal is just to be able to package/upload a first version in the development ubuntu release.

If you can push that today so that I pick it tomorrow, that would be excellent :) (and yes, no worry about stabilization, I'll adapt the packaging as you are changing it). Thanks!

andyholmes commented 6 years ago

Okay, should be workable now. I plan on moving some files around, but I just use install_subdir() for the whole thing in the meson.build so it shouldn't affect anything.

To work as a user extension, GSConnect just adds icons via GResource which also works for a system install, at least in the application. Would you like the meson.build to also install its application/symbolic icon like a standard application?

didrocks commented 6 years ago

Thanks a lot! I'll give it a shot today :)

If you dont' expect them to be themeable or anything, having them in GResource is fine. We can reevaluate later on anyway.

Will keep you posted!

didrocks commented 6 years ago

So, I've worked on a source package for it. It looks globally good. I separated in 2 packages are for security reasons, we will probably not installed the browser integration by default.

I only needed to do this trick: https://git.launchpad.net/~ubuntu-desktop/ubuntu/+source/gnome-shell-extension-gsconnect/tree/debian/rules?h=ubuntu&id=615b67bba906c01402df3c2900d64c5c22f31caf#n9 to set the executables bits on both scripts having shebangs. daemon.js needs it as it's directly executed from the .service file. I don't know if having NativeMessagingHost.js is really needed for the browser integration? If not, maybe the shebang can be removed?

However, testing this version, I can't associate my phone anymore with it. In the Shell menu, I can see my Samsung device and its submenu (but no battery, nothing) and not connected. Note that I tried to associate it both ways.

The GNOME Shell logs are:

juil. 24 10:36:30 casanier gjs[28850]: JS LOG: GSConnect: Opening connection to 192.168.0.27:1716
juil. 24 10:36:30 casanier gjs[28850]: JS LOG: Authenticating 5d8c70f0a4964177
juil. 24 10:36:30 casanier gjs[28850]: g_signal_handler_disconnect: assertion 'handler_id > 0' failed
juil. 24 10:36:30 casanier gjs[28850]: JS LOG: Connected to Galaxy S6 (5d8c70f0a4964177)
juil. 24 10:36:30 casanier gjs[28850]: JS LOG: Disconnected from Galaxy S6 (5d8c70f0a4964177)

Note as well that the first time it associated, I got as well other warnings (do you want me to report them or it's too early already?):

juil. 24 10:34:56 casanier gjs[28850]: JS WARNING: [/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/core.js 181]: reference to undefined property "GSocketOutputStream"
juil. 24 10:34:57 casanier gjs[28850]: JS WARNING: [/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/core.js 203]: reference to undefined property "_authenticateCertificateId"

And another kind of warning spawning in my logs regularly:

juil. 24 10:47:07 casanier gnome-shell[2182]: JS ERROR: TypeError: this._keybindings.get(...) is undefined
                                              _onAcceleratorActivated@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/shell/keybindings.js:36:13
andyholmes commented 6 years ago

Hmm, basic connection should be working. I'll try a clean device setup and see if I can reproduce this.

The first two warnings I'm not sure why they happen. The GSocketOutputStream warning is a difficult one since I believe it's happening in the bindings during a call to write_bytes_async(). I haven't been able to track it down or handle it since it's only printed as a warning in the log and doesn't throw an exception. The _authenticateCertificateId warning is also puzzling, but shouldn't be a problem since it's just a call to GObject.signal_handler_disconnect() that probably isn't necessary anyways.

The keybinding error I think I just fixed. The keybinding manager I wrote was picking up accelerators not associated with GSConnect and failing (harmlessly) since it didn't have callbacks for them.

didrocks commented 6 years ago

Thanks for looking!

Keep me posted on the connection debugging, if you can reproduce, I still have the issue here (or which kind of debug would help you).

andyholmes commented 6 years ago

Okay, I think I have fixed the above errors. The signal disconnect warning was a typo, the connection error was just an oversight and the keybinding warning was an easy fix, too. The warning reference to undefined property "GSocketOutputStream" I still think is some internal warning, since if it was a GJS error it would be warning about output_stream, but either way I can't mute it and I think it's harmless.

With regards to the Native Messaging Host, that does have to be executable since it's actually the browser (chrome/firefox) that executes it. In this case, it's basically a simple DBus adapter so the WebExtension can communicate with the service directly.

didrocks commented 6 years ago

Thanks for the updates. Indeed, it smells like some typos and such. Ack on the Native Messaging Host ;)

So, I confirming that merging latest of WIP branch got the association working. However, I keep getting:

GSConnect-Message: 16:35:45.809: GSConnect: Adding Galaxy S6
GSConnect-Message: 16:35:45.982: GSConnect: Removing Galaxy S6
GSConnect-Message: 16:35:46.183: GSConnect: Adding Galaxy S6
GSConnect-Message: 16:35:46.389: GSConnect: Removing Galaxy S6
GSConnect-Message: 16:35:46.642: GSConnect: Adding Galaxy S6
GSConnect-Message: 16:35:46.849: GSConnect: Removing Galaxy S6
GSConnect-Message: 16:35:47.079: GSConnect: Adding Galaxy S6
GSConnect-Message: 16:35:47.320: GSConnect: Removing Galaxy S6

And this is taking the whole CPU until the session becomes unusable. I removed the association for now. Can you reproduce this? Can I bring to you more debugging info?

I don't have the time looking at it deeply right now (have to work on the desktop icon extension/Nautilus before going on holidays), but happy to provide any more info if you can't reproduce ;)

andyholmes commented 6 years ago

Hmm, that is strange. Devices are added when they first connect or a broadcast is received. Devices are only removed if they become disconnected while unpaired, so something must still be going wrong during the first connection.

If you turn on Debug mode in Advanced page there should be more output. You could just force stop the Android app if you need to get the desktop usable to do this. There's also a convenience button in the top-right corner of the Debugger that opens a gnome-terminal window with logging:

screenshot from 2018-07-26 08-10-00 screenshot from 2018-07-26 08-10-15

PS. I'm not sure if I should remove this debug stuff (maybe as a build option). It's really helpful when users have problems, so maybe I should hide it in the menu and remove the advanced tab.

didrocks commented 6 years ago

Ok! So, I dconf reset all values associated to gsconnect before restarting the Shell.

Consequently, the phone isn't associated. At this stage, I have:

JS LOG: GSConnect: Accepting connection from 192.168.0.27:58604
JS LOG: GSConnect: Adding Galaxy S6
JS LOG: Connected to Galaxy S6 (5d8c70f0a4964177)
gtk_widget_draw: assertion '!widget->priv->alloc_needed' failed
JS WARNING: [/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/service.js 101]: Too many arguments to method Gtk.ListStore.set: expected 3, got 4
JS ERROR: Error: Cannot convert string to array of 'interface'
populate@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/service.js:101:13
_init@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/service.js:55:9
_init@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/service.js:184:22
_connectDeviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:312:10
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [lan.js:_onIncomingPacket:239]: Received broadcast: Galaxy S6
DEBUG: [lan.js:_onIncomingPacket:267]: already connected
DEBUG: [lan.js:_onIncomingPacket:239]: Received broadcast: Galaxy S6
DEBUG: [lan.js:_onIncomingPacket:267]: already connected
DEBUG: [lan.js:_onIncomingPacket:239]: Received broadcast: Galaxy S6
DEBUG: [lan.js:_onIncomingPacket:267]: already connected

Note that I trigger the stacktrace clicking on the hamburger menu -> Connect to.

So, I tried to to associated from KDE Connect Android app, and this is where I got the same issue again. Had to hard reboot as I couldn't get to a tty to kill the Shell, and killing the Android app wasn't sufficient apparently. I thus used your debugging app (I think ti's great to have that journalctl filtering, as well as more debug info, but we can indeed hide that in the future or on a checkbox…), and here are the results:

Paring is:

DEBUG: [core.js:receive:463]: Galaxy S6: {
  "id": 1532671812903,
  "type": "kdeconnect.pair",
  "body": {
    "pair": true,
    "publicKey": "-----BEGIN PUBLIC KEY-----\nEDITED\n-----END PUBLIC KEY-----\n"
  }
}
JS LOG: Pair request from Galaxy S6
[ Notification acked ]
DEBUG: [core.js:send:445]: Galaxy S6: {
  "id": 0,
  "type": "kdeconnect.pair",
  "body": {
    "pair": true
  }
}

And then, a lot of stacktraces, which seems to come from the same issue for every plugin, on initial load.

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'battery' plugin
(../../../../gio/gdbusinterfaceskeleton.c:328):g_dbus_interface_skeleton_get_info: runtime check failed: (ret != NULL)
WARNING: Galaxy S6: loading battery: info is null
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'clipboard' plugin
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'findmyphone' plugin
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'mousepad' plugin
WARNING: Galaxy S6: Requiring Caribou, version none: Typelib file for namespace 'Caribou' (any version) not found
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'mpris' plugin
DEBUG: [core.js:send:445]: Galaxy S6: {
  "id": 0,
  "type": "kdeconnect.mpris",
  "body": {
    "playerList": [],
    "supportAlbumArtPayload": false
  }
}
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'notification' plugin
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'ping' plugin
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'runcommand' plugin
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'sftp' plugin
WARNING: Galaxy S6: loading sftp: SSHFS not installed
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'share' plugin
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'telephony' plugin
JS ERROR: ReferenceError: value is not defined
_errataPage@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/ui/settings.js:560:1
loadPlugin@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:805:9
_loadPlugins/<@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:42
_loadPlugins@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:809:9
pair@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/device.js:711:13
_deviceAction@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:365:17
@/usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js:657:2

DEBUG: [notification.js:closeNotification:572]: pair-request
DEBUG: [core.js:send:445]: Galaxy S6: {
  "id": 0,
  "type": "kdeconnect.notification.request",
  "body": {
    "cancel": "pair-request"
  }
}

The interesting one then, is the Galaxy part: ("Erreur lors de l’ouverture du fichier" : "No file found when executing…")

WARNING: Galaxy S6: runcommand cache: Erreur lors de l’ouverture du fichier /home/didrocks/.cache/gsconnect/5d8c70f0a4964177/runcommand.json : Aucun fichier ou dossier de ce type
WARNING: Galaxy S6: telephony cache: Erreur lors de l’ouverture du fichier /home/didrocks/.cache/gsconnect/5d8c70f0a4964177/telephony.json : Aucun fichier ou dossier de ce type
DEBUG: [__init__.js:11]: loading service/__init__.js
WARNING: Contacts: Requiring GData, version 0.0: Typelib file for namespace 'GData', version '0.0' not found
WARNING: Initializing Gvc: Requiring Gvc, version none: Typelib file for namespace 'Gvc' (any version) not found
JS LOG: Loading 1 device(s) from cache
JS LOG: GSConnect: Adding cached device
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'battery' plugin
(../../../../gio/gdbusinterfaceskeleton.c:328):g_dbus_interface_skeleton_get_info: runtime check failed: (ret != NULL)
WARNING: Galaxy S6: loading battery: info is null
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'clipboard' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'findmyphone' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'mousepad' plugin
WARNING: Galaxy S6: Requiring Caribou, version none: Typelib file for namespace 'Caribou' (any version) not found
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'mpris' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'notification' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'ping' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'runcommand' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'sftp' plugin
WARNING: Galaxy S6: loading sftp: SSHFS not installed
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'share' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'telephony' plugin
JS LOG: GSConnect: Using TCP port 1716
JS LOG: GSConnect: Using UDP port 1716
DEBUG: [lan.js:broadcast:305]: broadcasting...
WARNING: Galaxy S6: runcommand cache: Erreur lors de l’ouverture du fichier /home/didrocks/.cache/gsconnect/5d8c70f0a4964177/runcommand.json : Aucun fichier ou dossier de ce type
WARNING: Galaxy S6: telephony cache: Erreur lors de l’ouverture du fichier /home/didrocks/.cache/gsconnect/5d8c70f0a4964177/telephony.json : Aucun fichier ou dossier de ce type
DEBUG: [bluetooth.js:_registerProfile:217]: Bluetooth.ChannelService: registering service
DEBUG: [__init__.js:11]: loading service/__init__.js
WARNING: Contacts: Requiring GData, version 0.0: Typelib file for namespace 'GData', version '0.0' not found
WARNING: Initializing Gvc: Requiring Gvc, version none: Typelib file for namespace 'Gvc' (any version) not found
JS LOG: Loading 1 device(s) from cache
JS LOG: GSConnect: Adding cached device
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'battery' plugin
(../../../../gio/gdbusinterfaceskeleton.c:328):g_dbus_interface_skeleton_get_info: runtime check failed: (ret != NULL)
WARNING: Galaxy S6: loading battery: info is null
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'clipboard' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'findmyphone' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'mousepad' plugin
WARNING: Galaxy S6: Requiring Caribou, version none: Typelib file for namespace 'Caribou' (any version) not found
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'mpris' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'notification' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'ping' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'runcommand' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'sftp' plugin
WARNING: Galaxy S6: loading sftp: SSHFS not installed
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'share' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'telephony' plugin
JS LOG: GSConnect: Using TCP port 1716
JS LOG: GSConnect: Using UDP port 1716
DEBUG: [lan.js:broadcast:305]: broadcasting...
WARNING: Galaxy S6: runcommand cache: Erreur lors de l’ouverture du fichier /home/didrocks/.cache/gsconnect/5d8c70f0a4964177/runcommand.json : Aucun fichier ou dossier de ce type
WARNING: Galaxy S6: telephony cache: Erreur lors de l’ouverture du fichier /home/didrocks/.cache/gsconnect/5d8c70f0a4964177/telephony.json : Aucun fichier ou dossier de ce type
DEBUG: [bluetooth.js:_registerProfile:217]: Bluetooth.ChannelService: registering service
DEBUG: [__init__.js:11]: loading service/__init__.js
WARNING: Contacts: Requiring GData, version 0.0: Typelib file for namespace 'GData', version '0.0' not found
WARNING: Initializing Gvc: Requiring Gvc, version none: Typelib file for namespace 'Gvc' (any version) not found
JS LOG: Loading 1 device(s) from cache
JS LOG: GSConnect: Adding cached device
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'battery' plugin
(../../../../gio/gdbusinterfaceskeleton.c:328):g_dbus_interface_skeleton_get_info: runtime check failed: (ret != NULL)
WARNING: Galaxy S6: loading battery: info is null
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'clipboard' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'findmyphone' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'mousepad' plugin
WARNING: Galaxy S6: Requiring Caribou, version none: Typelib file for namespace 'Caribou' (any version) not found
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'mpris' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'notification' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'ping' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'runcommand' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'sftp' plugin
WARNING: Galaxy S6: loading sftp: SSHFS not installed
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'share' plugin
DEBUG: [device.js:loadPlugin:781]: Galaxy S6: loading 'telephony' plugin
JS LOG: GSConnect: Using TCP port 1716
JS LOG: GSConnect: Using UDP port 1716
DEBUG: [lan.js:broadcast:305]: broadcasting...
[…]

And this is what is looping endlessly, burning the CPU.

Perms are correct to write to the cache directories though, but empty:

$ ls -rtl .cache/gsconnect/
total 8
drwx------ 2 didrocks didrocks 4096 juil. 26 16:33 _contacts
drwx------ 2 didrocks didrocks 4096 juil. 26 16:33 5d8c70f0a4964177
$ ls -rtl .cache/gsconnect/5d8c70f0a4964177/
total 0

Do you have by any chance any logic like, "if the directory is present, I expect the json files to be there" (generated from a previous association)? And so, not robust when there is a failure during first creation?

Note that there are some complaints about Caribou which isn't the keyboard integrated tool in the Shell since 3.28.

Hope that helps!

andyholmes commented 6 years ago

Okay, I think I've fixed most errors you posted. The directory warnings are okay, they can fail gracefully if the cache is new or has been reset. The Caribou library was used by a contributor in the mousepad plugin who said it was needed for proper unicode support (I think), since Caribou also has some accessibility capabilites and can simulate keypresses. The list of plugin failures was just a change I forgot to commit with the battery interface that was triggering the rest :P

I see that what's actually happening is that the GSConnect service is crashing somehow, and it seems like during loading the telephony plugin, since these two are printed right when the daemon starts:

JS LOG: GSConnect: Using TCP port 1716
JS LOG: GSConnect: Using UDP port 1716

It may have something to do with this error, since Gvc is used in the telephony plugin:

WARNING: Initializing Gvc: Requiring Gvc, version none: Typelib file for namespace 'Gvc' (any version) not found

Gvc is a mini-pulseaudio binding that's shipped with Gnome Shell, but those typelibs can be in a few different places (depending on distro/version), not necessarily the regular system libdir. It's inferred based on where GJS installs it's libs. I assume you're using a build of Cosmic? Is Gvc-1.0.typelib on your system and if so what directory is it in?

didrocks commented 6 years ago

Thanks for the quick answer!

Caribou has been removed from GNOME Shell 3.28 (what you say is correct pre-3.28, as it's the keyboard used to access accessilibity capabilities to simulate keypress) and has been replaced by a new on-screen keyboard: https://www.gnome.org/news/2018/03/gnome-3-28-released/.

Back on the issue, which seems to trigger the crash indeed, Gvc-1.0.typelib is in /usr/lib/gnome-shell/Gvc-1.0.typelib (it's coming from the GNOME Shell package), installed alongside libgvc.so and others Shell/St typelibs. Is it a place not included in the daemon?

andyholmes commented 6 years ago

I'm not sure if there's a GIR for the new onscreen keyboard, I'll have a look into it. I feel like it shouldn't be needed anyways, but for now the Caribou GIR is still installable if someone does need that to support their language.

Okay, so the gnome-shell libdir hasn't changed at all. I used to hardcode it, but some distributions like Fedora have it in a different directory. If the extension is user extension it tries to guess it since it could be installed on any distro, but if it's a system extension then it uses libdir from meson and injects that into metadata.json.

When I was testing with checkinstall I was creating the build directory with meson --prefix /usr --libdir lib, I think because meson was defaulting to lib/x86_64-linux-gnu which is what Fedora uses. If you check metadata.json in the built package does it say "libdir": "/usr/lib"?

didrocks commented 6 years ago

Ah, that explains it thus!

GNOME Shell debian packaging forces libdir to be /usr/lib for the Shell, instead of default triplet for debian/ubuntu ("/usr/lib/x86_64-linux-gnu"). And indeed, you end up with traditional libdir in metadata.json: "libdir": "/usr/lib/x86_64-linux-gnu",

I thus did change the packaging to force libdir to not use the triplet. It generates the correct metadata.json file, and indeed, that works! I didn't stop any warnings or anything anymore, and basic tests seem to work so far :)

Thanks or looking at those! I'll keep you posted if I may find more issue, but I really like the new UI so far :)

andyholmes commented 6 years ago

Excellent! I'm going to keep looking into the mixer code anyways, since I don't think the possibility of an endless loop with CPU @ 100% is a good thing :)

didrocks commented 6 years ago

Excellent! I'm going to keep looking into the mixer code anyways, since I don't think the possibility of an endless loop with CPU @ 100% is a good thing :)

More than agreed :)

andyholmes commented 6 years ago

Hi, I know it's been a long time coming, but I've recently merged the rewrite into master. Fairly soon I'll tag a release candidate at which point I'd like to do an informal freeze.

Now would be convenient time to request or submit any changes to the build system. Hopefully, we can achieve a system that works for all distributions without any downstream patches. The only addition I have planned is a translator's build target for the WebExtension, which shouldn't affect packaging.

There is a new page in the Wiki called Packaging that may answer some questions.

didrocks commented 6 years ago

Hey! Nice hearing from you :)

That's a good timing, we are frozen right now in cosmic, so, let's say that I'm opening a Feature Freeze exception, and if it's accepted, I can push your release candidate;

Even if not by default in 18.10, it's a good way to ask people to test your rewrite (congrats on getting it landed!) to catch issues before it becomes the default in 19.04.

Sounds good to you?

andyholmes commented 6 years ago

Sounds good to me. There has been a couple changes to Packaging in the last few days, although I don't think any should affect DEB packaging you might want to check it over.

I've had a few early testers, and submitted some fixes. It doesn't seem to be exploding anyone's computer, so now might be a good time to take a snapshot. I guess getting a package landed is harder than getting version bumps later?

didrocks commented 6 years ago

Hey! Thanks for the catchup :)

So, I've tried to take today's snapshot from master and give it a try. I have found some issues that prevents me to upload right away. Which kinds of logs would you need?

Sending a file from the phone:

I wasn't really able to test the sms message due to the lack of entry in the menu. I didn't find any relevant log when enabling the extension telling it couldn't insert the menu. I am testing on GNOME Shell 3.30.0.

Hopes that helps!

andyholmes commented 6 years ago

Hey, no problem! I'm quite close to an RC here, and then I hope to only do translation changes, so it's a good time to get these worked out.

The best way to get logs is through the debugger. If you open it from the Main window menu and click the terminal button it should open a log and enable debug messages like before (this can fill up your logs, remember to turn it off!):

screenshot from 2018-10-02 02-50-29

This will print a lot more messages than errors, so with your menu missing it should at least print messages like this if it's "there" but just not "visible":

DEBUG: [device.js:_sync:594]: Nexus 4 menu
DEBUG: [device.js:_sync:594]: Asus Nexus 7 menu
DEBUG: [device.js:_sync:594]: Nexus 4 menu

If you scroll one line up in the terminal and restart the service in "Service" panel, you can go through the log line by line to catch errors. You can also do the same in the other tab and restart Gnome Shell to watch the extension load.

Nothing appears in the user menu

This seems to happen to very few people (#135), but I've never been able to reproduce it and none of the users' logs have any errors. It's a really bad bug, but I'm not sure what to do about it. If your logs have any errors or warnings that would be really helpful.

other panels were empty at first

I expect you're testing with Yaru? I've noticed there are strange errors, I think only with that theme:

screenshot from 2018-10-02 02-57-52

I feel like this is probably my fault, but I don't know how it happens or why only with Yaru so I haven't reported it. Maybe you could ping someone who knows more about Yaru or theming that might? I would like to get it fixed since a lot of people will use that theme soon.

clicking "open folder" in the notification does nothing, "open file" works though

This one I've never heard of before. I've just tested and it works for me, but maybe your logs will have more info.

I wasn't really able to test the sms message due to the lack of entry in the menu

SMS is something I'm working as I type this, but it should be pretty stable. You should be able to test all features from the menu by setting up keyboard shortcuts though.

Let me know if there's more problems or anything, I'll be around the next few days "full-time" :)

didrocks commented 6 years ago

Ok, I have rebooted since then and I have now the menu appearing. I tried alt+F2 a few times and I didn't reproduce not seeing the menu "good", but I don't really like those flaky behaviors without a good explanation. We'll see later.

However, right now, my phone doesn't see anymore gsconnect. I have killed KDEConnect, restarted my android phone, but no peripherials is available :(

I remove the association on both side, enabled debugging on the extension side, and restarted the service. The log has:

DEBUG: [__init__.js:12]: loading service/__init__.js
DEBUG: [daemon.js:vfunc_startup:747]: Loading 0 device(s) from cache
g_variant_new_string: assertion 'string != NULL' failed

Anything else I can provide? (the daemon gjs /usr/share/gnome-shell/extensions/gsconnect@andyholmes.github.io/service/daemon.js is running).

So, I can't give more info on the other items (but empty panels with an allocation issue can indeed be on the Yaru theme side, I'll give it a look once the above is fixed and will keep you posted).

Same for open folder and SMS feedback :)

I'm keeping my machine in the "broken" state if that can help you. I can't reboot anyway right now as I have some coding projects I need to finish first.

andyholmes commented 6 years ago

Hmm, that is kind of flakey. Maybe the live-patching has changed a bit in 3.30. I haven't upgraded yet, my main HDD failed so I only have a 16gb SSD :/ I'll try booting from a livecd later and test some things out.

That's weird devices aren't discovered now. GSConnect does much better network checking now - there's error notifications for blocked ports, proxy errors and others, so it's probably not that.

If you swipe down or use menu->refresh in the app does a big identity packet print? If not you can try the "Connect to..." dialog and manually enter your IP.

didrocks commented 6 years ago

Yeah, this was kind of weird, anyway, I got it after a while connecting, didn't get any warning/issue in the logs… So things tend a little bit flaky, which is fine as we only want to offer cosmic as a testing bed for us :)

So, phone connected, I did a quick tour of the features again and everything (as I tested) is working. Just a little bit uneasy due to flakyness, but we'll see with time… There are only 2 things I spotted:

Anyway, let's get that snapshot into cosmic, which is already way closer to finale code and make a call for testing once released :)

andyholmes commented 6 years ago

Okay, let me push one quick fix for a corner case before you snapshot.

didrocks commented 6 years ago

Sure! I'm going to do it tomorrow morning, so this gives you some time anyway ;)

andyholmes commented 6 years ago

Ah okay, good :)

With regards to "Open Folder", because there's no actual error, one thing you should check is the default application for inode/directory. I'm not sure if it's only for Ubuntu (maybe a deb specific thing), but sometimes the wrong application (often baobab/Gnome Disks) or no application is the default. You can query and set like so:

$ xdg-mime query default inode/directory
nautilus-folder-handler.desktop
$ xdg-mime default org.gnome.Nautilus.desktop inode/directory

Also there's a Gio one that might override, I'm not sure:

$ gio mime inode/directory
Default application for “inode/directory”: nautilus-folder-handler.desktop
Registered applications:
    filebot.desktop
    org.gnome.baobab.desktop
    org.gnome.Nautilus.desktop
    nautilus-folder-handler.desktop
Recommended applications:
    filebot.desktop
    org.gnome.baobab.desktop
    org.gnome.Nautilus.desktop
    nautilus-folder-handler.desktop

I think there was a closed launchpad bug somewhere I found this on, but if it's happening again maybe it's a regression.

didrocks commented 6 years ago

Ahah, good that you made me checking again. Just spotted the recent regression in our nautilus package: https://launchpad.net/ubuntu/+source/nautilus/1:3.26.4-0ubuntu4. So xdg-mime is still pointing at the now unexisting desktop file. I'm going to fix it. Thanks for helping! :)

andyholmes commented 6 years ago

Yay, it's not my fault! :D

didrocks commented 6 years ago

well, some logs on the exec failing would be great, but that's the main point ;)

andyholmes commented 6 years ago

Yeah, it's weird because I have it setup to catch errors, but I guess that "doesn't count" :)

https://github.com/andyholmes/gnome-shell-extension-gsconnect/blob/d59950a2ed0190ca6db3187325c0368d29322d62/src/service/device.js#L452-L463

andyholmes commented 6 years ago

Oh also I forgot, with regard to SMS. Right now in KDE Connect master there is new SMS & Contact plugins waiting for the next release that are really cool. GSConnect actually had SMS & contacts before KDE Connect, but it used a giant hack with string comparisons (though it almost always worked).

So right now it might be a bit off, because I'm trying to maintain that while supporting the new plugins. I'll install the stable release of the app and re-test that stuff ASAP. Once it's released though, GSConnect will already support it which I think will be a nice surprise for users.

didrocks commented 6 years ago

Excellent! I can see that as a long standing requested feature indeed (not everyone synchronize their contacts via Google account). Keep me posted if there is anything I can do to help you :)

andyholmes commented 6 years ago

For sure, there are some tricky spots with international phone numbers, so reaching out to some people in different countries for help testing would be good at some point. For some reason I always end up working with gnome devs in Canada, even the next city over, so I'm not much help there :P

didrocks commented 6 years ago

Ah, something I just noted btw:

  1. your phone is disconnected (because idle for quite some time)
  2. someone is calling you -> the phone connects back while ringing (probably connecting to the Wifi). You can see the state as connected in GSConnect.

However, you don't have the "someone is calling you" notification for instance. Could be the same with sms or other kind of events only happening in the phone. Unsure if you can do anything about that one as it seems this is KDEConnect which doesn't try resending the signal (because I think it may try to send it on the even of the phone calling -> not reconnected yet -> abort).

In the logs, indeed, no signal for the incoming call once the device reconnect:

DEBUG: [lan.js:_onIncomingIdentity:228]: {
  "id": 1538495762939,
  "type": "kdeconnect.identity",
  "body": {
    "deviceId": "5d8c70f0a4964177",
    "deviceName": "Galaxy S6",
    "protocolVersion": 7,
    "deviceType": "phone",
    "incomingCapabilities": [
      "kdeconnect.notification.request",
      "kdeconnect.clipboard",
      "kdeconnect.telephony.request",
      "kdeconnect.sftp.request",
      "kdeconnect.notification.reply",
      "kdeconnect.battery.request",
      "kdeconnect.notification",
      "kdeconnect.ping",
      "kdeconnect.mpris",
      "kdeconnect.share.request",
      "kdeconnect.sms.request",
      "kdeconnect.mousepad.request",
      "kdeconnect.runcommand",
      "kdeconnect.findmyphone.request"
    ],
    "outgoingCapabilities": [
      "kdeconnect.mousepad.echo",
      "kdeconnect.runcommand.request",
      "kdeconnect.mpris.request",
      "kdeconnect.notification.request",
      "kdeconnect.clipboard",
      "kdeconnect.notification",
      "kdeconnect.ping",
      "kdeconnect.sftp",
      "kdeconnect.share.request",
      "kdeconnect.telephony",
      "kdeconnect.mousepad.request",
      "kdeconnect.mousepad.keyboardstate",
      "kdeconnect.battery"
    ],
    "tcpPort": 1716,
    "tcpHost": "192.168.0.27"
  }
}
DEBUG: [device.js:_setConnected:291]: Connected to Galaxy S6 (5d8c70f0a4964177)
DEBUG: [core.js:send/<:448]: Galaxy S6: {
  "id": 1538495763794,
  "type": "kdeconnect.battery.request",
  "body": {
    "request": true
  }
}
DEBUG: [core.js:send/<:452]: kdeconnect.mpris: queued
DEBUG: [core.js:send/<:452]: kdeconnect.notification.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand: queued
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.sftp.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.sms.request_conversations: queued
DEBUG: [core.js:send/<:448]: Galaxy S6: {
  "id": 1538495763984,
  "type": "kdeconnect.mpris",
  "body": {
    "playerList": [],
    "supportAlbumArtPayload": true
  }
}
DEBUG: [core.js:send/<:452]: kdeconnect.notification.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand: queued
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.sftp.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.sms.request_conversations: queued
DEBUG: [core.js:receive/<:406]: Galaxy S6: {
  "id": 1538495763180,
  "type": "kdeconnect.runcommand.request",
  "body": {
    "requestCommandList": true
  }
}
DEBUG: [core.js:send/<:448]: Galaxy S6: {
  "id": 1538495763988,
  "type": "kdeconnect.notification.request",
  "body": {
    "request": true
  }
}
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand: queued
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.sftp.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.sms.request_conversations: queued
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand: queued
DEBUG: [core.js:send/<:448]: Galaxy S6: {
  "id": 1538495763990,
  "type": "kdeconnect.runcommand",
  "body": {
    "commandList": {}
  }
}
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.sftp.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.sms.request_conversations: queued
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand: queued
DEBUG: [core.js:send/<:448]: Galaxy S6: {
  "id": 1538495763992,
  "type": "kdeconnect.runcommand.request",
  "body": {
    "requestCommandList": true
  }
}
DEBUG: [core.js:send/<:452]: kdeconnect.sftp.request: queued
DEBUG: [core.js:send/<:452]: kdeconnect.sms.request_conversations: queued
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand: queued
DEBUG: [core.js:send/<:448]: Galaxy S6: {
  "id": 1538495763994,
  "type": "kdeconnect.sftp.request",
  "body": {
    "startBrowsing": true
  }
}
DEBUG: [core.js:send/<:452]: kdeconnect.sms.request_conversations: queued
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand: queued
DEBUG: [core.js:send/<:448]: Galaxy S6: {
  "id": 1538495763996,
  "type": "kdeconnect.sms.request_conversations",
  "body": {}
}
DEBUG: [core.js:send/<:452]: kdeconnect.runcommand: queued
DEBUG: [core.js:send/<:448]: Galaxy S6: {
  "id": 1538495763996,
  "type": "kdeconnect.runcommand",
  "body": {
    "commandList": {}
  }
}
DEBUG: [core.js:receive/<:406]: Galaxy S6: {
  "id": 1538495763181,
  "type": "kdeconnect.battery",
  "body": {
    "currentCharge": 22,
    "isCharging": false,
    "thresholdEvent": 0
  }
}
DEBUG: [core.js:receive/<:406]: Galaxy S6: {
  "id": 1538495763234,
  "type": "kdeconnect.mpris.request",
  "body": {
    "requestPlayerList": true
  }
}
DEBUG: [core.js:send/<:448]: Galaxy S6: {
  "id": 1538495764206,
  "type": "kdeconnect.mpris",
  "body": {
    "playerList": [],
    "supportAlbumArtPayload": true
  }
}
DEBUG: [core.js:receive/<:406]: Galaxy S6: {
  "id": 1538495763181,
  "type": "kdeconnect.battery",
  "body": {
    "currentCharge": 22,
    "isCharging": false,
    "thresholdEvent": 0
  }
}
DEBUG: [core.js:receive/<:406]: Galaxy S6: {
  "id": 1538495763689,
  "type": "kdeconnect.sftp",
  "body": {
    "ip": "192.168.0.27",
    "port": 1739,
    "user": "kdeconnect",
    "password": "G8ePc6jz0VlsbIudniLLrfVV8gg7",
    "path": "/storage/emulated/0",
    "multiPaths": [
      "/storage/emulated/0",
      "/storage/emulated/0/DCIM/Camera"
    ],
    "pathNames": [
      "Tous les fichiers",
      "Images de l'appareil photo"
    ]
  }
}
WARNING: Galaxy S6: sftp: Warning: Permanently added '[192.168.0.27]:1739' (DSA) to the list of known hosts.
DEBUG: [core.js:receive/<:406]: Galaxy S6: {
  "id": 1538495767248,
  "type": "kdeconnect.notification",
  "body": {
    "payloadHash": "808076492f03e966da6cfc96f12ff972",
    "id": "0|com.android.server.telecom|1|null|1000",
    "appName": "Téléphone",
    "isClearable": true,
    "ticker": "Appel manqué: --------",
    "title": "Appel manqué",
    "text": "---------",
    "time": "1538495767132"
  },
  "payloadSize": 7667,
  "payloadTransferInfo": {
    "port": 1740
  }
}
andyholmes commented 6 years ago

Ah I see. Yes the telephony events for ringing and talking are one-time only since they're directly forwarded when android receives them. I believe there's no "ongoing event/state" for that even on the Android side, but I'm not sure.

Um, also if you happen to be using Android Oreo+ right now, connections often drop because you now need a persistent notification to keep a background service running/active. There's a branch with a fix for it, but upstream hasn't decided how to deal with two different Android apps/version yet, so it's not been released. If you are, you can try this APK I built, but you'll have to uninstall before installing because it has a different signature (also has sshfs fixes/bluetooth/sms history):

kdeconnect-android-debug.zip

On another note, I realized awhile ago it's possible to do a "The device is offline, send [whatever] on next connect?" dialog or something. Maybe they could do that in the app automatically for events like that. I'll try and remember to suggest it to them.

didrocks commented 6 years ago

(Note that it would need some cleaning up for those events in the API or at least a validity timeout… Don't want if I go back home to receive those notifications 2h later ;))

andyholmes commented 6 years ago

Yeah, I think the app tracks events so it knows eg. If you're getting a new call while already talking, so I think it's possible.

For complex things like "send this file when it connects" it will probably need some thinking, but that would down the road anyways.

didrocks commented 6 years ago

And ubuntu now has a snapshot based on the 3rd of October: https://launchpad.net/ubuntu/+source/gnome-shell-extension-gsconnect/11+wip2018.10.03-0ubuntu1.

Once you cut a release candidate, we can SRU (Stable Release Upgrade) and make a call for testing so that we get larger feedback if you agree with this :)

andyholmes commented 6 years ago

Sounds good. That one is probably 95% to a release candidate. I hope to have my RC out in 1-2 days, when I'll do a string freeze for translators and any obvious bugs dealt with, etc. Everything else I'll put off until v14.

andyholmes commented 6 years ago

Hi packagers, v13 release is approaching (October 18th or so), so I wanted to check everything you need has been included before that happens. Let me know if there are any extra build options or changes you need!

didrocks commented 6 years ago

Looking nice! I'll update our snapshot in a stable release update (as October 18th is our release day and we are now in Final Freeze for 18.10) and we will do a public call for testing on it :)

I don't have anything packaging-wise to change at this point, I'm using it daily here with some hiccups, but not a big amount of issue. We'll tackle them at release time. Good job :)

andyholmes commented 6 years ago

All right, sound good then :) I'm going to close this and just open a new issue if there are any problems.

andyholmes commented 6 years ago

@didrocks

Just to touch base, with regard to Will Cooke's 18.10 release post, feel free to re-open or open a new issue about inclusion in 19.04.

I know Ubuntu has a panel in Control Center for the Dash-to-Dock "soft-fork". GSConnect is a bit more complicated, but it's possible with a single DBus connection to do a panel like Bluetooth (I can describe with more detail if that's something you guys are interested in).

Also, maybe someone wants to do a quick i18n/accessibility/usability/UI criticism run-through I'd be happy to hear. Anyways no rush, just let me know if there's anything you need to make that happen so I have lots of time. :)

didrocks commented 6 years ago

Hey!

There has been some changes this cycles in task priorities, and I'll handle the new installer work, which will prevent myself to really do a good job/follow closely with gsconnect. However, this item is still on our table AFAIK.

Both of your ideas sounds good, let me get in touch with my team and see who can have a deeper look and follow the inclusion by default, in addition to Will making the call for testing as we discussed :) Yeah, checking i18n/accessibility/usability/UI as early as possible is the best course ;)

seb128 commented 6 years ago

Hey there,

So some status update from the Canonical/Ubuntu Desktop plans for this cycle. We are still interested to see gs-connect provided to our users and would like to include it by default, our team has limited capacity though and we got asigned other higher-priority work for the coming cycle.

What we expect now to do this cycle is to be able to keep the package updated, triage incoming issues and try to help fixing some of those, write some blogs/documentation and organize some more testing for it/get some design input. To be able to provide it by default we believe that we would need to make it more discoverable in some way (integration in the initial setup? and/or in gnome-control-center?), that part is blocked on getting the design input first and then have engineering capacity to do the work. We keep that item as medium priority which means we might get to it still if other work turns to be less demanding than expected, otherwise the extra work is going to be considered again when we do our next cycle roadmap.