This file is indexed.

/usr/share/nautilus-python/extensions/kdeconnect-share.py is in kdeconnect 1.3.0-0ubuntu1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/usr/bin/python
# -*- coding: UTF-8 -*-

"""
 * Copyright 2018 Albert Vaca Cintora <albertvaka@gmail.com>
 * Copyright 2018 Andy Holmes <andrew.g.r.holmes@gmail.com>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License or (at your option) version 3 or any later version
 * accepted by the membership of KDE e.V. (or its successor approved
 * by the membership of KDE e.V.), which shall act as a proxy
 * defined in Section 14 of version 3 of the license.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
"""

__author__ = "Albert Vaca Cintora <albertvaka@gmail.com>"
__version__ = "1.0"
__appname__ = "kdeconnect-share"
__app_disp_name__ = "Share files to your phone via KDE Connect"
__website__ = "https://community.kde.org/KDEConnect"

import gettext
import locale

from gi.repository import Nautilus, Gio, GLib, GObject

_ = gettext.gettext

class KdeConnectShareExtension(GObject.GObject, Nautilus.MenuProvider):
    """A context menu for sending files via KDE Connect."""

    def __init__(self):
        GObject.GObject.__init__(self)

        try:
            locale.setlocale(locale.LC_ALL, '')
            gettext.bindtextdomain('kdeconnect-nautilus-extension')
        except Exception as e:
            print(e)
            pass

        self.dbus = Gio.DBusProxy.new_for_bus_sync(
            Gio.BusType.SESSION,
            Gio.DBusProxyFlags.NONE,
            None,
            'org.kde.kdeconnect',
            '/modules/kdeconnect',
            'org.kde.kdeconnect.daemon',
            None)

    def send_files(self, menu, files, deviceId):
        device_proxy = Gio.DBusProxy.new_for_bus_sync(
            Gio.BusType.SESSION,
            Gio.DBusProxyFlags.NONE,
            None,
            'org.kde.kdeconnect',
            '/modules/kdeconnect/devices/'+deviceId+'/share',
            'org.kde.kdeconnect.device.share',
            None)

        for file in files:
            variant = GLib.Variant('(s)', (file.get_uri(),))
            device_proxy.call_sync('shareUrl', variant, 0, -1, None)

    def get_file_items(self, window, files):

        #We can only send regular files
        for uri in files:
            if uri.get_uri_scheme() != 'file' or uri.is_directory():
                return

        try:
            onlyReachable = True
            onlyPaired = True
            variant = GLib.Variant('(bb)', (onlyReachable, onlyPaired))
            devices = self.dbus.call_sync('deviceNames', variant, 0, -1, None)
            devices = devices.unpack()[0]
        except Exception as e:
            raise Exception('Error while getting reachable devices')

        if len(devices) == 0:
            return

        if len(devices) == 1:
            deviceId, deviceName = devices.items()[0]
            item = Nautilus.MenuItem(
                        name='KdeConnectShareExtension::Devices::' + deviceId,
                        label=_("Send to %s via KDE Connect") % deviceName,
                    )
            item.connect('activate', self.send_files, files, deviceId)
            return item,
        else:
            menu = Nautilus.MenuItem(
                name='KdeConnectShareExtension::Devices',
                label=_('Send via KDE Connect'),
            )
            submenu = Nautilus.Menu()
            menu.set_submenu(submenu)

            for deviceId, deviceName in devices.items():
                item = Nautilus.MenuItem(
                    name='KdeConnectShareExtension::Devices::' + deviceId,
                    label=deviceName,
                )
                item.connect('activate', self.send_files, files, deviceId)
                submenu.append_item(item)

            return menu,