syncthingtray/README.md

135 lines
6.0 KiB
Markdown
Raw Normal View History

2016-08-25 00:45:32 +02:00
# Syncthing Tray
Qt 5-based tray application for [Syncthing](https://github.com/syncthing/syncthing)
2016-09-12 21:54:25 +02:00
## Supported platforms
* Designed to work under any desktop environment supported by Qt 5 with tray icon
2016-12-26 19:06:54 +01:00
support
2016-09-12 21:54:25 +02:00
* No desktop environment specific libraries required
2016-12-26 19:06:54 +01:00
* Tested under \*
2016-09-12 21:54:25 +02:00
* Plasma 5
* Openbox/qt5ct/Tint2
* Cinnamon
* Windows 10
* Can be shown as regular window if tray icon support is not available
2016-09-12 21:54:25 +02:00
2016-12-26 19:06:54 +01:00
\* If you can confirm it works under other desktop environments, please add it
to the list. Maybe someone could check whether it works under Mac OS X.
2016-09-12 21:54:25 +02:00
## Features
2016-08-25 00:45:32 +02:00
* Provides quick access to most frequently used features but does not intend to replace the official web UI
2016-09-01 16:34:30 +02:00
* Check state of directories and devices
* Check current traffic statistics
* Display further details about direcoties and devices, like last file, last
2016-12-12 23:43:06 +01:00
scan, items out of sync, ...
2016-09-21 21:09:12 +02:00
* Display ongoing downloads
2016-12-12 23:43:06 +01:00
* Display Syncthing log
2016-09-03 19:39:43 +02:00
* Trigger re-scan of a specific directory or all directories at once
2016-09-01 16:34:30 +02:00
* Open a directory with the default file browser
2016-09-03 19:39:43 +02:00
* Pause/resume a specific device or all devices at once
2016-08-25 00:45:32 +02:00
* Shows Syncthing notifications
2016-12-26 19:57:51 +01:00
* Does *not* allow configuring Syncthing itself (currently I do not intend to add this feature as it could
cause more harm than good when not implemented correctly)
2016-09-03 19:39:43 +02:00
* Can read the Syncthing configuration file for quick setup when just connecting to local instance
2016-12-26 19:57:51 +01:00
* Can shows the status of the Syncthing systemd unit and allows to start and stop it
2016-09-03 19:39:43 +02:00
* Provides an option to conveniently add the tray to the applications launched when the desktop environment starts
2016-12-26 19:57:51 +01:00
* Can launch Syncthing automatically when started and display stdout/stderr (useful under Windows)
2016-08-25 00:45:32 +02:00
* Provides quick access to the official web UI
* Utilizes either Qt WebKit or Qt WebEngine
* Can be built without web view support as well (then the web UI is opened in the regular browser)
2016-09-03 20:14:52 +02:00
* Allows quickly switching between multiple Syncthing instances
2016-12-12 23:43:06 +01:00
* Shows notifications via Qt or uses D-Bus notification daemon directly
2016-10-02 21:59:28 +02:00
* Features a simple command line utility `syncthingctl` to check Syncthing status and trigger rescan/pause/resume/restart
2016-09-12 21:54:25 +02:00
## Planned features
The tray is still under development; the following features are planned:
* Show recently processed items
* Improve notification handling
* Create Plasmoid for Plasma 5 desktop
2016-08-25 00:45:32 +02:00
## Screenshots
2016-09-12 21:54:25 +02:00
2016-08-26 16:43:53 +02:00
### Under Openbox/Tint2
![Openbox/Tint2](/tray/resources/screenshots/tint2.png?raw=true)
2016-08-26 16:43:53 +02:00
2016-10-30 18:20:00 +01:00
### Under Plasma 5
![Plasma 5](/tray/resources/screenshots/plasma.png?raw=true)
2016-12-12 23:43:06 +01:00
![Plasma 5 (directory error)](/tray/resources/screenshots/plasma-2.png?raw=true)
2016-10-30 18:20:00 +01:00
![Plasma 5 (dark)](/tray/resources/screenshots/plasma-dark.png?raw=true)
2016-08-26 16:43:53 +02:00
2016-10-30 18:20:00 +01:00
### Settings dialog
![Settings dialog](/tray/resources/screenshots/settings.png?raw=true)
2016-08-26 16:43:53 +02:00
2016-10-30 18:20:00 +01:00
### Web view
![Web view](/tray/resources/screenshots/webview.png?raw=true)
2016-10-30 18:20:00 +01:00
![Web view (dark)](/tray/resources/screenshots/webview-dark.png?raw=true)
2016-08-25 00:45:32 +02:00
2016-12-12 23:58:06 +01:00
## Hotkeys
To create hotkeys, you can use the same approach as for any other
application. Just make it invoke the `syncthingctl` application with
the arguments for the desired action.
### Hotkey for web UI
Just add `--webui` to the `syncthingtray` arguments to trigger the web UI.
Syncthing Tray ensures that no second instance will be spawned if it is already
2016-12-12 23:58:06 +01:00
running and just trigger the web UI.
2016-11-26 12:49:40 +01:00
## Download
### Source
See the release section on GitHub.
### Packages and binaries
* Arch Linux
* for PKGBUILDs checkout [my GitHub repository](https://github.com/Martchus/PKGBUILDs) or
[the AUR](https://aur.archlinux.org/packages?SeB=m&K=Martchus)
* for binary repository checkout [my website](http://martchus.no-ip.biz/website/page.php?name=programming)
* Tumbleweed
* for RPM \*.spec files and binary repository checkout
[openSUSE Build Servide](https://build.opensuse.org/project/show/home:mkittler)
* Windows
* for mingw-w64 PKGBUILDs checkout [my GitHub repository](https://github.com/Martchus/PKGBUILDs)
* for binaries checkout [my website](http://martchus.no-ip.biz/website/page.php?name=programming) and the
release section on GitHub
2016-11-02 20:02:59 +01:00
.
2016-08-25 00:45:32 +02:00
## Build instructions
The application depends on [c++utilities](https://github.com/Martchus/cpp-utilities) and [qtutilities](https://github.com/Martchus/qtutilities) and is built the same way as these libaries. For basic instructions checkout the README file of [c++utilities](https://github.com/Martchus/cpp-utilities). For building this straight, see the next section.
2016-08-25 00:45:32 +02:00
The following Qt 5 modules are requried: core network gui widgets svg webenginewidgets/webkitwidgets
2016-08-25 00:45:32 +02:00
#### Building this straight
0. Install (preferably the latest version of) g++ or clang, the required Qt 5 modules and CMake.
1. Get the sources. For the lastest version from Git clone the following repositories:
2016-11-01 17:08:51 +01:00
```
cd $SOURCES
git clone https://github.com/Martchus/cpp-utilities.git
git clone https://github.com/Martchus/qtutilities.git
git glone https://github.com/Martchus/syncthingtray.git
git clone https://github.com/Martchus/subdirs.git
```
2. Build and install everything in one step:
2016-11-01 17:08:51 +01:00
```
cd $BUILD_DIR
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="/install/prefix" \
$SOURCES/subdirs/syncthingtray
make install -j$(nproc)
```
2016-09-25 20:54:09 +02:00
#### Select Qt module for WebView
2016-08-25 00:45:32 +02:00
* If Qt WebKitWidgets is installed on the system, the tray will link against it. Otherwise it will link against Qt WebEngineWidgets.
* To force usage of Qt WebKit/Qt WebEngine or to disable both add `-DWEBVIEW_PROVIDER=webkit/webengine/none` to the CMake arguments.
2016-09-01 16:34:30 +02:00
2016-09-25 20:54:09 +02:00
#### BTW: I still prefer the deprecated Qt WebKit because
* Currently there is no way to allow a particular self-signed certificate in Qt
WebEngine. Currently any self-signed certificate is accepted! See:
https://bugreports.qt.io/browse/QTBUG-51176
2016-09-01 16:34:30 +02:00
* Qt WebEngine can not be built with mingw-w64.
2016-11-16 20:40:54 +01:00
* QWebEngineView seems to eat `keyPressEvent`.
2016-09-01 16:34:30 +02:00
* Qt WebEngine is more buggy in my experience.
* Security issues are not a concern because no other website than the
Syncthing web UI is shown. Any external links will be opened in the
regular web browser anyways.