@@ -60,6 +60,7 @@
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
+;;; Copyright © 2023 aurtzy <aurtzy@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -4700,3 +4701,56 @@ (define-public dropwatch
recording packets that are dropped by the kernel. It provides the commands
@command{dropwatch} and @command{dwdump}.")
(license license:gpl2+)))
+
+(define-public syncplay
+ (package
+ (name "syncplay")
+ (version "1.7.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/Syncplay/syncplay.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "061kpnb48lad8rr8v58xac33mwpbrixfbhn7d0xa63zpxg43bvsd"))
+ (patches (search-patches "syncplay-fix-typeerror.patch"))))
+ (build-system python-build-system)
+ (arguments
+ (list #:imported-modules `(,@%python-build-system-modules
+ (guix build qt-utils)
+ (guix build utils))
+ #:modules '((guix build python-build-system)
+ (guix build qt-utils)
+ (guix build utils))
+ #:phases #~(modify-phases %standard-phases
+ (delete 'check)
+ (replace 'install
+ (lambda _
+ (invoke "make" "install" "DESTDIR="
+ (string-append "PREFIX="
+ (assoc-ref %outputs "out")))))
+ (add-after 'install 'wrap-qt
+ (lambda* (#:key inputs #:allow-other-keys)
+ (wrap-qt-program "syncplay"
+ #:output #$output
+ #:inputs inputs
+ #:qt-major-version "6"))))))
+ (native-inputs (list python-pyside-6))
+ (inputs (list bash-minimal
+ python-certifi
+ python-idna
+ python-service-identity
+ python-twisted
+ qtwayland))
+ (home-page "https://syncplay.pl")
+ (synopsis "Client/server to synchronize media playback on many computers")
+ (description
+ "Syncplay is a solution to synchronize video playback across multiple
+instances of media players over the Internet. When one person pauses/unpauses
+playback or skips to a position in the video, this is replicated across all
+media players connected to the same server and in the same \"room\" (viewing
+session). A built-in text chat for discussing the synced media is also
+included for convenience.")
+ (license license:asl2.0)))
new file mode 100644
@@ -0,0 +1,25 @@
+From b62b038cdf58c54205987dfc52ebf228505ad03b Mon Sep 17 00:00:00 2001
+From: Etoh <etoh@syncplay.pl>
+Date: Tue, 11 Apr 2023 20:22:52 +0100
+Subject: [PATCH] Fix ArchLinux GUI TypeError (#600)
+
+---
+ syncplay/ui/gui.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/syncplay/ui/gui.py b/syncplay/ui/gui.py
+index 7c100542..ca0f5d4a 100755
+--- a/syncplay/ui/gui.py
++++ b/syncplay/ui/gui.py
+@@ -2106,7 +2106,10 @@ def __init__(self, passedBar=None):
+ if isMacOS():
+ self.setWindowFlags(self.windowFlags())
+ else:
+- self.setWindowFlags(self.windowFlags() & Qt.AA_DontUseNativeMenuBar)
++ try:
++ self.setWindowFlags(self.windowFlags() & Qt.AA_DontUseNativeMenuBar)
++ except TypeError:
++ self.setWindowFlags(self.windowFlags())
+ self.setWindowTitle("Syncplay v" + version + revision)
+ self.mainLayout = QtWidgets.QVBoxLayout()
+ self.addTopLayout(self)