├── .gitignore ├── .travis.yml ├── AUTHORS ├── CHANGES.md ├── CONTRIBUTORS ├── COPYING ├── INSTALL ├── README.md ├── TODO ├── data ├── configs │ ├── com.indicator-kdeconnect.appdata.xml │ ├── com.indicator-kdeconnect.gschema.xml │ └── meson.build ├── desktop │ ├── indicator-kdeconnect-settings.desktop.in │ ├── indicator-kdeconnect.desktop.in │ └── meson.build ├── icons │ ├── Adwaita │ │ ├── 16x16 │ │ │ └── status │ │ │ │ ├── laptopattention.svg │ │ │ │ ├── laptopconnected.svg │ │ │ │ ├── laptopdisconnected.svg │ │ │ │ ├── laptoptrusted.svg │ │ │ │ ├── smartphoneattention.svg │ │ │ │ ├── smartphoneconnected.svg │ │ │ │ ├── smartphonedisconnected.svg │ │ │ │ ├── smartphonetrusted.svg │ │ │ │ ├── tabletattention.svg │ │ │ │ ├── tabletconnected.svg │ │ │ │ ├── tabletdisconnected.svg │ │ │ │ └── tablettrusted.svg │ │ ├── 22x22 │ │ │ └── status │ │ │ │ ├── laptopattention.svg │ │ │ │ ├── laptopconnected.svg │ │ │ │ ├── laptopdisconnected.svg │ │ │ │ ├── laptoptrusted.svg │ │ │ │ ├── smartphoneattention.svg │ │ │ │ ├── smartphoneconnected.svg │ │ │ │ ├── smartphonedisconnected.svg │ │ │ │ ├── smartphonetrusted.svg │ │ │ │ ├── tabletattention.svg │ │ │ │ ├── tabletconnected.svg │ │ │ │ ├── tabletdisconnected.svg │ │ │ │ └── tablettrusted.svg │ │ └── 24x24 │ │ │ └── status │ │ │ ├── laptopattention.svg │ │ │ ├── laptopconnected.svg │ │ │ ├── laptopdisconnected.svg │ │ │ ├── laptoptrusted.svg │ │ │ ├── smartphoneattention.svg │ │ │ ├── smartphoneconnected.svg │ │ │ ├── smartphonedisconnected.svg │ │ │ ├── smartphonetrusted.svg │ │ │ ├── tabletattention.svg │ │ │ ├── tabletconnected.svg │ │ │ ├── tabletdisconnected.svg │ │ │ └── tablettrusted.svg │ ├── elementary │ │ └── status │ │ │ └── 24 │ │ │ ├── laptopattention.svg │ │ │ ├── laptopconnected.svg │ │ │ ├── laptopdisconnected.svg │ │ │ ├── laptoptrusted.svg │ │ │ ├── smartphoneattention.svg │ │ │ ├── smartphoneconnected.svg │ │ │ ├── smartphonedisconnected.svg │ │ │ ├── smartphonetrusted.svg │ │ │ ├── tabletattention.svg │ │ │ ├── tabletconnected.svg │ │ │ ├── tabletdisconnected.svg │ │ │ └── tablettrusted.svg │ ├── meson.build │ ├── ubuntu-mono-dark │ │ └── status │ │ │ ├── 22 │ │ │ ├── laptopattention.svg │ │ │ ├── laptopconnected.svg │ │ │ ├── laptopdisconnected.svg │ │ │ ├── laptoptrusted.svg │ │ │ ├── smartphoneattention.svg │ │ │ ├── smartphoneconnected.svg │ │ │ ├── smartphonedisconnected.svg │ │ │ ├── smartphonetrusted.svg │ │ │ ├── tabletattention.svg │ │ │ ├── tabletconnected.svg │ │ │ ├── tabletdisconnected.svg │ │ │ └── tablettrusted.svg │ │ │ └── 24 │ │ │ ├── laptopattention.svg │ │ │ ├── laptopconnected.svg │ │ │ ├── laptopdisconnected.svg │ │ │ ├── laptoptrusted.svg │ │ │ ├── smartphoneattention.svg │ │ │ ├── smartphoneconnected.svg │ │ │ ├── smartphonedisconnected.svg │ │ │ ├── smartphonetrusted.svg │ │ │ ├── tabletattention.svg │ │ │ ├── tabletconnected.svg │ │ │ ├── tabletdisconnected.svg │ │ │ └── tablettrusted.svg │ └── ubuntu-mono-light │ │ └── status │ │ ├── 22 │ │ ├── laptopattention.svg │ │ ├── laptopconnected.svg │ │ ├── laptopdisconnected.svg │ │ ├── laptoptrusted.svg │ │ ├── smartphoneattention.svg │ │ ├── smartphoneconnected.svg │ │ ├── smartphonedisconnected.svg │ │ ├── smartphonetrusted.svg │ │ ├── tabletattention.svg │ │ ├── tabletconnected.svg │ │ ├── tabletdisconnected.svg │ │ └── tablettrusted.svg │ │ └── 24 │ │ ├── laptopattention.svg │ │ ├── laptopconnected.svg │ │ ├── laptopdisconnected.svg │ │ ├── laptoptrusted.svg │ │ ├── smartphoneattention.svg │ │ ├── smartphoneconnected.svg │ │ ├── smartphonedisconnected.svg │ │ ├── smartphonetrusted.svg │ │ ├── tabletattention.svg │ │ ├── tabletconnected.svg │ │ ├── tabletdisconnected.svg │ │ └── tablettrusted.svg ├── images │ ├── indicator-kdeconnect.jpg │ ├── indicator.jpg │ ├── meson.build │ └── startup.jpg └── meson.build ├── debian ├── changelog ├── compat ├── control ├── copyright ├── indicator-kdeconnect.install ├── libindicator-kdeconnect.install ├── libindicator-kdeconnect.symbols ├── rules └── source │ └── format ├── meson.build ├── meson_options.txt ├── meson_post_install.py ├── po ├── LINGUAS ├── be.po ├── ca.po ├── cs.po ├── de.po ├── el.po ├── es.po ├── fa.po ├── fr.po ├── he.po ├── hr.po ├── hu.po ├── id.po ├── indicator-kdeconnect.pot ├── it.po ├── lt.po ├── meson.build ├── nb_NO.po ├── nl.po ├── nl_BE.po ├── pl.po ├── pt_BR.po ├── pt_PT.po ├── ru_RU.po ├── sl.po ├── sr.po ├── zh_Hans.po └── zh_Hant.po ├── rpm ├── _service ├── _servicedata ├── indicator-kdeconnect.changes └── indicator-kdeconnect.spec ├── scripts ├── kdeconnect-send │ ├── README.md │ └── kdeconnect-send └── wayland │ ├── README.md │ ├── i_k_w.sh │ └── indicator-kdeconnect-wayland.sh └── src ├── common ├── config-constants.vala.in ├── config-header.vala.in ├── deviceManager.vala ├── dialogs.vala ├── iBatteryPlugin.vala ├── iDaemonPlugin.vala ├── iDevicePlugin.vala ├── iFindMyPhonePlugin.vala ├── iPingPlugin.vala ├── iRemoteKeyboard.vala ├── iSettings.vala ├── iSftpPlugin.vala ├── iSharePlugin.vala ├── iSignals.vala ├── iTelephonyPlugin.vala ├── meson.build ├── sendVia.vala ├── settings.vala └── utils.vala ├── extensions ├── filemanager-c │ ├── meson.build │ └── nautilus │ │ ├── meson.build │ │ ├── mesonl.build │ │ ├── sendvia-kdeconnect-module.c │ │ ├── sendvia-kdeconnect.c │ │ └── sendvia-kdeconnect.h ├── filemanager-python │ ├── caja │ │ └── kdeconnect-send.py │ ├── meson.build │ ├── nautilus │ │ └── kdeconnect-send.py │ └── nemo │ │ └── kdeconnect-send.py ├── generic │ ├── meson.build │ ├── sendvia-kdeconnect.contract │ └── sendvia-kdeconnect.desktop ├── meson.build └── sms │ ├── meson.build │ └── sms.py ├── indicator ├── device.vala ├── firstTimeWizard.vala ├── kdeconnectManager.vala ├── main.vala ├── meson.build └── startupManager.vala ├── meson.build └── module.in /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | obj-*/ 3 | .vscode 4 | debian/ 5 | *.swp 6 | *~ 7 | .buildconfig 8 | uncrustify.cfg 9 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: c 2 | compiler: gcc 3 | sudo: required 4 | dist: xenial 5 | cache: 6 | - apt 7 | before_install: 8 | - sudo add-apt-repository ppa:vala-team -y 9 | - sudo apt -qq update 10 | - sudo apt install -y ninja-build meson valac libgtk-3-dev libappindicator3-dev libgee-0.8-dev gettext kdeconnect python3-requests-oauthlib 11 | before_script: 12 | - sleep 3 13 | script: 14 | - mkdir build 15 | - cd build 16 | - meson .. 17 | - meson configure -Dextensions=python 18 | - ninja 19 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Viko Adi Rahmawan 2 | Steeven Lopes 3 | -------------------------------------------------------------------------------- /CHANGES.md: -------------------------------------------------------------------------------- 1 | # Version 0.9.4 2 | * Add Languages: Greek,Hebrew,Chinese 3 | * Fix Icons Name 4 | 5 | # Version 0.9.3 6 | * Add Option to show device main folders instead of internal storage 7 | 8 | # Version 0.9.2 9 | * Add Languages: Persian, Polish, Norwegian,Slovenian 10 | * Fix English errors on main translation file 11 | 12 | # Version 0.9.1 13 | * Add Languages: Chinese 14 | * Fix Elementary OS App Center app compilation 15 | * Fix Nautilus and Caja send files don't work 16 | * Remove settings option to use custom Elementary Icons 17 | * Make indicator-kdeconnect restart after apply settings 18 | 19 | # Version 0.9.0 20 | * Add support to send files to multiple devices 21 | * Add settings panel 22 | * Users can open settings panel from battery menu item 23 | * Now users can hidde untrusted devices to save space on menu bar 24 | * Users can delete Google Contacts from settings panel 25 | * Fix Elementary OS not show monochrome icons 26 | * Fix bugs on SMS contacts sync 27 | * Add Language: Serbian 28 | 29 | # Version 0.8.2 30 | * Fix bug #64 - SMS only getting 100 contacts 31 | * Added support for sending same SMS to multiple numbers 32 | 33 | # Version 0.8.1 34 | * Fix bug #59 - SMS exec with permission problems 35 | * Fix bug #60 - SMS autocomplete problem with accented letters 36 | * Fix bug #60 - Port 8000 - "address already in use" 37 | 38 | # Version 0.8.0 39 | * Fix bug #51 - Nemo and Caja only show the first device 40 | * Send SMS is now stable and support autocomplete from Google Contacts 41 | 42 | # Version 0.7.1 43 | * Fix bug #51 - Nemo and Caja extensions not working 44 | * Add Language: Lithuanian Language 45 | 46 | # Version 0.7.0 47 | * Fix bug #46 - Nautilus freeze on copy/paste - URGENT 48 | * Fix Desktop Computers don't appear on kdeconnect-send context menu 49 | * New UI for kdeconnect-send (move controls to header bar) 50 | and a button to reload devices 51 | * Add kdeconnect-send to Thunar 'send to' context menu 52 | * File manager extensions now is translated 53 | * Add Languages: French, Spanish, Catalan, Italian 54 | * Kdeconnect-send script for file manager not supported 55 | by extension can send multiple files 56 | * Provide OpenSuse repo - Thanks to Raúl García 57 | 58 | # Version 0.6.0 59 | * Monochrome icons for Gnome 60 | * Add German, Dutch, Czech, Croatian and Hungarian Language 61 | * KDEConnect-send and Elementary OS can send multiple files 62 | * Now you can Send SMS as a Beta Feature 63 | 64 | # Version 0.5.0 65 | * Bugs Fixes 66 | * Add Languages: Brazilian Portuguese 67 | * Add icons for Elementary OS 68 | * Trusted devices now appear on context menu extension to send files directly 69 | 70 | # Version 0.4.0 71 | * New native extension for Nautilus, Caja and Nemo 72 | * Now Indicator-kdeconnect provide translations 73 | * Add Languages: Portuguese Portugal, Russian Language 74 | * Provide CMake uninstall process 75 | 76 | # Version 0.3.0 77 | * Bugs Fixes 78 | * New default icons 79 | * New Icons for ubuntu based desktops 80 | * New Images for First time you wizard 81 | 82 | # Version 0.2.0 83 | * Bugs Fixes 84 | * Multiple files send from the indicator 85 | * Menu to ring and find your phone 86 | * Icons can low and higth color case device is paired or unpaired 87 | * From the device name menu you can get encryption information 88 | * From the device status menu item you can open kdeconnect settings 89 | 90 | # Version 0.1.0 91 | * Initial public release 92 | -------------------------------------------------------------------------------- /CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | ICONS: 2 | Alxey Varfolomeev 3 | 4 | TRANSLATORS: 5 | Alxey Varfolomeev 6 | Heimen Stoffels 7 | Felix Ahlbrecht 8 | KAMiKAZOW 9 | Péter Báthory 10 | Pavel Borecki 11 | gogogogi 12 | Michal Čihař 13 | Bajoja 14 | Rodney78 15 | Detobel 16 | Adolfo Jayme-Barrientos 17 | Bruno Guerreiro 18 | Moo 19 | Seitbekir 20 | Antonio 21 | Slobodan Simić 22 | Vdragon 23 | thomazio 24 | Amin Khozaei 25 | Jure Slak 26 | postsorino 27 | Kornelijus 28 | Yaron Shahrabani 29 | 30 | CODERS: 31 | Tomas Ravinskas 32 | 33 | OTHERS: 34 | Raúl García 35 | Pousa Duarte 36 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | to compile you should have 2 | -> meson 3 | -> ninja 4 | -> libgee-0.8-dev 5 | -> gtk+-3.0-dev 6 | -> libappindicator3-dev 7 | -> valac 8 | -> kde-cli-tools 9 | 10 | on Ubuntu: 11 | -> sudo apt install libgtk-3-dev 12 | -> sudo apt install libappindicator3-dev 13 | -> sudo apt install cmake 14 | -> sudo apt install valac 15 | -> sudo apt install libgee-0.8-dev 16 | -> sudo apt install python3-requests-oauthlib 17 | -> sudo apt install kde-cli-tools 18 | -> sudo apt install libjson-glib-dev 19 | -> sudo apt install python-nautilus (if you use Nautilus) 20 | python-nemo (if you use Nemo) 21 | python-caja (if you use Caja) 22 | 23 | on Fedora: 24 | -> sudo dnf install gtk3-devel 25 | -> sudo dnf install libappindicator-gtk3-devel 26 | -> sudo dnf install cmake 27 | -> sudo dnf install vala-devel 28 | -> sudo dnf install libgee-0.8-dev 29 | -> sudo dnf install python3-requests-oauthlib 30 | -> sudo dnf install kde-cli-tools 31 | -> sudo dnf install json-glib-devel 32 | -> sudo dnf install nautilus-python (if you use Nautilus) 33 | nemo-python (if you use Nemo) 34 | caja-python (if you use Caja) 35 | 36 | 37 | Obviously you should install kdeconnect 1.3.0 or up to use the features 38 | 39 | compile: 40 | mkdir build 41 | cd build 42 | meson .. --prefix=/usr/ --libdir=/usr/lib/ 43 | meson configure -Dextensions=python 44 | ninja 45 | ninja install 46 | 47 | uninstall: 48 | sudo ninja uninstall 49 | 50 | enjoy! 51 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Note 2 | ----- 3 | I am no longer maintaining this project, since I am no longer an Android user, I hope that someone else will be able to continue this, now a big thank you to everyone who somehow helped to develop this project, either with code, images, translations, bug reporting, packaging and distribution. 4 | 5 | KDE Connect Indicator 6 | ===================== 7 | [![Translation Status](https://hosted.weblate.org/widgets/indicator-kde-connect/-/svg-badge.svg)](https://hosted.weblate.org/engage/indicator-kde-connect/?utm_source=widget) 8 | [![Build Status](https://travis-ci.org/Bajoja/indicator-kdeconnect.svg?branch=master)](https://travis-ci.org/Bajoja/indicator-kdeconnect) 9 | 10 | ![indicator-kdeoconnect](https://raw.githubusercontent.com/Bajoja/indicator-kdeconnect/master/data/images/indicator-kdeconnect.jpg) 11 | 12 | This Indicator is written to make [KDE Connect](https://community.kde.org/KDEConnect) usable in desktops without KDE Plasma, such as Ubuntu Unity and Pantheon. 13 | It started as an [AppIndicator](https://unity.ubuntu.com/projects/appindicators/), but you can send files and URLs easily through KDE Connect with sendvia-kdeconnect. 14 | 15 | Features 16 | ------- 17 | 1. Indicator in the panel which show your devices, with its name, status, and battery. 18 | 2. Menu to request for pairing and unpairing. 19 | 3. Menu to accept and reject pairing 20 | 4. Menu to start SFTP and open a file browser. 21 | 5. Menu to send files. 22 | 6. Menu to send URLs. 23 | 7. Menu to send SMS. 24 | 8. Menu to ring and find your phone. 25 | 9. From the device battery menu item you can open KDE Connect settings. 26 | 10. A Window, `indicator-kdeconnect -c` to help sending files and choosing device. 27 | 11. A .contractor file, so you can send files from any of elementary OS's applications. 28 | 12. A .desktop file, so you can send files from file manager like Thunar. 29 | 13. Python extensions for Nautilus, Nemo and Caja, you can send files directly from them. 30 | 31 | Compatibility 32 | ------- 33 | Any desktop that supports KStatusNotifierItem/AppIndicator icons should just work – Budgie, Cinnamon, LXDE, Pantheon, Unity, and many others. 34 | The only major oddball is Gnome where you need an additional [Gnome Shell extension](https://extensions.gnome.org/extension/615/appindicator-support/) for proper support. 35 | 36 | Another solution for Gnome Shell is consider to use [KDE Connect implementation for Gnome Shell 3.24+](https://github.com/andyholmes/gnome-shell-extension-gsconnect). It's a full integrated extension with the same features. 37 | 38 | After changes on KDE Connect this will work only in KDE Connect 1.3.0 and up which can be problematic on Linux distributions released before August 2016. 39 | 40 | Installation 41 | ------- 42 | - Arch Linux 43 | There is a package available in the [AUR](https://aur.archlinux.org/packages/indicator-kdeconnect-git) 44 | 45 | - Fedora and OpenSUSE [Visit](https://software.opensuse.org//download.html?project=home%3ABajoja&package=indicator-kdeconnect) and select your operating system. 46 | 47 | - Ubuntu and Linux Mint 48 | Ubuntu 16.04, 16.10, 17.04 and Linux Mint 18.1 users can use this PPA: 49 | ``` 50 | sudo add-apt-repository ppa:webupd8team/indicator-kdeconnect 51 | sudo apt update 52 | sudo apt install kdeconnect indicator-kdeconnect 53 | ``` 54 | OBS: This PPA is outdated, looking for new maintainer 55 | 56 | - Flatpak 57 | Flatpak source can be found [here](https://github.com/flathub/com.github.bajoja.indicator-kdeconnect) 58 | 59 | - From the Source 60 | Check the INSTALL file 61 | 62 | Usage Suggestions 63 | ------- 64 | To make life better you can try to apply this: 65 | 66 | 1. Add KDE Connect Indicator to your startup applications, on your System Setting if is not. 67 | 2. Nautilus, Nemo, Caja, Pantheon-files and Thunar users have native extensions installed by default, make sure you have, 68 | `python-nautilus`, `python-nemo` or `python-caja` installed to use it. 69 | 3. If your files manager is not supported by extensions create a action entry with `indicator-kdeconnect -c %F` as command. 70 | Or you can use the script present on the [scripts folder](https://github.com/Bajoja/indicator-kdeconnect/tree/master/scripts/kdeconnect-send), adding it to your file manager script folder. 71 | 4. If you want to change settings for indicator-kdeconnect use `indicator-kdeconnect -s`. 72 | 5. If you are having troubles under Wayland install this [script](https://github.com/Bajoja/indicator-kdeconnect/tree/master/scripts/wayland). 73 | 74 | 75 | Please report issues and suggestion [here](https://github.com/Bajoja/indicator-kdeconnect/issues) 76 | 77 | And help translate this project [here](https://hosted.weblate.org/projects/indicator-kde-connect/translations/) 78 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | - Need a Icon to respresent Attention,so if some designer can do something, will be welcome 2 | -------------------------------------------------------------------------------- /data/configs/com.indicator-kdeconnect.appdata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.indicator-kdeconnect.desktop 4 | CC0-1.0 5 | LGPL-2.1+ 6 | Indicator-KDEConnect 7 | 8 | AppIndicator for KDE Connect 9 | 10 | 11 | 12 |

13 | This Indicator is written to make KDE Connect usable in desktops without KDE Plasma, 14 | such as Ubuntu Unity and Pantheon. It started as an AppIndicator, 15 | but you can send files and URLs easily through KDE Connect with kdeconnect-send. 16 |

17 |

Features:

18 |
    19 |
  • Indicator in the panel which show your devices, with its name, status, and battery.
  • 20 |
  • Menu to request for pairing and unpairing.
  • 21 |
  • Menu to accept ans reject pairing
  • 22 |
  • Menu to start SFTP and open a file browser.
  • 23 |
  • Menu to send files.
  • 24 |
  • Menu to send URLs.
  • 25 |
  • Menu to send SMS.
  • 26 |
  • Menu to ring and find your phone.
  • 27 |
  • From the device battery menu item you can open KDE Connect settings.
  • 28 |
  • A small program, `sendvia-kdeconnect` to help sending files and choosing device.
  • 29 |
  • A .contractor file, so you can send files from any of elementary OS's applications.
  • 30 |
  • A .desktop file, so you can send files from file manager like Thunar.
  • 31 |
  • Python extensions for Nautilus, Nemo and Caja, you can send files directly from them.
  • 32 |
33 |

34 | Any desktop that supports KStatusNotifierItem/AppIndicator icons should just work: 35 | – Budgie, Cinnamon, LXDE, Pantheon, Unity, and many others. 36 | The only major oddball is Gnome where you need an additional Gnome Shell extension for proper support. 37 | After changes on KDE Connect this will work only in KDE Connect 1.0.0 and up which can be problematic 38 | on Linux distributions released before August 2016. 39 |

40 |
41 | 42 | 43 | 44 | https://raw.githubusercontent.com/Bajoja/indicator-kdeconnect/master/data/images/indicator-kdeconnect.jpg 45 | Features 46 | 47 | 48 | 49 | 50 | Network 51 | Utility 52 | Telephony 53 | GTK 54 | 55 | 56 | https://github.com/Bajoja/indicator-kdeconnect 57 | 58 | https://github.com/Bajoja/indicator-kdeconnect/issues?q=is%3Aissue+is%3Aopen+label%3Aquestion 59 | https://github.com/Bajoja/indicator-kdeconnect/issues 60 | 61 | 62 | indicator-kdeconnect 63 | 64 | 65 | indicator-kdeconnect 66 | 67 | 68 | Steeven Lopes 69 | steevenlopes@outlook.com 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |
90 | -------------------------------------------------------------------------------- /data/configs/com.indicator-kdeconnect.gschema.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | Show only paired devices 7 | 8 | Show only paired devie on the indicator 9 | 10 | 11 | 12 | 13 | true 14 | Show info menu 15 | 16 | Show info menu 17 | 18 | 19 | 20 | 21 | false 22 | Show browse items 23 | 24 | Show browse items 25 | 26 | 27 | 28 | 29 | true 30 | Show send URL 31 | 32 | Show option to send URL 33 | 34 | 35 | 36 | 37 | true 38 | Show send SMS 39 | 40 | Show send SMS item 41 | 42 | 43 | 44 | 45 | true 46 | Show find my device menu 47 | 48 | Show find my device menu 49 | 50 | 51 | 52 | 53 | false 54 | Show Ping menu 55 | 56 | Show Ping, and Ping Message menu 57 | 58 | 59 | 60 | 61 | false 62 | Show Remote Keybord menu 63 | 64 | Show Remote Keybord menu 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /data/configs/meson.build: -------------------------------------------------------------------------------- 1 | #GSettings 2 | install_data('com.indicator-kdeconnect.gschema.xml', 3 | install_dir: join_paths(get_option('datadir'), 4 | 'glib-2.0', 5 | 'schemas')) -------------------------------------------------------------------------------- /data/desktop/indicator-kdeconnect-settings.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=KDE Connect Indicator Settings 3 | Comment=An awesome system for Desktop-Phone continuity. 4 | Exec=indicator-kdeconnect -s 5 | Terminal=false 6 | Type=Application 7 | StartupNotify=true 8 | Icon=kdeconnect 9 | Categories=GNOME;GTK;System; -------------------------------------------------------------------------------- /data/desktop/indicator-kdeconnect.desktop.in: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Name=KDE Connect Indicator 3 | Comment=An awesome system for Desktop-Phone continuity. 4 | Exec=indicator-kdeconnect 5 | Terminal=false 6 | Type=Application 7 | StartupNotify=true 8 | Icon=kdeconnect 9 | Categories=GNOME;GTK;System; -------------------------------------------------------------------------------- /data/desktop/meson.build: -------------------------------------------------------------------------------- 1 | applicationsdir = join_paths(get_option('datadir'), 2 | 'applications') 3 | 4 | configure_file(output: 'indicator-kdeconnect.desktop', 5 | input: 'indicator-kdeconnect.desktop.in', 6 | configuration: indicator_kdeconnect_conf, 7 | install_dir: applicationsdir) 8 | 9 | configure_file(output: 'indicator-kdeconnect-settings.desktop', 10 | input: 'indicator-kdeconnect-settings.desktop.in', 11 | configuration: indicator_kdeconnect_conf, 12 | install_dir: applicationsdir) -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/laptopattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/laptopconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/laptopdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/laptoptrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/smartphoneattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/smartphoneconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/smartphonedisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/smartphonetrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/tabletattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/tabletconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/tabletdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/16x16/status/tablettrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/laptopattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/laptopconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/laptopdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/laptoptrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/smartphoneattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/smartphoneconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/smartphonedisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/smartphonetrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/tabletattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/tabletconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/tabletdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/22x22/status/tablettrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/laptopattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/laptopconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/laptopdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/laptoptrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/smartphoneattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/smartphoneconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/smartphonedisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/smartphonetrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/tabletattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/tabletconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/tabletdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/Adwaita/24x24/status/tablettrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/laptopattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/laptopconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/laptopdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/laptoptrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/smartphoneattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/smartphoneconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/smartphonedisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/smartphonetrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/tabletattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/tabletconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/tabletdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/elementary/status/24/tablettrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /data/icons/meson.build: -------------------------------------------------------------------------------- 1 | icondir = join_paths(get_option('datadir'), 'icons') 2 | 3 | install_subdir('Adwaita', 4 | install_dir : icondir) 5 | 6 | if run_command('test', '-d', join_paths(icondir, 'ubuntu-mono-dark')).returncode() == 0 7 | install_subdir('ubuntu-mono-dark', 8 | install_dir : icondir) 9 | endif 10 | 11 | if run_command('test', '-d', join_paths(icondir, 'ubuntu-mono-light')).returncode() == 0 12 | install_subdir('ubuntu-mono-light', 13 | install_dir : icondir) 14 | endif 15 | 16 | if run_command('test', '-d', join_paths(icondir, 'elementary')).returncode() == 0 17 | install_subdir('elementary', 18 | install_dir : icondir) 19 | endif 20 | 21 | if run_command('gtk-update-icon-cache', '-t', '-f', icondir).returncode() == 0 22 | message('Update icons cache') 23 | endif -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/laptopattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/laptopconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/laptopdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/laptoptrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/smartphoneattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/smartphoneconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/smartphonedisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/smartphonetrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/tabletattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/tabletconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/tabletdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/22/tablettrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/laptopattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/laptopconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/laptopdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/laptoptrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/smartphoneattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/smartphoneconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/smartphonedisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/smartphonetrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/tabletattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/tabletconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/tabletdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-dark/status/24/tablettrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/laptopattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/laptopconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/laptopdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/laptoptrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/smartphoneattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/smartphoneconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/smartphonedisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/smartphonetrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/tabletattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/tabletconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/tabletdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/22/tablettrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/laptopattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/laptopconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/laptopdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/laptoptrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/smartphoneattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/smartphoneconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/smartphonedisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/smartphonetrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/tabletattention.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/tabletconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/tabletdisconnected.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/icons/ubuntu-mono-light/status/24/tablettrusted.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 31 | 35 | 36 | -------------------------------------------------------------------------------- /data/images/indicator-kdeconnect.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b4j4/indicator-kdeconnect/669bdd5e1a5662983932c08a4323105a900b6877/data/images/indicator-kdeconnect.jpg -------------------------------------------------------------------------------- /data/images/indicator.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b4j4/indicator-kdeconnect/669bdd5e1a5662983932c08a4323105a900b6877/data/images/indicator.jpg -------------------------------------------------------------------------------- /data/images/meson.build: -------------------------------------------------------------------------------- 1 | install_subdir('', 2 | install_dir : join_paths(get_option('datadir'), 3 | meson.project_name())) -------------------------------------------------------------------------------- /data/images/startup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b4j4/indicator-kdeconnect/669bdd5e1a5662983932c08a4323105a900b6877/data/images/startup.jpg -------------------------------------------------------------------------------- /data/meson.build: -------------------------------------------------------------------------------- 1 | data_list = [ 2 | 'configs', 3 | 'desktop', 4 | 'icons', 5 | 'images' 6 | ] 7 | foreach data : data_list 8 | subdir(data) 9 | endforeach -------------------------------------------------------------------------------- /debian/changelog: -------------------------------------------------------------------------------- 1 | indicator-kdeconnect (0.9.4) precise; urgency=low 2 | * Add Languages: Greek, Hebrew, Chinese 3 | * Fix Icons Name 4 | 5 | -- Bajoja Sun, 08 Apr 2018 00:00:00 -0000 6 | 7 | indicator-kdeconnect (0.9.3) precise; urgency=low 8 | * Add Option to show device main folders instead of internal storage 9 | 10 | -- Bajoja Fri, 10 Nov 2017 00:00:00 -0000 11 | 12 | indicator-kdeconnect (0.9.2) precise; urgency=low 13 | * Add Languages: Persian, Polish, Norwegian,Slovenian 14 | * Fix English errors on main translation file 15 | 16 | -- Bajoja Sun, 24 Sep 2017 00:00:00 -0000 17 | 18 | indicator-kdeconnect (0.9.1) precise; urgency=low 19 | * Add Languages: Chinese 20 | * Fix Elementary OS App Center app compilation 21 | * Fix Nautilus and Caja send files don't work 22 | * Remove settings option to use custom Elementary Icons 23 | * Make indicator-kdeconnect restart after apply settings 24 | 25 | -- Bajoja Thu, 04 May 2017 00:00:00 -0000 26 | 27 | indicator-kdeconnect (0.9.0) precise; urgency=low 28 | * Add support to send files to multiple devices 29 | * Add settings panel 30 | * Users can open settings panel from battery menu item 31 | * Now users can hidde untrusted devices to save space on menu bar 32 | * Users can delete Google Contacts from settings panel 33 | * Fix Elementary OS not show monochrome icons 34 | * Fix bugs on SMS contacts sync 35 | * Add Language: Serbian 36 | 37 | -- Bajoja Mon, 16 May 2017 00:00:00 -0000 38 | 39 | indicator-kdeconnect (0.8.2) precise; urgency=low 40 | * Fix bug #64 - SMS only getting 100 contacts 41 | * Added support for sending same SMS to multiple numbers 42 | 43 | -- Bajoja Thu, 04 May 2017 00:00:00 -0000 44 | 45 | indicator-kdeconnect (0.8.1) precise; urgency=low 46 | * Fix bug #59 - SMS exec with permission problems 47 | * Fix bug #60 - SMS autocomplete problem with accented letters 48 | * Fix bug #60 - Port 8000 - "address already in use" 49 | 50 | -- Bajoja Thu, 27 Apr 2017 00:00:00 -0000 51 | 52 | indicator-kdeconnect (0.8.0) precise; urgency=low 53 | * Fix bug #51 - Nemo and Caja only show the first device 54 | * Send SMS is now stable and support autocomplete from Google Contacts 55 | 56 | -- Bajoja Sat, 20 Apr 2017 00:00:00 -0000 57 | 58 | indicator-kdeconnect (0.7.1) precise; urgency=low 59 | * Fix bug #51 - Nemo and Caja extensions not working 60 | * Add Language: Lithuanian Language 61 | 62 | -- Bajoja Sat, 08 Apr 2017 21:30:00 -0000 63 | 64 | indicator-kdeconnect (0.7) precise; urgency=low 65 | * Fix bug #46 - Nautilus freeze on copy/paste - URGENT 66 | 67 | * Fix Desktop Computers don't appear on kdeconnect-send context menu 68 | 69 | * New UI for kdeconnect-send (move controls to header bar) 70 | and a button to reload devices 71 | 72 | * Add kdeconnect-send to Thunar 'send to' context menu 73 | 74 | * File manager extensions now is translated 75 | 76 | * Add Languages: French, Spanish, Catalan, Italian 77 | 78 | * Kdeconnect-send script for file manger not supported 79 | by extension can send multiple files 80 | 81 | * Provide OpenSuse repo 82 | 83 | -- Bajoja Thu, 23 Mar 2017 23:00:00 -0000 84 | 85 | indicator-kdeconnect (0.6) precise; urgency=low 86 | * Monochrome icons for Gnome 87 | 88 | * Add German, Dutch, Czech, Croatian and Hungarian Language 89 | 90 | * KDEConnect-send and Elementary OS can send multiple files 91 | 92 | * Now you can Send SMS as a Beta Feature 93 | 94 | -- Bajoja Thu, 26 Jan 2017 02:00:00 -0000 95 | 96 | indicator-kdeconnect (0.5) precise; urgency=low 97 | * Bugs Fixes 98 | 99 | * Add Brazilian Portuguese Language 100 | 101 | * Add icons for Elementary OS 102 | 103 | * Trusted devices now appear on context menu extension to send files directly 104 | 105 | -- Bajoja Tue, 03 Jan 2017 18:00:00 -0000 106 | 107 | indicator-kdeconnect (0.4) precise; urgency=low 108 | * New native extension for Nautilus, Caja and Nemo 109 | 110 | * Now Indicator-kdeconnect provide translations 111 | 112 | * Add Portuguese Portugal and Russian Language 113 | 114 | * Provide CMake uninstall process 115 | 116 | -- Bajoja Thu, 24 Nov 2016 17:00:00 -0000 117 | 118 | indicator-kdeconnect (0.3) precise; urgency=low 119 | 120 | * Bug Fixes. 121 | 122 | * New default icons 123 | 124 | * New Icons for ubuntu based desktops. 125 | 126 | * New Images for First time wizard. 127 | 128 | -- Bajoja Mon, 15 Nov 2016 16:44:00 -0000 129 | 130 | indicator-kdeconnect (0.2) precise; urgency=low 131 | 132 | * Bug Fixes. 133 | 134 | * Features: 135 | - Multiple files send from the indicator 136 | - Menu to ring and find your phone 137 | - Icons can low and higth color case device is paired or unpaired 138 | - From the device name menu you can get encryption information 139 | - From the device status menu item you can open kdeconnect settings. 140 | 141 | -- Bajoja Sun, 06 Nov 2016 21:00:12 -0000 142 | 143 | indicator-kdeconnect (0.1) precise; urgency=low 144 | 145 | * Initial Release. 146 | 147 | -- Viko Adi Rahmawan Thu, 20 Aug 2012 03:23:19 -0500 148 | -------------------------------------------------------------------------------- /debian/compat: -------------------------------------------------------------------------------- 1 | 9 2 | -------------------------------------------------------------------------------- /debian/control: -------------------------------------------------------------------------------- 1 | Source: indicator-kdeconnect 2 | Section: net 3 | Priority: optional 4 | Maintainer: Bajoja 5 | Build-Depends: cmake (>= 2.8), 6 | debhelper (>= 10.3), 7 | dh-python, 8 | libgtk-3-dev (>=3.6), 9 | libappindicator3-dev, 10 | libgee-0.8-dev, 11 | libjson-glib-dev, 12 | pkg-config, 13 | python3, 14 | meson, 15 | valac (>=0.40) 16 | Standards-Version: 4.1.1 17 | Homepage: https://github.com/Bajoja/indicator-kdeconnect 18 | Vcs-Browser: https://github.com/Bajoja/indicator-kdeconnect 19 | Vcs-Git: https://github.com/Bajoja/indicator-kdeconnect.git 20 | 21 | Package: indicator-kdeconnect 22 | Architecture: any 23 | Depends: ${misc:Depends}, ${shlibs:Depends}, ${python3:Depends}, python3-requests-oauthlib, kdeconnect (>=1.3.0) 24 | Suggests: python-nautilus, python-caja, python-nemo 25 | Description: Indicator for KDE Connect 26 | KDE Connect is a tool to integrate the KDE Plasma Workspace with your 27 | smartphone and similar devices. This indicator brings this integration 28 | to any system using libappindicator. 29 | 30 | Package: libindicator-kdeconnect 31 | Architecture: any 32 | Depends: ${misc:Depends}, ${shlibs:Depends}, kdeconnect (>=1.3.0) 33 | Description: Shared libraries for the Indicator for KDE Connect 34 | This package contains the Indicator for KDE Connect's shared libraries 35 | -------------------------------------------------------------------------------- /debian/copyright: -------------------------------------------------------------------------------- 1 | Format: http://dep.debian.net/deps/dep5 2 | Upstream-Name: indicator-kdeconnect 3 | Source: https://github.com/Bajoja/indicator-kdeconnect 4 | 5 | Files: * 6 | Copyright: 2013 Viko Adi Rahmawan 7 | 2016 Bajoja 8 | License: LGPL-2.1+ 9 | 10 | Files: data/configs/com.indicator-kdeconnect.appdata.xml 11 | Copyright: 2018 Bajoja 12 | License: CC0-1.0 13 | 14 | License: LGPL-2.1+ 15 | This package is free software; you can redistribute it and/or 16 | modify it under the terms of the GNU Lesser General Public 17 | License as published by the Free Software Foundation; either 18 | version 2.1 of the License, or (at your option) any later version. 19 | . 20 | This package is distributed in the hope that it will be useful, 21 | but WITHOUT ANY WARRANTY; without even the implied warranty of 22 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23 | Lesser General Public License for more details. 24 | . 25 | You should have received a copy of the GNU Lesser General Public 26 | License along with this package; if not, write to the Free Software 27 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 28 | . 29 | On Debian systems, the complete text of the GNU Lesser General 30 | Public License can be found in `/usr/share/common-licenses/LGPL-2.1'. 31 | 32 | License: CC0-1.0 33 | The person who associated a work with this deed has dedicated the work to the 34 | public domain by waiving all of his or her rights to the work worldwide under 35 | copyright law, including all related and neighboring rights, to the extent 36 | allowed by law. 37 | . 38 | You can copy, modify, distribute and perform the work, even for commercial 39 | purposes, all without asking permission. See Other Information below. 40 | . 41 | On Debian systems, the complete text of the CC0 1.0 Universal (CC0 1.0) Public 42 | Domain Dedication can be found in `/usr/share/common-licenses/CC0-1.0'. 43 | -------------------------------------------------------------------------------- /debian/indicator-kdeconnect.install: -------------------------------------------------------------------------------- 1 | usr/bin/* 2 | usr/share/* 3 | -------------------------------------------------------------------------------- /debian/libindicator-kdeconnect.install: -------------------------------------------------------------------------------- 1 | usr/lib/* 2 | -------------------------------------------------------------------------------- /debian/libindicator-kdeconnect.symbols: -------------------------------------------------------------------------------- 1 | libindicator-kdeconnect.so libindicator-kdeconnect #MINVER# 2 | -------------------------------------------------------------------------------- /debian/rules: -------------------------------------------------------------------------------- 1 | #!/usr/bin/make -f 2 | # -*- makefile -*- 3 | # Sample debian/rules that uses debhelper. 4 | # This file was originally written by Joey Hess and Craig Small. 5 | # As a special exception, when this file is copied by dh-make into a 6 | # dh-make output file, you may use that output file without restriction. 7 | # This special exception was added by Craig Small in version 0.37 of dh-make. 8 | 9 | # Uncomment this to turn on verbose mode. 10 | #export DH_VERBOSE=1 11 | 12 | %: 13 | dh $@ --with python3 14 | -------------------------------------------------------------------------------- /debian/source/format: -------------------------------------------------------------------------------- 1 | 3.0 (native) 2 | -------------------------------------------------------------------------------- /meson.build: -------------------------------------------------------------------------------- 1 | project('indicator-kdeconnect', 2 | 'vala', 3 | 'c', 4 | version : '0.9.4', 5 | license : 'GPL-2.1+') 6 | 7 | # Project web site 8 | project_web = 'https://github.com/Bajoja/indicator-kdeconnect' 9 | # Where to report bugs; usually either an e-mail address or an issue 10 | # tracker URL. 11 | project_bugs = 'https://github.com/Bajoja/indicator-kdeconnect/issues' 12 | 13 | short_description = 'AppIndicator for KDEConnect' 14 | 15 | api_version = '1.3' 16 | 17 | ver_arr = meson.project_version().split('.') 18 | 19 | as_major_version = ver_arr[0] 20 | as_minor_version = ver_arr[0] 21 | as_micro_version = ver_arr[0] 22 | 23 | add_project_arguments('--enable-checking', 24 | language : 'vala') 25 | 26 | add_project_arguments('-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()), 27 | language : 'c') 28 | 29 | buildtype = get_option('buildtype') 30 | 31 | if buildtype.startswith('debug') 32 | message('Build type: @0@'.format(buildtype)) 33 | add_global_arguments('--define=DEBUG_BUILD', language : 'vala') 34 | endif 35 | 36 | executable_subdir = join_paths(get_option('datadir'), 37 | meson.project_name()) 38 | 39 | # The name of the shared library. Note that a "lib" prefix will be 40 | # added automatically on systems where that is the convention. 41 | package_name = meson.project_name() + '-' + api_version 42 | 43 | meson_dir = meson.current_source_dir() 44 | 45 | # Name of the GObject Introspection repository for the library. 46 | gir_name = 'indicator-kdeconnect-' + api_version 47 | 48 | subdir('src') 49 | 50 | subdir('data') 51 | 52 | xgettext = find_program('xgettext', required : false) 53 | if xgettext.found() 54 | subdir('po') 55 | endif 56 | 57 | doc_subdir = join_paths(get_option('datadir'), 58 | 'doc', 59 | meson.project_name()) 60 | 61 | install_data('CHANGES.md', 62 | 'README.md', 63 | install_dir: doc_subdir) 64 | 65 | licenses_subdir = join_paths(get_option('datadir'), 66 | 'licenses', 67 | meson.project_name()) 68 | 69 | install_data('COPYING', 70 | install_dir: licenses_subdir) -------------------------------------------------------------------------------- /meson_options.txt: -------------------------------------------------------------------------------- 1 | option('documentation', type : 'boolean', value : false) 2 | option('extensions', type : 'string', value : 'NULL') -------------------------------------------------------------------------------- /meson_post_install.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | 3 | import os 4 | import subprocess 5 | 6 | schemadir = os.path.join(os.environ['MESON_INSTALL_PREFIX'], 'share', 'glib-2.0', 'schemas') 7 | bindir = os.path.join(os.environ['MESON_INSTALL_PREFIX'], 'bin', 'indicator-kdeconnect') 8 | libdir = os.path.join(os.environ['MESON_INSTALL_PREFIX'], 'lib', 'libindicator-kdeconnect.so') 9 | smsdir = os.path.join(os.environ['MESON_INSTALL_PREFIX'], 'bin', 'sms') 10 | 11 | if not os.environ.get('DESTDIR'): 12 | print('Compiling indicator-kdeconnect schemas on '+schemadir+'...') 13 | subprocess.call(['glib-compile-schemas', schemadir]) 14 | print('Linking indicator-kdeconnect '+bindir+'...') 15 | subprocess.call(['ln', bindir, '/lib']) 16 | print('Linking libindicator-kdeconnect.so '+libdir+'...') 17 | subprocess.call(['ln', libdir, '/bin']) 18 | print('Linking sms '+smsdir+'...') 19 | subprocess.call(['ln', smsdir, '/bin']) 20 | print('Execution permition sms '+smsdir+'...') 21 | subprocess.call(['chmod', '+x', smsdir]) 22 | -------------------------------------------------------------------------------- /po/LINGUAS: -------------------------------------------------------------------------------- 1 | be ca cs de el es fa fr he hr hu id it lt nb_NO nl nl_BE pl pt_BR pt_PT ru_RU sl sr zh_Hans zh_Hant 2 | -------------------------------------------------------------------------------- /po/meson.build: -------------------------------------------------------------------------------- 1 | i18n = import('i18n') 2 | i18n.gettext(meson.project_name()) 3 | -------------------------------------------------------------------------------- /rpm/_service: -------------------------------------------------------------------------------- 1 | 2 | 3 | git 4 | https://github.com/Bajoja/indicator-kdeconnect.git 5 | indicator-kdeconnect 6 | @PARENT_TAG@~git%cd 7 | enable 8 | 9 | 10 | *.tar 11 | xz 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /rpm/_servicedata: -------------------------------------------------------------------------------- 1 | 2 | 3 | https://github.com/Bajoja/indicator-kdeconnect.git 4 | c694300619d2346d3c0950c966ddba4f7fe3562d 5 | 6 | 7 | -------------------------------------------------------------------------------- /rpm/indicator-kdeconnect.changes: -------------------------------------------------------------------------------- 1 | Sun Apr 08 00:00:00 UTC 2018 - 2 | - Update to version 0.9.4: 3 | * Add Languages: Greek,Hebrew,Chinese 4 | * Fix Icons Name 5 | 6 | ------------------------------------------------------------------- 7 | 8 | Fri Nov 10 00:00:00 UTC 2017 - 9 | - Update to version 0.9.3: 10 | * Add Option to show device main folders instead of internal storage 11 | 12 | ------------------------------------------------------------------- 13 | 14 | Sun Set 24 00:00:00 UTC 2017 - 15 | - Update to version 0.9.2: 16 | * Add Languages: Persian, Polish, Norwegian,Slovenian 17 | * Fix English errors on main translation file 18 | 19 | ------------------------------------------------------------------- 20 | 21 | Thu Jul 18 00:00:00 UTC 2017 - 22 | - Update to version 0.9.1: 23 | * Add Languages: Chinese 24 | * Fix Elementary OS App Center app compilation 25 | * Fix Nautilus and Caja send files don't work 26 | * Remove settings option to use custom Elementary Icons 27 | * Make indicator-kdeconnect restart after apply settings 28 | 29 | ------------------------------------------------------------------- 30 | Mon May 16 00:00:00 UTC 2017 - 31 | - Update to version 0.9.0: 32 | * Add support to send files to multiple devices 33 | * Add settings panel 34 | * Users can open settings panel from battery menu item 35 | * Now users can hidde untrusted devices to save space on menu bar 36 | * Users can delete Google Contacts from settings panel 37 | * Fix Elementary OS not show monochrome icons 38 | * Fix bugs on SMS contacts sync 39 | * Add Language: Serbian 40 | 41 | ------------------------------------------------------------------- 42 | Thu May 04 00:00:00 UTC 2017 - 43 | - Update to version 0.8.2: 44 | * Fix bug #64 - SMS only getting 100 contacts 45 | * Added support for sending same SMS to multiple numbers 46 | 47 | ------------------------------------------------------------------- 48 | Thu Apr 27 00:00:00 UTC 2017 - 49 | 50 | - Update to version 0.8.1: 51 | * Fix bug #59 - SMS exec with permission problems 52 | * Fix bug #60 - SMS autocomplete problem with accented letters 53 | * Fix bug #60 - Port 8000 - "address already in use" 54 | 55 | ------------------------------------------------------------------- 56 | Sat Apr 22 00:00:00 UTC 2017 - pousaduarte@gmail.com 57 | 58 | - Update to version 0.8.0: 59 | * Fix bug #51 - Nemo and Caja only show the first device 60 | * Send SMS is now stable and support autocomplete from Google Contacts 61 | 62 | ------------------------------------------------------------------- 63 | Wed Apr 19 21:59:11 UTC 2017 - pousaduarte@gmail.com 64 | 65 | - Update to version 0.7.1: 66 | * Translated using Weblate (Portuguese (Portugal)) 67 | * Translated using Weblate (Lithuanian) 68 | * Translated using Weblate (Russian) 69 | 70 | -------------------------------------------------------------------------------- /scripts/kdeconnect-send/README.md: -------------------------------------------------------------------------------- 1 | "kdeconnect-send" is a script that allow you send files from non supperted file manager extensions. 2 | To use it just copy it to action folder of your file manager, then execute "sudo chmod +x kdeconnect-send" 3 | to give execution permition. 4 | -------------------------------------------------------------------------------- /scripts/kdeconnect-send/kdeconnect-send: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | indicator-kdeconnect -c "$@" 4 | 5 | -------------------------------------------------------------------------------- /scripts/wayland/README.md: -------------------------------------------------------------------------------- 1 | indicator-kdeconnect-wayland.sh is a script to allow user run the indicator-kdeconnect from wayland. 2 | Give it permission to exectute with "sudo chmod +x i_k_w.sh indicator-kdeconnect-wayland.sh" command. 3 | Run "sudo ./indicator-kdeconnect-wayland.sh install" to install or "sudo indicator-kdeconnect.sh remove" to remove the script. 4 | -------------------------------------------------------------------------------- /scripts/wayland/i_k_w.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | GDK_BACKEND=x11 indicator-kdeconnect 4 | -------------------------------------------------------------------------------- /scripts/wayland/indicator-kdeconnect-wayland.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [[ $UID != 0 ]]; then 4 | echo "Please start the script as root or sudo!" 5 | exit 1 6 | fi 7 | 8 | USER_HOME=$(eval echo ~${SUDO_USER}) 9 | 10 | if [ "$1" == "install" ]; then 11 | 12 | echo "Coping indicator kdeconnect wayland script to bin" 13 | 14 | sudo cp i_k_w.sh /usr/bin/ 15 | 16 | echo "Modifying autostart file ..." 17 | 18 | echo " 19 | [Desktop Entry] 20 | Name=KDE Connect Indicator 21 | Comment=An awesome system for Desktop-Phone continuity. 22 | Exec=/usr/bin/./i_k_w.sh 23 | Terminal=false 24 | Type=Application 25 | StartupNotify=true 26 | Icon=kdeconnect 27 | Categories=GNOME;GTK;System;" > $USER_HOME/.config/autostart/indicator-kdeconnect.desktop 28 | 29 | echo "Modifying desktop application file ..." 30 | 31 | echo " 32 | Name=KDE Connect Indicator 33 | Comment=An awesome system for Desktop-Phone continuity. 34 | Exec=/usr/bin/./i_k_w.sh 35 | Terminal=false 36 | Type=Application 37 | StartupNotify=true 38 | Icon=kdeconnect" > /usr/share/applications/indicator-kdeconnect.desktop 39 | 40 | 41 | fi 42 | 43 | if [ "$1" == "remove" ]; then 44 | echo "Removing indicator kdeconnect wayland script to bin " 45 | 46 | sudo rm /usr/bin/i_k_w.sh 47 | 48 | echo "Modifying autostart file ..." 49 | 50 | echo " 51 | [Desktop Entry] 52 | Name=KDE Connect Indicator 53 | Comment=An awesome system for Desktop-Phone continuity. 54 | Exec=indicator-kdeconnect 55 | Terminal=false 56 | Type=Application 57 | StartupNotify=true 58 | Icon=kdeconnect 59 | Categories=GNOME;GTK;System;" > $USER_HOME/.config/autostart/indicator-kdeconnect.desktop 60 | 61 | echo "Modifying desktop application file ..." 62 | 63 | echo " 64 | Name=KDE Connect Indicator 65 | Comment=An awesome system for Desktop-Phone continuity. 66 | Exec=indicator-kdeconnect 67 | Terminal=false 68 | Type=Application 69 | StartupNotify=true 70 | Icon=kdeconnect" > /usr/share/applications/indicator-kdeconnect.desktop 71 | 72 | fi 73 | -------------------------------------------------------------------------------- /src/common/config-constants.vala.in: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | 7 | namespace IndicatorKDEConnect.Constants { 8 | public const string KDECONNECT_DEBUS_PROP = @KDECONNECT_DEBUS_PROP@; 9 | public const string KDECONNECT_DEAMON = @KDECONNECT_DEAMON@; 10 | public const string KDECONNECT_DEAMON_DEVICE = @KDECONNECT_DEAMON_DEVICE@; 11 | public const string KDECONNECT_DEAMON_BATTERY = @KDECONNECT_DEAMON_BATTERY@; 12 | public const string KDECONNECT_DEAMON_FINDPHONE = @KDECONNECT_DEAMON_FINDPHONE@; 13 | public const string KDECONNECT_DEAMON_PING = @KDECONNECT_DEAMON_PING@; 14 | public const string KDECONNECT_DEAMON_SFTP = @KDECONNECT_DEAMON_SFTP@; 15 | public const string KDECONNECT_DEAMON_SHARE = @KDECONNECT_DEAMON_SHARE@; 16 | public const string KDECONNECT_DEAMON_TELEPHONY = @KDECONNECT_DEAMON_TELEPHONY@; 17 | public const string KDECONNECT_DEAMON_DEAMON = @KDECONNECT_DEAMON_DEAMON@; 18 | public const string KDECONNECT_DEAMON_KEYBOARD = @KDECONNECT_DEAMON_KEYBOARD@; 19 | public const string DEVICE_PATH = @DEVICE_PATH@; 20 | public const string PLUGIN_SFTP = @PLUGIN_SFTP@; 21 | public const string PLUGIN_BATTERY = @PLUGIN_BATTERY@; 22 | public const string PLUGIN_SHARE = @PLUGIN_SHARE@; 23 | public const string PLUGIN_TELEPHONY = @PLUGIN_TELEPHONY@; 24 | public const string PLUGIN_FINDMYPHONE = @PLUGIN_FINDMYPHONE@; 25 | public const string PLUGIN_PING = @PLUGIN_PING@; 26 | public const string PLUGIN_REMOTE_KEYBOARD = @PLUGIN_REMOTE_KEYBOARD@; 27 | public const string SETTINGS_PAIRED_DEVICES = @SETTINGS_PAIRED_DEVICES@; 28 | public const string SETTINGS_INFO_ITEM = @SETTINGS_INFO_ITEM@; 29 | public const string SETTINGS_BRROWSE_ITEMS = @SETTINGS_BRROWSE_ITEMS@; 30 | public const string SETTINGS_SEND_URL = @SETTINGS_SEND_URL@; 31 | public const string SETTINGS_SEND_SMS = @SETTINGS_SEND_SMS@; 32 | public const string SETTINGS_FIND_PHONE = @SETTINGS_FIND_PHONE@; 33 | public const string SETTINGS_REMOTE_KEYBOARD = @SETTINGS_REMOTE_KEYBOARD@; 34 | public const string SETTINGS_PING_ITEMS = @SETTINGS_PING_ITEMS@; 35 | public const string MODULE_PATH = @MODULE_PATH@; 36 | public const string ICON_ATTENTION = @ICON_ATTENTION@; 37 | } 38 | -------------------------------------------------------------------------------- /src/common/config-header.vala.in: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | 7 | namespace IndicatorKDEConnect.Config { 8 | public const string GETTEXT_PACKAGE = @GETTEXT_PACKAGE@; 9 | public const string PACKAGE_NAME = @PACKAGE_NAME@; 10 | public const string PACKAGE_VERSION = @PACKAGE_VERSION@; 11 | public const string PACKAGE_API_VERSION = @PACKAGE_API_VERSION@; 12 | public const string VERSION = @VERSION@; 13 | public const string PACKAGE_DATADIR = @PACKAGE_DATADIR@; 14 | public const string PACKAGE_LOCALEDIR = @PACKAGE_LOCALEDIR@; 15 | public const string SETTINGS_PATH = @SETTINGS_PATH@; 16 | public const string SETTINGS_NAME = @SETTINGS_NAME@; 17 | public const string IKC_APPLICATION_ID = @IKC_APPLICATION_ID@; 18 | public const string SV_APPLICATION_ID = @SV_APPLICATION_ID@; 19 | public const string IKCS_APPLICATION_ID = @IKCS_APPLICATION_ID@; 20 | public const string TELEPHONY_CONTACTS = @TELEPHONY_CONTACTS@; 21 | public const string TELEPHONY_SMS_TOKEN = @TELEPHONY_SMS_TOKEN@; 22 | public const string PACKAGE_SETTINGS = @PACKAGE_SETTINGS@; 23 | public const string SMS_APPLICATION_ID = @SMS_APPLICATION_ID@; 24 | } 25 | -------------------------------------------------------------------------------- /src/common/iBatteryPlugin.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | namespace IndicatorKDEConnect { 7 | public interface IBattery : Object, 8 | ISignals { 9 | protected int charge (ref DBusConnection conn, 10 | string path) { 11 | var return_value = -1; 12 | try { 13 | var return_variant = conn.call_sync (Constants.KDECONNECT_DEAMON, 14 | path, 15 | Constants.KDECONNECT_DEAMON_BATTERY, 16 | "charge", 17 | null, 18 | null, 19 | DBusCallFlags.NONE, 20 | -1, 21 | null); 22 | Variant i = return_variant.get_child_value (0); 23 | return_value = i.get_int32 (); 24 | } 25 | catch (Error e) { 26 | debug (e.message); 27 | } 28 | debug (@"Device $path, charge $return_value"); 29 | return return_value; 30 | } 31 | 32 | protected bool is_charging (ref DBusConnection conn, 33 | string path) { 34 | var return_value = false; 35 | try { 36 | var return_variant = conn.call_sync (Constants.KDECONNECT_DEAMON, 37 | path, 38 | Constants.KDECONNECT_DEAMON_BATTERY, 39 | "isCharging", 40 | null, 41 | null, 42 | DBusCallFlags.NONE, 43 | -1, 44 | null); 45 | Variant i = return_variant.get_child_value (0); 46 | return_value = i.get_boolean (); 47 | } catch (Error e) { 48 | debug (e.message); 49 | } 50 | debug (@"Device $path, Is charging %s", return_value.to_string ()); 51 | return return_value; 52 | } 53 | 54 | protected virtual uint subscribe_battery_charge_changed (ref DBusConnection conn, 55 | string path) { 56 | debug ("Subscribing battery charge"); 57 | return conn.signal_subscribe (Constants.KDECONNECT_DEAMON, 58 | Constants.KDECONNECT_DEAMON_BATTERY, 59 | "chargeChanged", 60 | path, 61 | null, 62 | DBusSignalFlags.NONE, 63 | int32_signal_cb); 64 | } 65 | 66 | protected virtual uint subscribe_battery_state_changed (ref DBusConnection conn, 67 | string path) { 68 | debug ("Subscribing battery state"); 69 | return conn.signal_subscribe (Constants.KDECONNECT_DEAMON, 70 | Constants.KDECONNECT_DEAMON_BATTERY, 71 | "stateChanged", 72 | path, 73 | null, 74 | DBusSignalFlags.NONE, 75 | boolean_signal_cb); 76 | } 77 | 78 | protected void int32_signal_cb (DBusConnection con, 79 | string sender, 80 | string object, 81 | string interface, 82 | string signal_name, 83 | Variant parameter) { 84 | int param = (int)parameter.get_child_value (0).get_int32 (); 85 | debug (@"Battery Signal: $signal_name, Value: $param"); 86 | battery_charge_changed (param); 87 | } 88 | 89 | protected void boolean_signal_cb (DBusConnection con, 90 | string sender, 91 | string object, 92 | string interface, 93 | string signal_name, 94 | Variant parameter) { 95 | bool param = parameter.get_child_value (0).get_boolean (); 96 | debug (@"Battery Signal: $signal_name, Value: %s", param.to_string ()); 97 | battery_state_changed (param); 98 | } 99 | 100 | public signal void battery_charge_changed (int charge); 101 | public signal void battery_state_changed (bool state); 102 | } 103 | } 104 | -------------------------------------------------------------------------------- /src/common/iFindMyPhonePlugin.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | namespace IndicatorKDEConnect { 7 | public interface IFindMyPhone : Object, 8 | ISignals { 9 | protected virtual void ring (ref DBusConnection conn, 10 | string path) { 11 | try { 12 | debug ("Calling Find My Phone"); 13 | conn.call_sync (Constants.KDECONNECT_DEAMON, 14 | path+"/findmyphone", 15 | Constants.KDECONNECT_DEAMON_FINDPHONE, 16 | "ring", 17 | null, 18 | null, 19 | DBusCallFlags.NONE, 20 | -1, 21 | null); 22 | } 23 | catch (Error e) { 24 | debug (e.message); 25 | } 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/common/iPingPlugin.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | namespace IndicatorKDEConnect { 7 | public interface IPing : Object, 8 | ISignals { 9 | protected virtual void send_ping (ref DBusConnection conn, 10 | string path, 11 | string? message = null) { 12 | try { 13 | debug ("Sending a Ping"); 14 | 15 | Variant pingMessage = null; 16 | if(message != null) 17 | pingMessage = new Variant ("(s)", 18 | message); 19 | 20 | conn.call_sync (Constants.KDECONNECT_DEAMON, 21 | path+"/ping", 22 | Constants.KDECONNECT_DEAMON_PING, 23 | "sendPing", 24 | pingMessage, 25 | null, 26 | DBusCallFlags.NONE, 27 | -1, 28 | null); 29 | } 30 | catch (Error e) { 31 | debug (e.message); 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/common/iRemoteKeyboard.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | namespace IndicatorKDEConnect { 7 | public interface IRemoteKeyboard : Object { 8 | protected virtual void remote_keyboard (ref DBusConnection conn, 9 | string path, 10 | string key, 11 | int specialKey, 12 | bool shift, 13 | bool ctrl, 14 | bool alt) { 15 | try{ 16 | // TODO try async call 17 | debug (@"Remote Keyboard: $key, $specialKey, $shift, $ctrl, $alt"); 18 | conn.call_sync (Constants.KDECONNECT_DEAMON, 19 | path+"/remotekeyboard", 20 | Constants.KDECONNECT_DEAMON_KEYBOARD, 21 | "sendKeyPress", 22 | new Variant ("(sibbbb)", 23 | key, 24 | specialKey, 25 | shift, 26 | ctrl, 27 | alt, 28 | false), 29 | null, 30 | DBusCallFlags.NONE, 31 | -1, 32 | null); 33 | } 34 | catch (Error e) { 35 | debug (e.message); 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/common/iSettings.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | namespace IndicatorKDEConnect { 7 | public interface ISettings : Object { 8 | public virtual void subscribe_property_bool (ref Settings settings, 9 | string property) { 10 | settings.changed[property].connect (() => { 11 | 12 | setting_changed (property); 13 | debug (@"Settings $property, Change"); 14 | }); 15 | } 16 | 17 | public virtual bool get_property_bool (ref Settings settings, 18 | string property) { 19 | debug (@"Getting Settings $property"); 20 | return settings.get_boolean (property); 21 | } 22 | 23 | public signal void setting_changed (string property); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/common/iSharePlugin.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | namespace IndicatorKDEConnect { 7 | public interface IShare : Object, 8 | ISignals { 9 | protected virtual void share (ref DBusConnection conn, 10 | string path, 11 | string url) { 12 | try { 13 | debug ("Sharing a file"); 14 | conn.call_sync (Constants.KDECONNECT_DEAMON, 15 | path+"/share", 16 | Constants.KDECONNECT_DEAMON_SHARE, 17 | "shareUrl", 18 | new Variant ("(s)", 19 | url), 20 | null, 21 | DBusCallFlags.NONE, 22 | -1, 23 | null); 24 | } 25 | catch (Error e) { 26 | debug (e.message); 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/common/iSignals.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | namespace IndicatorKDEConnect { 7 | public interface ISignals : Object { 8 | public virtual void void_signal_cb (DBusConnection con, 9 | string sender, 10 | string object, 11 | string interface, 12 | string signal_name, 13 | Variant parameter) { 14 | 15 | debug (@"Signal: $signal_name, Value: None"); 16 | } 17 | 18 | public virtual void boolean_signal_cb (DBusConnection con, 19 | string sender, 20 | string object, 21 | string interface, 22 | string signal_name, 23 | Variant parameter) { 24 | bool param = parameter.get_child_value (0).get_boolean (); 25 | debug (@"Signal: $signal_name, Value: $param"); 26 | } 27 | 28 | public virtual void string_signal_cb (DBusConnection con, 29 | string sender, 30 | string object, 31 | string interface, 32 | string signal_name, 33 | Variant parameter) { 34 | string param = parameter.get_child_value (0).get_string (); 35 | debug (@"Signal: $signal_name, Value: $param"); 36 | } 37 | 38 | public virtual void int32_signal_cb (DBusConnection con, 39 | string sender, 40 | string object, 41 | string interface, 42 | string signal_name, 43 | Variant parameter) { 44 | int param = parameter.get_child_value (0).get_int32 (); 45 | debug (@"Signal: $signal_name, Value: $param"); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/common/iTelephonyPlugin.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | namespace IndicatorKDEConnect { 7 | public interface ITelephony : Object { 8 | protected virtual void send_sms (ref DBusConnection conn, 9 | string path, 10 | string phone_number, 11 | string message) { 12 | try { 13 | debug (@"Sending SMS: $phone_number, $message"); 14 | conn.call_sync (Constants.KDECONNECT_DEAMON, 15 | path+"/telephony", 16 | Constants.KDECONNECT_DEAMON_TELEPHONY, 17 | "sendSms", 18 | new Variant ("(ss)", 19 | phone_number, 20 | message), 21 | null, 22 | DBusCallFlags.NONE, 23 | -1, 24 | null); 25 | } 26 | catch (Error e) { 27 | debug (e.message); 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/common/meson.build: -------------------------------------------------------------------------------- 1 | # Lib type 2 | indicator_kdeconnect_conf = configuration_data() 3 | indicator_kdeconnect_conf.set_quoted('GETTEXT_PACKAGE', meson.project_name()) 4 | indicator_kdeconnect_conf.set_quoted('PACKAGE_NAME', meson.project_name()) 5 | indicator_kdeconnect_conf.set_quoted('PACKAGE_DESCRIPTION', short_description) 6 | indicator_kdeconnect_conf.set_quoted('PACKAGE_URL', project_web) 7 | indicator_kdeconnect_conf.set_quoted('PACKAGE_BUGREPORT', project_bugs) 8 | indicator_kdeconnect_conf.set_quoted('PACKAGE_API_VERSION', api_version) 9 | indicator_kdeconnect_conf.set_quoted('PACKAGE_VERSION', meson.project_version()) 10 | indicator_kdeconnect_conf.set_quoted('VERSION', meson.project_version()) 11 | indicator_kdeconnect_conf.set_quoted('PACKAGE_DATADIR', join_paths(get_option('prefix'), get_option('datadir'))) 12 | indicator_kdeconnect_conf.set_quoted('PACKAGE_LOCALEDIR', join_paths(get_option('prefix'), get_option('datadir'), 'locale')) 13 | indicator_kdeconnect_conf.set_quoted('SETTINGS_PATH', '/apps/indicator-kdeconnect/') 14 | indicator_kdeconnect_conf.set_quoted('SETTINGS_NAME', 'com.indicator-kdeconnect.gschema') 15 | indicator_kdeconnect_conf.set_quoted('IKC_APPLICATION_ID', 'com.indicator-kdeconnect.deamon') 16 | indicator_kdeconnect_conf.set_quoted('SV_APPLICATION_ID', 'com.indicator-kdeconnect.sendvia') 17 | indicator_kdeconnect_conf.set_quoted('IKCS_APPLICATION_ID', 'com.indicator-kdeconnect.settings') 18 | indicator_kdeconnect_conf.set_quoted('TELEPHONY_CONTACTS', '/indicator-kdeconnect/sms/contacts.json') 19 | indicator_kdeconnect_conf.set_quoted('TELEPHONY_SMS_TOKEN', '/indicator-kdeconnect/sms/token.json') 20 | indicator_kdeconnect_conf.set_quoted('PACKAGE_SETTINGS', meson.project_name() + ' -s') 21 | indicator_kdeconnect_conf.set_quoted('SMS_APPLICATION_ID', join_paths(get_option('bindir'), 'sms')) 22 | 23 | 24 | configure_file(output: 'config-header.vala', 25 | input: 'config-header.vala.in', 26 | configuration: indicator_kdeconnect_conf) 27 | 28 | indicator_kdeconnect_constants = configuration_data() 29 | indicator_kdeconnect_constants.set_quoted('PLUGIN_SFTP', 'kdeconnect_sftp') 30 | indicator_kdeconnect_constants.set_quoted('PLUGIN_BATTERY', 'kdeconnect_battery') 31 | indicator_kdeconnect_constants.set_quoted('PLUGIN_SHARE', 'kdeconnect_share') 32 | indicator_kdeconnect_constants.set_quoted('PLUGIN_TELEPHONY', 'kdeconnect_findmyphone') 33 | indicator_kdeconnect_constants.set_quoted('PLUGIN_FINDMYPHONE', 'kdeconnect_share') 34 | indicator_kdeconnect_constants.set_quoted('PLUGIN_REMOTE_KEYBOARD', 'kdeconnect_remotekeyboard') 35 | indicator_kdeconnect_constants.set_quoted('PLUGIN_PING', 'kdeconnect_ping') 36 | indicator_kdeconnect_constants.set_quoted('SETTINGS_PAIRED_DEVICES', 'only-paired-devices') 37 | indicator_kdeconnect_constants.set_quoted('SETTINGS_INFO_ITEM', 'info-item') 38 | indicator_kdeconnect_constants.set_quoted('SETTINGS_BRROWSE_ITEMS', 'browse-items') 39 | indicator_kdeconnect_constants.set_quoted('SETTINGS_SEND_URL', 'send-url') 40 | indicator_kdeconnect_constants.set_quoted('SETTINGS_SEND_SMS', 'send-sms') 41 | indicator_kdeconnect_constants.set_quoted('SETTINGS_FIND_PHONE', 'find-my-device') 42 | indicator_kdeconnect_constants.set_quoted('SETTINGS_PING_ITEMS', 'ping-items') 43 | indicator_kdeconnect_constants.set_quoted('SETTINGS_REMOTE_KEYBOARD', 'remote-keyboard') 44 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEBUS_PROP', 'org.freedesktop.DBus.Properties') 45 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON', 'org.kde.kdeconnect') 46 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON_DEAMON', 'org.kde.kdeconnect.daemon') 47 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON_DEVICE', 'org.kde.kdeconnect.device') 48 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON_BATTERY', 'org.kde.kdeconnect.device.battery') 49 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON_FINDPHONE', 'org.kde.kdeconnect.device.findmyphone') 50 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON_PING', 'org.kde.kdeconnect.device.ping') 51 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON_SFTP', 'org.kde.kdeconnect.device.sftp') 52 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON_SHARE', 'org.kde.kdeconnect.device.share') 53 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON_TELEPHONY', 'org.kde.kdeconnect.device.telephony') 54 | indicator_kdeconnect_constants.set_quoted('KDECONNECT_DEAMON_KEYBOARD', 'org.kde.kdeconnect.device.remotekeyboard') 55 | indicator_kdeconnect_constants.set_quoted('DEVICE_PATH', '/modules/kdeconnect/devices/') 56 | indicator_kdeconnect_constants.set_quoted('MODULE_PATH', '/modules/kdeconnect') 57 | indicator_kdeconnect_constants.set_quoted('ICON_ATTENTION', 'smartphoneattention') 58 | 59 | configure_file(output: 'config-constants.vala', 60 | input: 'config-constants.vala.in', 61 | configuration: indicator_kdeconnect_constants) 62 | 63 | lib_deps = [ 64 | modules_deps 65 | ] 66 | 67 | module_source = [join_paths(meson.current_build_dir(), 'config-header.vala'), 68 | join_paths(meson.current_build_dir(), 'config-constants.vala'), 69 | 'dialogs.vala', 70 | 'utils.vala', 71 | 'deviceManager.vala', 72 | 'settings.vala', 73 | 'sendVia.vala', 74 | 'iSettings.vala', 75 | 'iDaemonPlugin.vala', 76 | 'iDevicePlugin.vala', 77 | 'iBatteryPlugin.vala', 78 | 'iFindMyPhonePlugin.vala', 79 | 'iSharePlugin.vala', 80 | 'iTelephonyPlugin.vala', 81 | 'iSftpPlugin.vala', 82 | 'iSignals.vala', 83 | 'iPingPlugin.vala', 84 | 'iRemoteKeyboard.vala'] 85 | 86 | indicator_kdeconnect_lib = shared_library(meson.project_name(), 87 | sources: module_source, 88 | dependencies : lib_deps, 89 | install: true) 90 | 91 | indicator_kdeconnect_dep = declare_dependency( 92 | include_directories: include_directories('.'), 93 | link_with: indicator_kdeconnect_lib) 94 | 95 | pkg = import('pkgconfig') 96 | pkg.generate( 97 | libraries: indicator_kdeconnect_lib, 98 | filebase: package_name, 99 | name: meson.project_name(), 100 | version: meson.project_version(), 101 | description: short_description, 102 | variables: [ 103 | 'datarootdir=/usr/lib/'+join_paths(get_option('datadir')), 104 | 'datadir=${datarootdir}', 105 | ], 106 | ) 107 | 108 | meson.add_install_script(join_paths(meson_dir, 'meson_post_install.py')) -------------------------------------------------------------------------------- /src/extensions/filemanager-c/meson.build: -------------------------------------------------------------------------------- 1 | extension_list = [ 2 | 'nautilus' 3 | ] 4 | 5 | foreach module : extension_list 6 | subdir(module) 7 | endforeach -------------------------------------------------------------------------------- /src/extensions/filemanager-c/nautilus/meson.build: -------------------------------------------------------------------------------- 1 | lib_deps = [ 2 | dependency('glib-2.0'), 3 | dependency('libconfig'), 4 | dependency('libnautilus-extension') 5 | #, import('i18n') 6 | ] 7 | 8 | extensiondir = join_paths(get_option('libdir'), 'nautilus/extensions-3.0') 9 | 10 | sendvia_kdeconnect_sources = [ 11 | 'sendvia-kdeconnect.c', 12 | 'sendvia-kdeconnect.h', 13 | 'sendvia-kdeconnect-module.c' 14 | ] 15 | 16 | libsendvia_kdeconnect = shared_module( 17 | 'sendvia_kdeconnect', 18 | sendvia_kdeconnect_sources, 19 | dependencies : lib_deps, 20 | install: true, 21 | install_dir: extensiondir 22 | ) 23 | -------------------------------------------------------------------------------- /src/extensions/filemanager-c/nautilus/mesonl.build: -------------------------------------------------------------------------------- 1 | project('sendvia-kdeconnect', 'c', 2 | version : '0.9.4', 3 | license : 'GPL-2.1+') 4 | 5 | includedir = get_option('includedir') 6 | extensiondir = join_paths(get_option('libdir'), 'nautilus/extensions-3.0') 7 | #extensiondir = '/usr/lib/nautilus/extensions-3.0' 8 | 9 | 10 | i18n = import('i18n') 11 | glib_dep = dependency('glib-2.0') 12 | config_dep = dependency('libconfig') 13 | nautiluslib_dep = dependency('libnautilus-extension') 14 | 15 | 16 | sendvia_kdeconnect_sources = [ 17 | 'sendvia-kdeconnect.c', 18 | 'sendvia-kdeconnect.h', 19 | 'sendvia-kdeconnect-module.c' 20 | ] 21 | 22 | libsendvia_kdeconnect = shared_module( 23 | 'sendvia_kdeconnect', 24 | sendvia_kdeconnect_sources, 25 | dependencies : config_dep, 26 | dependencies : glib_dep, 27 | dependencies : nautiluslib_dep, 28 | install: true, 29 | install_dir: extensiondir 30 | ) 31 | -------------------------------------------------------------------------------- /src/extensions/filemanager-c/nautilus/sendvia-kdeconnect-module.c: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | 7 | //#include 8 | #include 9 | //#include 10 | #include "sendvia-kdeconnect.h" 11 | 12 | 13 | void 14 | nautilus_module_initialize (GTypeModule *module) 15 | { 16 | nautilus_kdecs_load (module); 17 | 18 | // bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR); 19 | // bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); 20 | } 21 | 22 | void 23 | nautilus_module_shutdown (void) 24 | { 25 | } 26 | 27 | void 28 | nautilus_module_list_types (const GType **types, 29 | int *num_types) 30 | { 31 | static GType type_list[1]; 32 | 33 | type_list[0] = NAUTILUS_TYPE_KDECS; 34 | *types = type_list; 35 | 36 | *num_types = 1; 37 | } 38 | -------------------------------------------------------------------------------- /src/extensions/filemanager-c/nautilus/sendvia-kdeconnect.h: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | 7 | #pragma once 8 | 9 | #include 10 | 11 | G_BEGIN_DECLS 12 | 13 | #define NAUTILUS_TYPE_KDECS (nautilus_kdecs_get_type ()) 14 | 15 | G_DECLARE_FINAL_TYPE (NautilusKdecs, nautilus_kdecs, NAUTILUS, KDECS, GObject) 16 | 17 | void nautilus_kdecs_load (GTypeModule *module); 18 | 19 | GVariant* get_reachable_devices (NautilusKdecs *kdecs); 20 | 21 | static void sendto_callback (NautilusMenuItem *item, gpointer user_data); 22 | 23 | static void sendto_proxy (gchar *device, gchar *uri, GDBusProxy *proxy); 24 | 25 | static gboolean process_error (GError *error); 26 | 27 | //static void sendto_sendvia_kdeconnect (); 28 | 29 | G_END_DECLS -------------------------------------------------------------------------------- /src/extensions/filemanager-python/caja/kdeconnect-send.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2016 KDE Connect Indicator Developers 3 | * 4 | * This software is licensed under the GNU Lesser General Public License 5 | * (version 2.1 or later). See the COPYING file in this distribution. 6 | """ 7 | 8 | import gi 9 | gi.require_version('Caja', '3.0') 10 | gi.require_version('Notify', '0.7') 11 | gi.require_version('Gio', '2.0') 12 | gi.require_version('GLib', '2.0') 13 | gi.require_version('GObject', '2.0') 14 | from gi.repository import Caja, GObject, Notify, Gio, GLib 15 | from subprocess import Popen 16 | from os.path import isfile 17 | import urllib, gettext, locale 18 | 19 | # use of _ to set messages to be translated 20 | _ = gettext.gettext 21 | timeout = 350 22 | 23 | class SendViaExtension(GObject.GObject, Caja.MenuProvider): 24 | 25 | def __init__(self): 26 | GObject.GObject.__init__(self) 27 | 28 | self.dbus = Gio.DBusProxy.new_for_bus_sync( 29 | Gio.BusType.SESSION, 30 | Gio.DBusProxyFlags.NONE, 31 | None, 32 | 'org.kde.kdeconnect', 33 | '/modules/kdeconnect', 34 | 'org.kde.kdeconnect.daemon', 35 | None) 36 | 37 | """Inicialize translations to a domain""" 38 | def setup_gettext(self): 39 | try: 40 | locale.setlocale(locale.LC_ALL, "") 41 | gettext.bindtextdomain("indicator-kdeconnect", "/usr/share/locale") 42 | gettext.textdomain("indicator-kdeconnect") 43 | except: 44 | pass 45 | 46 | """Get a list of reachable devices""" 47 | def get_reachable_devices(self): 48 | try: 49 | onlyReachable = True 50 | onlyPaired = True 51 | variant = GLib.Variant('(bb)', (onlyReachable, onlyPaired)) 52 | devices = self.dbus.call_sync('deviceNames', variant, 0, -1, None) 53 | devices = devices.unpack()[0] 54 | return devices 55 | except Exception as e: 56 | raise Exception(e) 57 | 58 | """Send a files with kdeconnect dbus""" 59 | def send_files(self, menu, files, device_id, device_name): 60 | device_proxy = Gio.DBusProxy.new_for_bus_sync( 61 | Gio.BusType.SESSION, 62 | Gio.DBusProxyFlags.NONE, 63 | None, 64 | 'org.kde.kdeconnect', 65 | '/modules/kdeconnect/devices/'+device_id+'/share', 66 | 'org.kde.kdeconnect.device.share', 67 | None) 68 | 69 | for file in files: 70 | variant = GLib.Variant('(s)', (file.get_uri(),)) 71 | device_proxy.call_sync('shareUrl', variant, 0, timeout, None) 72 | 73 | self.setup_gettext() 74 | Notify.init("KDEConnect-send") 75 | Notify.Notification.new(_("Check the device {device_name}").format(device_name=device_name), 76 | _("Sending {num_files} file(s)").format(num_files=len(files))).show() 77 | 78 | """Open Multiple Send Window""" 79 | def send_to_multiple_devices(self, menu, files): 80 | args = [] 81 | args.append("kdeconnect-send") 82 | 83 | for file in files: 84 | args.append(urllib.unquote(file.get_uri()[7:])) 85 | 86 | Popen(args) 87 | 88 | """Send selected files""" 89 | def menu_activate_cb(self, menu, files, device_id, device_name): 90 | self.send_files(files, device_id, device_name) 91 | 92 | """Get files that user selected""" 93 | def get_file_items(self, window, files): 94 | """Ensure there are reachable devices""" 95 | try: 96 | devices = self.get_reachable_devices() 97 | except Exception as e: 98 | raise Exception("Error while getting reachable devices") 99 | 100 | """if there is no reacheable devices don't show this on context menu""" 101 | if len(devices) == 0: 102 | return 103 | 104 | """Ensure that user only select files""" 105 | for file in files: 106 | if file.get_uri_scheme() != 'file' or file.is_directory(): 107 | return 108 | 109 | self.setup_gettext() 110 | """If user only select file(s) create menu and sub menu""" 111 | menu = Caja.MenuItem(name = 'SendViaExtension::SendViaKDEConnect', 112 | label = _('KDEConnect Send To'), 113 | tip = _('send file(s) with kdeconnect'), 114 | icon = 'kdeconnect') 115 | 116 | sub_menu = Caja.Menu() 117 | 118 | menu.set_submenu(sub_menu) 119 | 120 | for deviceId, deviceName in devices.items(): 121 | item = Caja.MenuItem(name='SendViaExtension::SendFileTo'+deviceId, 122 | label=deviceName) 123 | item.connect('activate', self.send_files, files, deviceId, deviceName) 124 | sub_menu.append_item(item) 125 | 126 | if len(devices) > 1: 127 | item = Caja.MenuItem(name='SendViaExtension::SendFileToMultipleDevices', 128 | label='Multiple Devices') 129 | item.connect('activate', self.send_to_multiple_devices, files) 130 | 131 | sub_menu.append_item(item) 132 | 133 | return menu, 134 | -------------------------------------------------------------------------------- /src/extensions/filemanager-python/meson.build: -------------------------------------------------------------------------------- 1 | extensiondir = get_option('datadir') 2 | 3 | if run_command('test', '-d', join_paths(extensiondir, 'caja-python/extensions')).returncode() == 0 4 | install_data(sources : 'caja/kdeconnect-send.py', 5 | install_dir : join_paths(get_option('datadir'), 'caja-python/extensions')) 6 | endif 7 | 8 | if run_command('test', '-d', join_paths(extensiondir, 'nautilus-python/extensions')).returncode() == 0 9 | install_data(sources : 'nautilus/kdeconnect-send.py', 10 | install_dir : join_paths(get_option('datadir'), 'nautilus-python/extensions')) 11 | endif 12 | 13 | if run_command('test', '-d', join_paths(extensiondir, 'nemo-python/extensions')).returncode() == 0 14 | install_data(sources : 'nemo/kdeconnect-send.py', 15 | install_dir : join_paths(get_option('datadir'), 'nemo-python/extensions')) 16 | endif -------------------------------------------------------------------------------- /src/extensions/filemanager-python/nautilus/kdeconnect-send.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2016 KDE Connect Indicator Developers 3 | * 4 | * This software is licensed under the GNU Lesser General Public License 5 | * (version 2.1 or later). See the COPYING file in this distribution. 6 | """ 7 | 8 | import gi 9 | gi.require_version('Nautilus', '3.0') 10 | gi.require_version('Notify', '0.7') 11 | gi.require_version('Gio', '2.0') 12 | gi.require_version('GLib', '2.0') 13 | gi.require_version('GObject', '2.0') 14 | from gi.repository import Nautilus, GObject, Notify, Gio, GLib 15 | from subprocess import Popen 16 | from os.path import isfile 17 | import urllib, gettext, locale 18 | 19 | # use of _ to set messages to be translated 20 | _ = gettext.gettext 21 | timeout = 350 22 | 23 | class SendViaExtension(GObject.GObject, Nautilus.MenuProvider): 24 | 25 | def __init__(self): 26 | GObject.GObject.__init__(self) 27 | 28 | self.dbus = Gio.DBusProxy.new_for_bus_sync( 29 | Gio.BusType.SESSION, 30 | Gio.DBusProxyFlags.NONE, 31 | None, 32 | 'org.kde.kdeconnect', 33 | '/modules/kdeconnect', 34 | 'org.kde.kdeconnect.daemon', 35 | None) 36 | 37 | """Inicialize translations to a domain""" 38 | def setup_gettext(self): 39 | try: 40 | locale.setlocale(locale.LC_ALL, "") 41 | gettext.bindtextdomain("indicator-kdeconnect", "/usr/share/locale") 42 | gettext.textdomain("indicator-kdeconnect") 43 | except: 44 | pass 45 | 46 | """Get a list of reachable devices""" 47 | def get_reachable_devices(self): 48 | try: 49 | onlyReachable = True 50 | onlyPaired = True 51 | variant = GLib.Variant('(bb)', (onlyReachable, onlyPaired)) 52 | devices = self.dbus.call_sync('deviceNames', variant, 0, timeout, None) 53 | devices = devices.unpack()[0] 54 | return devices 55 | except Exception as e: 56 | raise Exception(e) 57 | 58 | """Send a files with kdeconnect""" 59 | def send_files(self, menu, files, device_id, device_name): 60 | device_proxy = Gio.DBusProxy.new_for_bus_sync( 61 | Gio.BusType.SESSION, 62 | Gio.DBusProxyFlags.NONE, 63 | None, 64 | 'org.kde.kdeconnect', 65 | '/modules/kdeconnect/devices/'+device_id+'/share', 66 | 'org.kde.kdeconnect.device.share', 67 | None) 68 | 69 | for file in files: 70 | variant = GLib.Variant('(s)', (file.get_uri(),)) 71 | device_proxy.call_sync('shareUrl', variant, 0, -1, None) 72 | 73 | self.setup_gettext() 74 | Notify.init("KDEConnect-send") 75 | Notify.Notification.new(_("Check the device {device_name}").format(device_name=device_name), 76 | _("Sending {num_files} file(s)").format(num_files=len(files))).show() 77 | 78 | """Open Multiple Send Window""" 79 | def send_to_multiple_devices(self, menu, files): 80 | args = [] 81 | args.append("kdeconnect-send") 82 | 83 | for file in files: 84 | args.append(urllib.unquote(file.get_uri()[7:])) 85 | 86 | Popen(args) 87 | 88 | """Send selected files""" 89 | def menu_activate_cb(self, menu, files, device_id, device_name): 90 | self.send_files(files, device_id, device_name) 91 | 92 | """Get files that user selected""" 93 | def get_file_items(self, window, files): 94 | """Ensure there are reachable devices""" 95 | try: 96 | devices = self.get_reachable_devices() 97 | except Exception as e: 98 | raise Exception("Error while getting reachable devices") 99 | 100 | """if there is no reacheable devices don't show this on context menu""" 101 | if len(devices) == 0: 102 | return 103 | 104 | """Ensure that user only select files""" 105 | for file in files: 106 | if file.get_uri_scheme() != 'file' or file.is_directory(): 107 | return 108 | 109 | self.setup_gettext() 110 | """If user only select file(s) create menu and sub menu""" 111 | menu = Nautilus.MenuItem(name = 'SendViaExtension::SendViaKDEConnect', 112 | label = _('KDEConnect Send To'), 113 | tip = _('send file(s) with kdeconnect'), 114 | icon = 'kdeconnect') 115 | 116 | sub_menu = Nautilus.Menu() 117 | 118 | menu.set_submenu(sub_menu) 119 | 120 | for deviceId, deviceName in devices.items(): 121 | item = Nautilus.MenuItem(name='SendViaExtension::SendFileTo'+deviceId, 122 | label=deviceName) 123 | item.connect('activate', self.send_files, files, deviceId, deviceName) 124 | sub_menu.append_item(item) 125 | 126 | if len(devices) > 1: 127 | item = Nautilus.MenuItem(name='SendViaExtension::SendFileToMultipleDevices', 128 | label='Multiple Devices') 129 | item.connect('activate', self.send_to_multiple_devices, files) 130 | 131 | sub_menu.append_item(item) 132 | 133 | return menu, 134 | -------------------------------------------------------------------------------- /src/extensions/filemanager-python/nemo/kdeconnect-send.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2016 KDE Connect Indicator Developers 3 | * 4 | * This software is licensed under the GNU Lesser General Public License 5 | * (version 2.1 or later). See the COPYING file in this distribution. 6 | """ 7 | 8 | import gi 9 | gi.require_version('Nemo', '3.0') 10 | gi.require_version('Notify', '0.7') 11 | gi.require_version('Gio', '2.0') 12 | gi.require_version('GLib', '2.0') 13 | gi.require_version('GObject', '2.0') 14 | from gi.repository import Nemo, GObject, Notify, Gio, GLib 15 | from subprocess import Popen 16 | from os.path import isfile 17 | import urllib, gettext, locale 18 | 19 | # use of _ to set messages to be translated 20 | _ = gettext.gettext 21 | timeout = 350 22 | 23 | class SendViaExtension(GObject.GObject, Nemo.MenuProvider): 24 | 25 | def __init__(self): 26 | GObject.GObject.__init__(self) 27 | 28 | self.dbus = Gio.DBusProxy.new_for_bus_sync( 29 | Gio.BusType.SESSION, 30 | Gio.DBusProxyFlags.NONE, 31 | None, 32 | 'org.kde.kdeconnect', 33 | '/modules/kdeconnect', 34 | 'org.kde.kdeconnect.daemon', 35 | None) 36 | 37 | """Inicialize translations to a domain""" 38 | def setup_gettext(self): 39 | try: 40 | locale.setlocale(locale.LC_ALL, "") 41 | gettext.bindtextdomain("indicator-kdeconnect", "/usr/share/locale") 42 | gettext.textdomain("indicator-kdeconnect") 43 | except: 44 | pass 45 | 46 | """Get a list of reachable devices""" 47 | def get_reachable_devices(self): 48 | try: 49 | onlyReachable = True 50 | onlyPaired = True 51 | variant = GLib.Variant('(bb)', (onlyReachable, onlyPaired)) 52 | devices = self.dbus.call_sync('deviceNames', variant, 0, timeout, None) 53 | devices = devices.unpack()[0] 54 | return devices 55 | except Exception as e: 56 | raise Exception(e) 57 | 58 | """Send a files with kdeconnect dbus""" 59 | def send_files(self, menu, files, device_id, device_name): 60 | device_proxy = Gio.DBusProxy.new_for_bus_sync( 61 | Gio.BusType.SESSION, 62 | Gio.DBusProxyFlags.NONE, 63 | None, 64 | 'org.kde.kdeconnect', 65 | '/modules/kdeconnect/devices/'+device_id+'/share', 66 | 'org.kde.kdeconnect.device.share', 67 | None) 68 | 69 | for file in files: 70 | variant = GLib.Variant('(s)', (file.get_uri(),)) 71 | device_proxy.call_sync('shareUrl', variant, 0, -1, None) 72 | 73 | self.setup_gettext() 74 | Notify.init("KDEConnect-send") 75 | Notify.Notification.new(_("Check the device {device_name}").format(device_name=device_name), 76 | _("Sending {num_files} file(s)").format(num_files=len(files))).show() 77 | 78 | """Open Multiple Send Window""" 79 | def send_to_multiple_devices(self, menu, files): 80 | args = [] 81 | args.append("kdeconnect-send") 82 | 83 | for file in files: 84 | args.append(urllib.unquote(file.get_uri()[7:])) 85 | 86 | Popen(args) 87 | 88 | """Send selected files""" 89 | def menu_activate_cb(self, menu, files, device_id, device_name): 90 | self.send_files(files, device_id, device_name) 91 | 92 | """Get files that user selected""" 93 | def get_file_items(self, window, files): 94 | """Ensure there are reachable devices""" 95 | try: 96 | devices = self.get_reachable_devices() 97 | except Exception as e: 98 | raise Exception("Error while getting reachable devices") 99 | 100 | """if there is no reacheable devices don't show this on context menu""" 101 | if len(devices) == 0: 102 | return 103 | 104 | """Ensure that user only select files""" 105 | for file in files: 106 | if file.get_uri_scheme() != 'file' or file.is_directory(): 107 | return 108 | 109 | self.setup_gettext() 110 | """If user only select file(s) create menu and sub menu""" 111 | menu = Nemo.MenuItem(name = 'SendViaExtension::SendViaKDEConnect', 112 | label = _('KDEConnect Send To'), 113 | tip = _('send file(s) with kdeconnect'), 114 | icon = 'kdeconnect') 115 | 116 | sub_menu = Nemo.Menu() 117 | 118 | menu.set_submenu(sub_menu) 119 | 120 | for deviceId, deviceName in devices.items(): 121 | item = Nemo.MenuItem(name='SendViaExtension::SendFileTo'+deviceId, 122 | label=deviceName) 123 | item.connect('activate', self.send_files, files, deviceId, deviceName) 124 | sub_menu.append_item(item) 125 | 126 | if len(devices) > 1: 127 | item = Nemo.MenuItem(name='SendViaExtension::SendFileToMultipleDevices', 128 | label='Multiple Devices') 129 | item.connect('activate', self.send_to_multiple_devices, files) 130 | 131 | sub_menu.append_item(item) 132 | 133 | return menu, 134 | -------------------------------------------------------------------------------- /src/extensions/generic/meson.build: -------------------------------------------------------------------------------- 1 | extensiondir = get_option('datadir') 2 | 3 | if run_command('test', '-d', join_paths(extensiondir, 'Thunar/sendto')).returncode() == 0 4 | install_data(sources : 'sendvia-kdeconnect.desktop', 5 | install_dir : join_paths(get_option('datadir'), 'Thunar/sendto')) 6 | endif 7 | 8 | if run_command('test', '-d', join_paths(extensiondir, 'contractor')).returncode() == 0 9 | install_data(sources : 'sendvia-kdeconnect.contract', 10 | install_dir : join_paths(get_option('datadir'), 'contractor')) 11 | endif -------------------------------------------------------------------------------- /src/extensions/generic/sendvia-kdeconnect.contract: -------------------------------------------------------------------------------- 1 | [Contractor Entry] 2 | Name=KDEConnect Send To 3 | Icon=kdeconnect 4 | Description=Send files with kdeconnect-send 5 | MimeType=!inode; 6 | Exec=indicator-kdeconnect -c %F 7 | Gettext-Domain=gnome-bluetooth2 8 | -------------------------------------------------------------------------------- /src/extensions/generic/sendvia-kdeconnect.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Type=Application 3 | Version=0.9.2 4 | Encoding=UTF-8 5 | TryExec=indicator-kdeconnect -c 6 | Exec=indicator-kdeconnect -c %F 7 | Icon=kdeconnect 8 | Name=SendVia KDEConnect 9 | Name[pt_PT]=indicator-kdeconnect.desktop 10 | -------------------------------------------------------------------------------- /src/extensions/meson.build: -------------------------------------------------------------------------------- 1 | # Extension Target 2 | extension_list = [ 3 | 'sms', 4 | 'generic' 5 | ] 6 | 7 | if get_option('extensions') == 'c' 8 | extension_list += ['filemanager-c'] 9 | elif get_option('extensions') == 'python' 10 | extension_list += ['filemanager-python'] 11 | endif 12 | 13 | foreach module : extension_list 14 | subdir(module) 15 | endforeach -------------------------------------------------------------------------------- /src/extensions/sms/meson.build: -------------------------------------------------------------------------------- 1 | # Executable type 2 | 3 | install_data('sms.py', 4 | rename: 'sms', 5 | install_dir: get_option('bindir')) 6 | 7 | #run_command('chmod', '+x', join_paths(get_option('bindir'), 'sms')) 8 | -------------------------------------------------------------------------------- /src/indicator/firstTimeWizard.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2014 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | 7 | using Gee; 8 | 9 | namespace IndicatorKDEConnect { 10 | public class FirstTimeWizard : Gtk.Window { 11 | private KDEConnectManager manager; 12 | private HashSet list; 13 | 14 | public FirstTimeWizard (KDEConnectManager manager) { 15 | this.default_width = 600; 16 | this.default_height = 500; 17 | this.set_icon_name("kdeconnect"); 18 | this.manager = manager; 19 | 20 | var stack = new Gtk.Stack (); 21 | stack.margin = 20; 22 | stack.homogeneous = true; 23 | stack.set_transition_duration (1000); 24 | stack.set_transition_type (Gtk.StackTransitionType.SLIDE_LEFT); 25 | 26 | stack.add_named (create_connect_page (), 27 | "connect"); 28 | 29 | stack.add_named (create_pair_page (), 30 | "pair"); 31 | 32 | stack.add_named (create_finish_page (), 33 | "finish"); 34 | 35 | stack.visible_child_name = "finish"; 36 | 37 | this.add (stack); 38 | this.show_all (); 39 | 40 | list = new HashSet (); 41 | 42 | manager.device_added.connect ((id) => { 43 | if (stack.visible_child_name == "connect"){ 44 | stack.visible_child_name = "pair"; 45 | var d = new DeviceManager (id); 46 | d.trusted_status_changed.connect ((trusted)=> { 47 | if (trusted && stack.visible_child_name == "pair") 48 | stack.visible_child_name = "finish"; 49 | }); 50 | list.add (d); 51 | } 52 | }); 53 | } 54 | 55 | private Gtk.Widget create_connect_page () { 56 | return create_box (Gtk.Orientation.HORIZONTAL, 57 | _("Are you ready for your first device pairing?\n\n")+ 58 | _("Now connect your devices using wifi connection.\n")+ 59 | _("Tethering should work too!\n")+ 60 | _("If you have Firewall running, please open port 1714-1764 for TCP and UDP\n\n")+ 61 | _("Launch KDE Connect in your Android which you can download from ")+ 62 | """"""+ 63 | _("Google Play"), 64 | Config.PACKAGE_DATADIR+"/icons/hicolor/256x256/apps/kdeconnect.png"); 65 | } 66 | 67 | private Gtk.Widget create_pair_page () { 68 | return create_box (Gtk.Orientation.VERTICAL, 69 | _("Everytime there is a new device connected, a new indicator will appear in your panel.\n")+ 70 | _("There, you can pair and see its status\n\n")+ 71 | _("Now try to pair your device"), 72 | Config.PACKAGE_DATADIR+"/indicator.jpg"); 73 | } 74 | 75 | private Gtk.Widget create_finish_page () { 76 | return create_box (Gtk.Orientation.VERTICAL, 77 | _("Great! your device is all set\n\n")+ 78 | _("Now you can enable or disable modules on KDE Connect settings.\n")+ 79 | _("Indicator already added to autostart.\n")+ 80 | _("Enjoy!"), 81 | Config.PACKAGE_DATADIR+"/startup.jpg"); 82 | } 83 | 84 | private Gtk.Box create_box (Gtk.Orientation orientation, string markup, string image_path) { 85 | var box = new Gtk.Box (orientation, 10); 86 | 87 | box.pack_start (new Gtk.Image.from_file (image_path)); 88 | 89 | var l = new Gtk.Label (null); 90 | l.set_markup (markup); 91 | l.wrap = true; 92 | l.justify = Gtk.Justification.LEFT; 93 | box.pack_start (l); 94 | 95 | return box; 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /src/indicator/kdeconnectManager.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | 7 | using Gee; 8 | 9 | namespace IndicatorKDEConnect { 10 | public class KDEConnectManager : Object, 11 | IDaemon { 12 | private DBusConnection conn; 13 | private HashSet devices_connected; 14 | private HashSet subs_identifier; 15 | 16 | public KDEConnectManager () { 17 | try { 18 | conn = Bus.get_sync (BusType.SESSION); 19 | 20 | if (assert_kdeconnect_service ()) { 21 | devices_connected = new HashSet (); 22 | subs_identifier = new HashSet(); 23 | 24 | uint id; 25 | 26 | id = subscribe_device_added (ref conn); 27 | 28 | debug (@"Subscription ID: $id"); 29 | 30 | subs_identifier.add (id); 31 | 32 | id = subscribe_device_removed (ref conn); 33 | 34 | debug (@"Subscription ID: $id"); 35 | 36 | subs_identifier.add (id); 37 | 38 | id = subscribe_device_visibility_changed (ref conn); 39 | 40 | debug (@"Subscription ID: $id"); 41 | 42 | subs_identifier.add (id); 43 | 44 | id = subscribe_device_removed (ref conn); 45 | 46 | debug (@"Subscription ID: $id"); 47 | 48 | subs_identifier.add (id); 49 | 50 | fill_devices (); 51 | 52 | discovery_mode (ref conn); 53 | } 54 | else { 55 | new ErrorMessage.show_message(_("Cannot connect to KDEConnect DBus Service")); 56 | return; 57 | } 58 | } 59 | catch (Error e) { 60 | debug (e.message); 61 | } 62 | } 63 | 64 | ~KDEConnectManager () { 65 | debug ("Device Indicator Destroyed"); 66 | 67 | subs_identifier.@foreach ( (item) => { 68 | conn.signal_unsubscribe (item); 69 | }); 70 | 71 | devices_connected.clear (); 72 | subs_identifier.clear (); 73 | 74 | discovery_mode (ref conn, false); 75 | } 76 | 77 | private bool assert_kdeconnect_service () { 78 | var return_value = false; 79 | var max_trying = 4; 80 | 81 | while (!return_value) { 82 | return_value = is_daemon_running (); 83 | 84 | if (!return_value) { 85 | Utils.run_kdeconnect_deamon (); 86 | Thread.usleep (500); 87 | message ("Trying to find KDEConnect DBus Service"); 88 | } 89 | max_trying--; 90 | 91 | if (max_trying <= 0) 92 | break; 93 | } 94 | 95 | return return_value; 96 | } 97 | 98 | private bool is_daemon_running () { 99 | return (daemon_proxy (ref conn).get_name_owner () != null); 100 | } 101 | 102 | private void fill_devices () { 103 | string[] devs = devices (ref conn); 104 | 105 | foreach (var dev in devs) { 106 | var path = Constants.DEVICE_PATH + dev; 107 | devices_connected.add (new Device (path)); 108 | debug (@"Device Indicator created: $path"); 109 | } 110 | 111 | if (devices_connected.size == 0) 112 | debug ("No trusted device found, open KDE Connect in your phone to start pairing"); 113 | } 114 | 115 | public int get_number_connected_devices () { 116 | return devices_connected.size; 117 | } 118 | 119 | public void add_device (string path) { 120 | debug (@"Device added To list of devices, $path"); 121 | devices_connected.add (new Device (path)); 122 | } 123 | 124 | public void remove_device (string path) { 125 | debug (@"Device removed from list of devices, $path"); 126 | foreach (var dev in devices_connected) { 127 | if (dev.equals_path (path)) { 128 | devices_connected.remove (dev); 129 | break; 130 | } 131 | } 132 | } 133 | 134 | public void distribute_visibility_changes (string path, 135 | bool visible) { 136 | debug (@"Device $path visibility change to %s", visible.to_string ()); 137 | foreach (var item in devices_connected) { 138 | if (item.equals_id (path)){ 139 | item.visibility_changed (visible); 140 | return; 141 | } 142 | } 143 | } 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /src/indicator/main.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2018 GConnect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | 7 | namespace IndicatorKDEConnect { 8 | public class Application : Gtk.Application { 9 | private static bool version; 10 | private static bool kdeconnect_api_version; 11 | private static bool debug = false; 12 | private static bool settings_application = false; 13 | private static bool sendvia_application = false; 14 | private const OptionEntry[] options = { 15 | { "version", 'v', 0, OptionArg.NONE, ref version, "Display version number", null }, 16 | { "api-version", 'a', 0, OptionArg.NONE, ref kdeconnect_api_version, "Display KDEConnect API version number", null }, 17 | { "debug", 'd', 0, OptionArg.NONE, ref debug, "Show debug information", null}, 18 | { "settings-application", 's', 0, OptionArg.NONE, ref settings_application, "Show Settings Application", null}, 19 | { "sendvia-application", 'c', 0, OptionArg.NONE, ref sendvia_application, "Show SendVia Application", null}, 20 | { null } 21 | }; 22 | private KDEConnectManager kdeconnectManager; 23 | private FirstTimeWizard ftw; 24 | 25 | public Application () { 26 | Object (application_id: Config.IKC_APPLICATION_ID, 27 | flags: ApplicationFlags.FLAGS_NONE); 28 | } 29 | 30 | protected override void startup () { 31 | base.startup (); 32 | 33 | kdeconnectManager = new KDEConnectManager(); 34 | 35 | new MainLoop ().run (); 36 | } 37 | 38 | protected override void activate () { 39 | if (kdeconnectManager.get_number_connected_devices () == 0) 40 | ftw = new FirstTimeWizard (kdeconnectManager); 41 | else 42 | message ("User already know how to pair, dont show FirstTimeWizard"); 43 | } 44 | 45 | static int main (string[] args) { 46 | GLib.Intl.setlocale (GLib.LocaleCategory.ALL, ""); 47 | GLib.Intl.textdomain (Config.GETTEXT_PACKAGE); 48 | GLib.Intl.bindtextdomain (Config.GETTEXT_PACKAGE, Config.PACKAGE_LOCALEDIR); 49 | GLib.Intl.bind_textdomain_codeset (Config.GETTEXT_PACKAGE, "UTF-8"); 50 | 51 | Application app = new Application (); 52 | 53 | try { 54 | var opt_context = new OptionContext ("- indicator-kdeconnect"); 55 | opt_context.set_help_enabled (true); 56 | opt_context.add_main_entries (options, null); 57 | opt_context.parse (ref args); 58 | } 59 | catch (OptionError e) { 60 | message ("%s\n", e.message); 61 | message ("Run '%s --help' to see a full list of available command line options.\n", args[0]); 62 | return 1; 63 | } 64 | 65 | if (debug) { 66 | Environment.set_variable("G_MESSAGES_DEBUG", "all", false); 67 | message("indicator-kdeconnect daemon started in debug mode."); 68 | } 69 | 70 | if (version) { 71 | message ("%s %s\n", Config.PACKAGE_NAME, 72 | Config.PACKAGE_VERSION); 73 | return 0; 74 | } 75 | else if (kdeconnect_api_version) { 76 | message ("%s\n", Config.PACKAGE_API_VERSION); 77 | return 0; 78 | } 79 | else if (sendvia_application) { 80 | message ("Show SendVia Application"); 81 | return new SendViaDialog ().run (args); 82 | } 83 | else if (settings_application){ 84 | message ("Show Settings Application"); 85 | return new SettingsDialog ().run (args); 86 | } 87 | 88 | return app.run (args); 89 | } 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /src/indicator/meson.build: -------------------------------------------------------------------------------- 1 | # Executable type 2 | 3 | module_deps = [ 4 | modules_deps, 5 | dependency('appindicator3-0.1'), 6 | indicator_kdeconnect_dep 7 | ] 8 | 9 | module_source = ['main.vala', 10 | 'kdeconnectManager.vala', 11 | 'device.vala', 12 | 'firstTimeWizard.vala'] 13 | 14 | module_exec = executable(meson.project_name(), 15 | sources: module_source, 16 | dependencies : module_deps, 17 | install: true) -------------------------------------------------------------------------------- /src/indicator/startupManager.vala: -------------------------------------------------------------------------------- 1 | /* Copyright 2014 KDE Connect Indicator Developers 2 | * 3 | * This software is licensed under the GNU Lesser General Public License 4 | * (version 2.1 or later). See the COPYING file in this distribution. 5 | */ 6 | namespace IndicatorKDEConnect { 7 | public class StartupManager { 8 | private const string desktop_file = "indicator-kdeconnect.desktop"; 9 | private string autostart_folder; 10 | private File startup_file; 11 | 12 | public StartupManager () { 13 | autostart_folder = Environment.get_user_config_dir ()+"/autostart/"; 14 | startup_file = File.new_for_path (autostart_folder+desktop_file); 15 | } 16 | 17 | public bool is_installed () { 18 | return startup_file.query_exists (); 19 | } 20 | 21 | public void install () { 22 | var desktop_file = File.new_for_path (Config.PACKAGE_DATADIR + 23 | "/applications/" + 24 | desktop_file); 25 | 26 | if (desktop_file.query_exists ()) { 27 | try { 28 | var startup_folder = startup_file.get_parent (); 29 | 30 | if (!startup_folder.query_exists ()) 31 | startup_folder.make_directory_with_parents (); 32 | 33 | if (desktop_file.copy (startup_file, FileCopyFlags.NONE)) 34 | debug ("autostart file installed in %s", startup_file.get_path ()); 35 | } catch (Error e) { 36 | message (e.message); 37 | } 38 | } 39 | else 40 | debug ("Cant find .desktop file in %s", desktop_file.get_path ()); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/meson.build: -------------------------------------------------------------------------------- 1 | # Modules Target 2 | 3 | modules_deps = [ 4 | dependency('gtk+-3.0'), 5 | dependency('gee-0.8'), 6 | dependency('json-glib-1.0') 7 | ] 8 | 9 | module_template = files('module.in') 10 | 11 | module_list = [ 12 | 'extensions', 13 | 'common', 14 | 'indicator' 15 | ] 16 | 17 | foreach module : module_list 18 | subdir(module) 19 | endforeach -------------------------------------------------------------------------------- /src/module.in: -------------------------------------------------------------------------------- 1 | [Module] 2 | Module=@file@ 3 | Name=@name@ 4 | Description=@desc@ 5 | --------------------------------------------------------------------------------