Subject: [PATCH] Add rclone-browser

From: Nicolas Goaziou <[email-masked]>
Date: Tue, 30 Jul 2019 10:17:08 +0200

Hello,

The following patch adds Rclone-browser, a simple GUI for Rclone.

Note: I added Rclone as a propagated input, but I'm not sure about this.
I.e., it builds without that input, but it is then unusable. Do we
consider users are responsible for installing Rclone themselves anyway?

Regards,

-- 
Nicolas Goaziou
>From d1765e2c4516f27574caa175883b21a7cdb9679f Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <[email-masked]>
Date: Tue, 30 Jul 2019 10:11:04 +0200
Subject: [PATCH] gnu: Add rclone-browser.

* gnu/packages/sync.scm (rclone-browser): New variable.
---
 gnu/packages/sync.scm | 80 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/gnu/packages/sync.scm b/gnu/packages/sync.scm
index 1c80b7978e..57421114a3 100644
--- a/gnu/packages/sync.scm
+++ b/gnu/packages/sync.scm
@@ -285,3 +285,83 @@ Features include:
 @end itemize")
     (home-page "https://rclone.org/")
     (license license:expat)))
+
+(define-public rclone-browser
+  (package
+    (name "rclone-browser")
+    (version "1.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mmozeiko/RcloneBrowser.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1ldradd5c606mfkh46y4mhcvf9kbjhamw0gahksp9w43h5dh3ir7"))))
+    (build-system cmake-build-system)
+    (arguments
+     `(#:tests? #f                      ;no test
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-hard-coded-paths
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (substitute* "scripts/rclone-browser.desktop"
+                 (("/usr/") (string-append out "/")))
+               #t))))))
+    (inputs
+     `(("qtbase" ,qtbase)))
+    (propagated-inputs
+     `(("rclone" ,rclone)))
+    (home-page "https://martins.ninja/RcloneBrowser/")
+    (synopsis "Simple cross platfrom GUI for rclone command line tool")
+    (description "RcloneBrowser is a GUI for Rclone.
+
+Its features are:
+
+@itemize
+
+@item Allows to browse and modify any Rclone remote, including
+encrypted ones;
+
+@item Uses same configuration file as Rclone, no extra configuration
+required;
+
+@item Supports custom location and encryption for @file{.rclone.conf}
+configuration file;
+
+@item Simultaneously navigate multiple repositories in separate tabs;
+
+@item Lists files hierarchically with file name, size and modify date;
+
+@item All Rclone commands are executed asynchronously, no freezing
+GUI;
+
+@item File hierarchy is lazily cached in memory, for faster traversal
+of folders;
+
+@item Allows to upload, download, create new folders, rename or delete
+files and folders;
+
+@item Allows to calculate size of folder, export list of files and
+copy Rclone command to clipboard;
+
+@item Can process multiple upload or download jobs in background;
+
+@item Drag & drop support for dragging files from local file explorer
+for uploading;
+
+@item Streaming media files for playback in player like mpv or
+similar;
+
+@item Mount and unmount folders;
+
+@item Optionally minimizes to tray, with notifications when
+upload/download finishes;
+
+@item Supports portable mode (create @file{.ini} file next to
+executable with same name), Rclone and @file{.rclone.conf} path now
+can be relative to executable.
+@end itemize")
+    (license license:unlicense)))
-- 
2.22.0