From: phodina via Guix-patches via <guix-patches@gnu.org>
To: 56664@debbugs.gnu.org
Subject: [bug#56664] [PATCH] gnu: Add qtscrcpy.
Date: Wed, 20 Jul 2022 13:20:23 +0000 [thread overview]
Message-ID: <DXNUqTrJ0MYzJVegrgd4AzdR8xXS7jKuGOGJxWYZfl0q5sJ5AM5GqgSVn-kYTgZP8HyL-RQVjTULOLKNAmXukf9wWbQER42MXPyjlOOWkmw=@protonmail.com> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 370 bytes --]
Hi,
this patch adds support for screen mirroring Android phones on the desktops.
There are 2 remarks:
- The Android part scrcpy-server is prebuild due to Guix not supporting gradle and Android builds. Without this the tool does not work.
- I've currently hardcoded the x86 architecture in the install phase. Not sure how to make it architecture agnostic.
----
Petr
[-- Attachment #1.2: Type: text/html, Size: 861 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Add-qtscrcpy.patch --]
[-- Type: text/x-patch; name=0001-gnu-Add-qtscrcpy.patch, Size: 7071 bytes --]
From 3ec453db1bc1c6b5d75242ae2491f0bd36f5a26a Mon Sep 17 00:00:00 2001
From: Petr Hodina <phodina@protonmail.com>
Date: Tue, 11 Jan 2022 03:14:03 +0100
Subject: [PATCH] gnu: Add qtscrcpy.
* gnu/packages/android.scm (qtscrcpy): New variable.
diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm
index 04dc4b6499..15f96ba294 100644
--- a/gnu/packages/android.scm
+++ b/gnu/packages/android.scm
@@ -11,7 +11,7 @@
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Sergey Trofimov <sarg@sarg.org.ru>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
-;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
+;;; Copyright © 2021, 2022 Petr Hodina <phodina@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -34,6 +34,7 @@ (define-module (gnu packages android)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix build-system android-ndk)
+ #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix build-system go)
#:use-module (guix build-system python)
@@ -49,7 +50,9 @@ (define-module (gnu packages android)
#:use-module (gnu packages image)
#:use-module (gnu packages java)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages qt)
#:use-module (gnu packages pcre)
+ #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages python-web)
@@ -61,6 +64,7 @@ (define-module (gnu packages android)
#:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
+ #:use-module (gnu packages video)
#:use-module (gnu packages virtualization)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml))
@@ -1133,6 +1137,90 @@ (define-public python-miio
for communicating with Xiaomi smart appliances over miIO and MIoT protocols.")
(license license:gpl3+)))
+(define-public qtscrcpy
+ ;; this tracks the QtScrcpyCore submodule
+ (let ((commit "3004e63935fe8a3e57b91e117a91c1a6aa68ae42")
+ (revision "1"))
+ (package
+ (name "qtscrcpy")
+ (version "2.0.1")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/barry-ran/QtScrcpy")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1l3l6z4snzfljzzywf6yxw0fc1c0kkkcw3477rmfkrd7rapwxndl"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list #:tests? #f
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'download-qtscrcpycore
+ (lambda* _
+ (copy-recursively (string-append #$(origin
+ (method
+ git-fetch)
+ (uri (git-reference
+ (url
+ "https://github.com/barry-ran/QtScrcpyCore")
+ (commit
+ commit)))
+ (file-name (git-file-name
+ name
+ version))
+ (sha256 (base32
+ "0x57vv1la27m67dgvbll24h7amqmxjs8xik4qyizx5qjxhylw93c")))
+ "/")
+ "QtScrcpy/QtScrcpyCore")
+ (substitute* "QtScrcpy/QtScrcpyCore/CMakeLists.txt"
+ ((".*/src/third_party/adb/linux/adb.*")
+ ""))
+ (delete-file-recursively
+ "QtScrcpy/QtScrcpyCore/src/third_party/adb")
+ (delete-file-recursively
+ "QtScrcpy/QtScrcpyCore/src/third_party/ffmpeg")))
+ (add-after 'unpack 'fix-adb-path
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "QtScrcpy/main.cpp"
+ (("\"\\..*linux/adb")
+ (string-append "\""
+ (assoc-ref inputs "adb")
+ "/bin/adb")))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((bin (string-append #$output "/bin"))
+ (build (string-append (getenv "PWD")
+ "/source/output/x64/RelWithDebInfo"))
+ (qtscrcpy (string-append build
+ "/QtScrcpy"))
+ (scrcpy-server (string-append build
+ "/scrcpy-server"))
+ (config (string-append #$output
+ "/etc/qtscrcpy"))
+ (ini (string-append (getenv "PWD")
+ "/source/config/config.ini")))
+ (mkdir-p bin)
+ (mkdir-p config)
+ (install-file qtscrcpy bin)
+ (install-file scrcpy-server bin)
+ (install-file ini config)))))))
+ (native-inputs (list qttools pkg-config))
+ (inputs (list adb
+ ffmpeg
+ qtx11extras
+ qtmultimedia
+ qtbase-5
+ zlib))
+ (synopsis "Android real-time display control software")
+ (description
+ "This package provides QtScrcpy which connects to Android
+devices via USB (or via TCP/IP) for display and control. It does NOT require
+the root privileges. Supports up to 16 Android device connections at the same time.")
+ (home-page "https://github.com/DanielOgorchock/joycond")
+ (license license:asl2.0))))
+
(define-public fdroidserver
(package
(name "fdroidserver")
--
2.37.0
next reply other threads:[~2022-07-20 13:28 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-20 13:20 phodina via Guix-patches via [this message]
2022-07-20 13:48 ` [bug#56664] [PATCH] gnu: Add qtscrcpy Maxime Devos
2022-07-20 15:03 ` phodina via Guix-patches via
2022-07-20 15:10 ` Maxime Devos
2022-07-20 15:18 ` Maxime Devos
2022-07-20 15:17 ` Maxime Devos
2022-07-20 15:32 ` phodina via Guix-patches via
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='DXNUqTrJ0MYzJVegrgd4AzdR8xXS7jKuGOGJxWYZfl0q5sJ5AM5GqgSVn-kYTgZP8HyL-RQVjTULOLKNAmXukf9wWbQER42MXPyjlOOWkmw=@protonmail.com' \
--to=guix-patches@gnu.org \
--cc=56664@debbugs.gnu.org \
--cc=phodina@protonmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).