From b4e6b6393edfc111c98788383adfa470d92e8bc5 Mon Sep 17 00:00:00 2001 From: ochibani <11yzyv86j@relay.firefox.com> Date: Tue, 18 Jun 2024 07:53:30 +0200 Subject: [PATCH] fix draw_mouse --- interfaces/main.ui | 1 - locales/ar.ftl | 16 +- locales/ar_YE.ftl | 16 +- locales/en.ftl | 4 +- locales/en_US.ftl | 4 +- packaging/guix/blue-recorder.scm | 1093 ------------------------------ src/config_management.rs | 1 + src/ffmpeg_interface.rs | 49 +- src/main.rs | 20 +- 9 files changed, 65 insertions(+), 1139 deletions(-) delete mode 100644 packaging/guix/blue-recorder.scm diff --git a/interfaces/main.ui b/interfaces/main.ui index 9f5155b..67705f2 100644 --- a/interfaces/main.ui +++ b/interfaces/main.ui @@ -258,7 +258,6 @@ 3 3 3 - True True diff --git a/locales/ar.ftl b/locales/ar.ftl index d53d56f..692e9a5 100644 --- a/locales/ar.ftl +++ b/locales/ar.ftl @@ -87,7 +87,7 @@ file-name = اسم الملفّ الافتراضي: file-name-overwritten = اسم الملف (سيُكتَبُ عليه) # Follow mouse label -follow-mouse = إبراز مؤشر الفأرة +follow-mouse = Follow Mouse # Frames label frames = الإطارات: @@ -103,16 +103,16 @@ license = لمزيد تفاصيل راجع رخصة جنو العمومية. إن لم تكن حصلت على نسخة من رخصة جنو العمومية مع المسجل الأزرق فانظر { license-website }. # Bitrate label -bitrate = معدل البت: +bitrate = Bitrate: # Recording button record = سجل # Record audio label -record-audio = تسجيل صوت اللاقط +record-audio = Record Mic # Record speaker label -record-speaker = تسجيل صوت المكبر +record-speaker = Record Speaker # Record video label record-video = تسجيل الصورة @@ -138,18 +138,18 @@ website = الموقع about-tooltip = ما يُستَحسَنُ أن تعلمه عن المسجل الأزرق area-tooltip = يحدد المنطقة المُراد تسجيلها audio-source-tooltip = لاختيار مدخل الصوت -audio-tooltip = يسجل باستخدام مدخل الصوت +audio-tooltip = Mic audio recording delay-tooltip = مُهلة قبل بدء التسجيل folder-tooltip = لاختيار مكان التخزين -follow-mouse-tooltip = يميز مؤشر الفأرة عند التسجيل +follow-mouse-tooltip = Make the grabbed area follow the mouse format-tooltip = لاختيار صيغة الخَرج frames-tooltip = عدد الإطارات في الثانية hide-tooltip = لإخفاء نافذة المسجل الأزرق عند بدء التسجيل mouse-tooltip = يظهر مؤشر الفأرة عند التسجيل -bitrate-tooltip = ضبط معدل البت بوحدة KB +bitrate-tooltip = Set video bitrate in KB/s record-tooltip = يبدأ تسجيل الشاشة screen-tooltip = يحدد الشاشة ليسجلها -speaker-tooltip = يسجل باستخدام مخرج الصوت +speaker-tooltip = Speakr sound recording stop-tooltip = وقف تسجيل الشاشة video-tooltip = يسجل الشاشة wayland-tooltip = غير مدعوم في وايلاند diff --git a/locales/ar_YE.ftl b/locales/ar_YE.ftl index d53d56f..692e9a5 100644 --- a/locales/ar_YE.ftl +++ b/locales/ar_YE.ftl @@ -87,7 +87,7 @@ file-name = اسم الملفّ الافتراضي: file-name-overwritten = اسم الملف (سيُكتَبُ عليه) # Follow mouse label -follow-mouse = إبراز مؤشر الفأرة +follow-mouse = Follow Mouse # Frames label frames = الإطارات: @@ -103,16 +103,16 @@ license = لمزيد تفاصيل راجع رخصة جنو العمومية. إن لم تكن حصلت على نسخة من رخصة جنو العمومية مع المسجل الأزرق فانظر { license-website }. # Bitrate label -bitrate = معدل البت: +bitrate = Bitrate: # Recording button record = سجل # Record audio label -record-audio = تسجيل صوت اللاقط +record-audio = Record Mic # Record speaker label -record-speaker = تسجيل صوت المكبر +record-speaker = Record Speaker # Record video label record-video = تسجيل الصورة @@ -138,18 +138,18 @@ website = الموقع about-tooltip = ما يُستَحسَنُ أن تعلمه عن المسجل الأزرق area-tooltip = يحدد المنطقة المُراد تسجيلها audio-source-tooltip = لاختيار مدخل الصوت -audio-tooltip = يسجل باستخدام مدخل الصوت +audio-tooltip = Mic audio recording delay-tooltip = مُهلة قبل بدء التسجيل folder-tooltip = لاختيار مكان التخزين -follow-mouse-tooltip = يميز مؤشر الفأرة عند التسجيل +follow-mouse-tooltip = Make the grabbed area follow the mouse format-tooltip = لاختيار صيغة الخَرج frames-tooltip = عدد الإطارات في الثانية hide-tooltip = لإخفاء نافذة المسجل الأزرق عند بدء التسجيل mouse-tooltip = يظهر مؤشر الفأرة عند التسجيل -bitrate-tooltip = ضبط معدل البت بوحدة KB +bitrate-tooltip = Set video bitrate in KB/s record-tooltip = يبدأ تسجيل الشاشة screen-tooltip = يحدد الشاشة ليسجلها -speaker-tooltip = يسجل باستخدام مخرج الصوت +speaker-tooltip = Speakr sound recording stop-tooltip = وقف تسجيل الشاشة video-tooltip = يسجل الشاشة wayland-tooltip = غير مدعوم في وايلاند diff --git a/locales/en.ftl b/locales/en.ftl index b134997..7c45d83 100644 --- a/locales/en.ftl +++ b/locales/en.ftl @@ -138,12 +138,12 @@ audio-source-tooltip = Select audio source audio-tooltip = Mic audio recording delay-tooltip = Delay time before starting record folder-tooltip = Select storage location -follow-mouse-tooltip = Highlight mouse +follow-mouse-tooltip = Make the grabbed area follow the mouse format-tooltip = Select file format frames-tooltip = Frames rate hide-tooltip = Hide window when start recording mouse-tooltip = Mouse appears in video recording -bitrate-tooltip = Set video bitrate in KB +bitrate-tooltip = Set video bitrate in KB/s record-tooltip = Start screen record screen-tooltip = Select screen to record speaker-tooltip = Speakr sound recording diff --git a/locales/en_US.ftl b/locales/en_US.ftl index b134997..7c45d83 100644 --- a/locales/en_US.ftl +++ b/locales/en_US.ftl @@ -138,12 +138,12 @@ audio-source-tooltip = Select audio source audio-tooltip = Mic audio recording delay-tooltip = Delay time before starting record folder-tooltip = Select storage location -follow-mouse-tooltip = Highlight mouse +follow-mouse-tooltip = Make the grabbed area follow the mouse format-tooltip = Select file format frames-tooltip = Frames rate hide-tooltip = Hide window when start recording mouse-tooltip = Mouse appears in video recording -bitrate-tooltip = Set video bitrate in KB +bitrate-tooltip = Set video bitrate in KB/s record-tooltip = Start screen record screen-tooltip = Select screen to record speaker-tooltip = Speakr sound recording diff --git a/packaging/guix/blue-recorder.scm b/packaging/guix/blue-recorder.scm deleted file mode 100644 index e554469..0000000 --- a/packaging/guix/blue-recorder.scm +++ /dev/null @@ -1,1093 +0,0 @@ -(define-module (blue-recorder) - #:use-module (guix packages) - #:use-module (guix download) - #:use-module (guix git-download) - #:use-module (guix build-system cargo) - #:use-module (guix build-system gnu) - #:use-module (gnu packages crates-graphics) - #:use-module (gnu packages crates-io) - #:use-module (gnu packages crates-gtk) - #:use-module (guix build-system copy) - #:use-module (gnu packages freedesktop) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (gnu packages llvm) - #:use-module (gnu packages game-development) - #:use-module (gnu packages gettext) - #:use-module (gnu packages glib) - #:use-module (gnu packages gtk) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages pulseaudio) - #:use-module (gnu packages video) - #:use-module (gnu packages xorg)) - -(define-public rust-rust-ini-0.16 - (package - (name "rust-rust-ini") - (version "0.16.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "rust-ini" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0qnyp96kslw5ivcf5a7dhiwbqpb72sh8rq40m81vbkiim54z5nyw")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-ordered-multimap" ,rust-ordered-multimap-0.3)))) - (home-page "https://github.com/zonyitoo/rust-ini") - (synopsis "INI configuration file parsing library in Rust") - (description - "This package is an INI configuration file parsing library in Rust.") - (license license:expat))) - -(define-public rust-subprocess-0.2 - (package - (name "rust-subprocess") - (version "0.2.7") - (source - (origin - (method url-fetch) - (uri (crate-uri "subprocess" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1i6kbwggg36fwspybkyn9kwsy5azhg9g22aic2lrnlm2khgq0jrk")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-libc" ,rust-libc-0.2) - ("rust-winapi" ,rust-winapi-0.3)) - #:cargo-development-inputs - (("rust-tempdir" ,rust-tempdir-0.3) - ("rust-lazy-static" ,rust-lazy-static-1)))) - (home-page "https://github.com/hniksic/rust-subprocess") - (synopsis "Execution of child processes and pipelines.") - (description - "Execution of child processes and pipelines, inspired by Python's subprocess -module, with Rust-specific extensions.") - (license (list license:asl2.0 license:expat)))) - -(define-public rust-enumflags2-derive-0.6 - (package - (name "rust-enumflags2-derive") - (version "0.6.4") - (source - (origin - (method url-fetch) - (uri (crate-uri "enumflags2-derive" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1kkcwi4n76bi1c16ms00dyk4d393gdf29kpr4k9zsn5z7m7fjvll")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-syn" ,rust-syn-1) - ("rust-quote" ,rust-quote-1) - ("rust-proc-macro2" ,rust-proc-macro2-1)))) - (home-page "https://github.com/NieDzejkob/enumflags2") - (synopsis "Implements the classic bitflags datastructure.") - (description - "Enumflags2 implements the classic bitflags datastructure.") - (license (list license:asl2.0 license:expat)))) - -(define-public rust-enumflags2-0.6 - (package - (name "rust-enumflags2") - (version "0.6.4") - (source - (origin - (method url-fetch) - (uri (crate-uri "enumflags2" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "182xd6cxxmadx1axnz6x73d12pzgwkc712zq2lxd4z1k48lxij43")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-enumflags2-derive" ,rust-enumflags2-derive-0.6) - ("rust-serde" ,rust-serde-1)))) - (home-page "https://github.com/NieDzejkob/enumflags2") - (synopsis "Implements the classic bitflags datastructure.") - (description - "Enumflags2 implements the classic bitflags datastructure.") - (license (list license:asl2.0 license:expat)))) - -(define-public rust-simple-logger-1 - (package - (name "rust-simple-logger") - (version "1.11.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "simple-logger" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "166iy6lxkf23am37aiyn104j8wfxmz59mp4r2i51vb9y15yg2myd")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-chrono" ,rust-chrono-0.4) - ("rust-colored" ,rust-colored-1) - ("rust-log" ,rust-log-0.4)))) - (home-page "https://github.com/borntyping/rust-simple-logger") - (synopsis "A logger that prints all messages with a readable output format.") - (description - "A logger that prints all messages with a readable output format.") - (license license:expat))) - -(define-public rust-serde-xml-rs-0.4 - (package - (name "rust-serde-xml-rs") - (version "0.4.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "serde-xml-rs" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1ykx1xkfd59gf0ijnp93xhpd457xy4zi8xv2hrr0ikvcd6h1pgzh")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-test-flags '("--release" "--" "--skip=doctype") - #:cargo-inputs - (("rust-log" ,rust-log-0.4) - ("rust-serde" ,rust-serde-1) - ("rust-xml-rs" ,rust-xml-rs-0.8) - ("rust-thiserror" ,rust-thiserror-1)) - #:cargo-development-inputs - (("rust-simple-logger" ,rust-simple-logger-1) - ("rust-serde-derive" ,rust-serde-derive-1) - ("rust-docmatic" ,rust-docmatic-0.1)))) - (home-page "https://github.com/RReverser/serde-xml-rs") - (synopsis "Deserializer for Serde") - (description - "xml-rs based deserializer for Serde (compatible with 0.9+)") - (license license:expat))) - -(define-public rust-zvariant-derive-2 - (package - (name "rust-zvariant-derive") - (version "2.3.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "zvariant-derive" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1kba1ynzcfch41wnvyn7y53rq6h8f7k6mwhwkdqra9m2yxk7qclg")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-syn" ,rust-syn-1) - ("rust-quote" ,rust-quote-1) - ("rust-proc-macro-crate" ,rust-proc-macro-crate-0.1)) - #:cargo-development-inputs - (("rust-zvariant" ,rust-zvariant-2) - ("rust-enumflags2" ,rust-enumflags2-0.6) - ("rust-serde" ,rust-serde-1) - ("rust-serde-repr" ,rust-serde-repr-0.1)))) - (home-page "https://gitlab.freedesktop.org/levans/zbus") - (synopsis "A Rust API for D-Bus communication.") - (description - "A Rust API for D-Bus communication. The aim is to provide a safe and simple high- and low-level API akin to -GDBus, that doesn't depend on C libraries.") - (license license:expat))) - -(define-public rust-zvariant-2 - (package - (name "rust-zvariant") - (version "2.3.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "zvariant" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "19014ayd9k151zhxxm0sjqp5psjrjcmd2qb01narmmpgv5wbb2yc")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #f - #:cargo-inputs - (("rust-byteorder" ,rust-byteorder-1) - ("rust-serde" ,rust-serde-1) - ("rust-criterion" ,rust-criterion-0.3) - ("rust-enumflags2" ,rust-enumflags2-0.6) - ("rust-zvariant-derive" ,rust-zvariant-derive-2)) - #:cargo-development-inputs - (("rust-serde-json" ,rust-serde-json-1) - ("rust-serde-repr" ,rust-serde-repr-0.1) - ("rust-glib" ,rust-glib-0.10) - ("rust-rand" ,rust-rand-0.7)))) - (home-page "https://gitlab.freedesktop.org/levans/zbus") - (synopsis "A Rust API for D-Bus communication.") - (description - "A Rust API for D-Bus communication. The aim is to provide a safe and simple high- and low-level API akin to -GDBus, that doesn't depend on C libraries.") - (license license:expat))) - -(define-public rust-ntest-0.7 - (package - (name "rust-ntest") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "ntest" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0kkk30ixlvfc97gpdjfv5584qmkhgx3mnphqf6rl2sxfckzxrg5k")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-ntest-test-cases" ,rust-ntest-test-cases-0.7) - ("rust-ntest-timeout" ,rust-ntest-timeout-0.7) - ("rust-ntest-proc-macro-helper" ,rust-ntest-proc-macro-helper-0.7) - ("rust-timebomb" ,rust-timebomb-0.1)) - #:cargo-development-inputs - (("rust-ntest-test-cases" ,rust-ntest-test-cases-0.7) - ("rust-ntest-timeout" ,rust-ntest-timeout-0.7) - ("rust-timebomb" ,rust-timebomb-0.1)))) - (home-page "https://github.com/becheran/ntest") - (synopsis "Testing framework for Rust") - (description "This package provides a testing framework for Rust which -enhances the built-in library with some useful features.") - (license license:expat))) - -(define-public rust-ntest-proc-macro-helper-0.7 - (package - (name "rust-ntest-proc-macro-helper") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "ntest-proc-macro-helper" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0xkyp5yc91bc3bc8441sjgdia3l6g7nclhy53nq5zw2fk3q6ww3y")))) - (build-system cargo-build-system) - (home-page "https://github.com/becheran/ntest") - (synopsis "Testing framework for Rust") - (description "This package provides a testing framework for Rust which -enhances the built-in library with some useful features.") - (license license:expat))) - -(define-public rust-ntest-test-cases-0.7 - (package - (name "rust-ntest-test-cases") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "ntest_test_cases" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0d1h1w33sznc1y3l0ka5xa1mpznn8qqxjv3s5qi9y2fs7091fcvz")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1)))) - (home-page "https://github.com/becheran/ntest") - (synopsis "Test cases for ntest framework") - (description "This package provides test cases for ntest framework.") - (license license:expat))) - -(define-public rust-ntest-timeout-0.7 - (package - (name "rust-ntest-timeout") - (version "0.7.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "ntest_timeout" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "026isn882xadp9c0pcfzhiz01zj7qn31mkmgcbmy8x3gd4dqx7rr")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-quote" ,rust-quote-1) - ("rust-syn" ,rust-syn-1) - ("rust-timebomb" ,rust-timebomb-0.1)))) - (home-page "https://github.com/becheran/ntest") - (synopsis "Timeout attribute for the ntest framework") - (description "This package provides a timeout attribute for the ntest -framework.") - (license license:expat))) - -(define-public rust-doc-comment-0.3 - (package - (name "rust-doc-comment") - (version "0.3.3") - (source - (origin - (method url-fetch) - (uri (crate-uri "doc-comment" version)) - (file-name (string-append name "-" version ".crate")) - (sha256 - (base32 - "043sprsf3wl926zmck1bm7gw0jq50mb76lkpk49vasfr6ax1p97y")))) - (build-system cargo-build-system) - (arguments '(#:skip-build? #t)) - (home-page "https://github.com/GuillaumeGomez/doc-comment") - (synopsis "Macro to generate doc comments") - (description "This package provides a way to generate doc comments -from macros.") - (license license:expat))) - -(define-public rust-zbus-macros-1 - (package - (name "rust-zbus-macros") - (version "1.8.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "zbus-macros" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0c093vxdly5v7hy8z7i9z5l3j79ris0g3bcv6pplnf3jv8f19k47")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-proc-macro2" ,rust-proc-macro2-1) - ("rust-syn" ,rust-syn-1) - ("rust-proc-macro-crate" ,rust-proc-macro-crate-0.1)) - #:cargo-development-inputs - (("rust-zvariant" ,rust-zvariant-2) - ("rust-zbus" ,rust-zbus-1) - ("rust-serde" ,rust-serde-1) - ("rust-trybuild" ,rust-trybuild-1)))) - (home-page "https://gitlab.freedesktop.org/levans/zbus") - (synopsis "A Rust API for D-Bus communication.") - (description - "A Rust API for D-Bus communication. The aim is to provide a safe and simple high- and low-level API akin to -GDBus, that doesn't depend on C libraries.") - (license license:expat))) - -(define-public rust-zbus-polkit-1 - (package - (name "rust-zbus-polkit") - (version "1.0.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "zbus-polkit" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "09nvf1mgdpbj27cnwbjrj1pajmxbp11gh4j4s3k0p7iaa23ab1ns")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-zvariant" ,rust-zvariant-2) - ("rust-zbus" ,rust-zbus-1) - ("rust-serde-repr" ,rust-serde-repr-0.1) - ("rust-enumflags2" ,rust-enumflags2-0.6)))) - (home-page "https://gitlab.freedesktop.org/levans/zbus") - (synopsis "A Rust API for D-Bus communication.") - (description - "A Rust API for D-Bus communication. The aim is to provide a safe and simple high- and low-level API akin to -GDBus, that doesn't depend on C libraries.") - (license license:expat))) - -(define-public rust-zbus-1 - (package - (name "rust-zbus") - (version "1.8.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "zbus" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1a023ykgvavp28p5zzgxl14lj639p4vhqpypmqr4xvfs76md9d20")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #false - #:cargo-inputs - (("rust-byteorder" ,rust-byteorder-1) - ("rust-nix" ,rust-nix-0.17) - ("rust-serde" ,rust-serde-1) - ("rust-serde-repr" ,rust-serde-repr-0.1) - ("rust-serde-xml-rs" ,rust-serde-xml-rs-0.4) - ("rust-zvariant" ,rust-zvariant-2) - ("rust-zbus-macros" ,rust-zbus-macros-1) - ("rust-enumflags2" ,rust-enumflags2-0.6) - ("rust-derivative" ,rust-derivative-2) - ("rust-scoped-tls" ,rust-scoped-tls-1) - ("rust-fastrand" ,rust-fastrand-1) - ("rust-once-cell" ,rust-once-cell-1) - ("rust-async-io" ,rust-async-io-1) - ("rust-proc-macro-crate" ,rust-proc-macro-crate-0.1)) - #:cargo-development-inputs - (("rust-zbus-polkit" ,rust-zbus-polkit-1) - ("rust-doc-comment" ,rust-doc-comment-0.3) - ("rust-ntest" ,rust-ntest-0.7)))) - (home-page "https://gitlab.freedesktop.org/levans/zbus") - (synopsis "A Rust API for D-Bus communication.") - (description - "A Rust API for D-Bus communication. The aim is to provide a safe and simple high- and low-level API akin to -GDBus, that doesn't depend on C libraries.") - (license license:expat))) - -(define-public rust-gtk-0.9 - (package - (name "rust-gtk") - (version "0.9.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "gtk" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "17gab15byxfhmzq2ax7nd6aay611l7gjxqysykjdb1m6gggnmprs")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-atk" ,rust-atk-0.9) - ("rust-bitflags" ,rust-bitflags-1) - ("rust-cairo-rs" ,rust-cairo-rs-0.9) - ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9) - ("rust-cc" ,rust-cc-1) - ("rust-gdk" ,rust-gdk-0.13) - ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.8) - ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9) - ("rust-gdk-sys" ,rust-gdk-sys-0.9) - ("rust-gio" ,rust-gio-0.8) - ("rust-gio-sys" ,rust-gio-sys-0.9) - ("rust-glib" ,rust-glib-0.9) - ("rust-glib-sys" ,rust-glib-sys-0.9) - ("rust-gobject-sys" ,rust-gobject-sys-0.9) - ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1) - ("rust-gtk-sys" ,rust-gtk-sys-0.10) - ("rust-lazy-static" ,rust-lazy-static-1) - ("rust-libc" ,rust-libc-0.2) - ("rust-pango" ,rust-pango-0.8) - ("rust-pango-sys" ,rust-pango-sys-0.9)) - #:cargo-development-inputs - (("rust-gir-format-check" ,rust-gir-format-check-0.1)))) - (inputs - `(("atk" ,atk) - ("cairo" ,cairo) - ("glib" ,glib) - ("gtk+" ,gtk+) - ("pango" ,pango))) - (home-page "https://gtk-rs.org/") - (synopsis "Rust bindings for the GTK+ 3 library") - (description "This package provides Rust bindings for the GTK+ 3 library.") - (license license:expat))) - -(define-public rust-atk-0.9 - (package - (name "rust-atk") - (version "0.9.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "atk" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "09n46zp8jgxspdzhmi93cag79jjnr0ila94n8nr53g8hw88ljaw1")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-atk-sys" ,rust-atk-sys-0.10) - ("rust-bitflags" ,rust-bitflags-1) - ("rust-glib" ,rust-glib-0.9) - ("rust-glib-sys" ,rust-glib-sys-0.9) - ("rust-gobject-sys" ,rust-gobject-sys-0.9) - ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1) - ("rust-libc" ,rust-libc-0.2)) - #:cargo-development-inputs - (("rust-gir-format-check" ,rust-gir-format-check-0.1)))) - (inputs - `(("atk" ,atk) - ("glib" ,glib))) - (home-page "https://gtk-rs.org/") - (synopsis "Rust bindings for the ATK library") - (description "Rust bindings for the ATK library") - (license license:expat))) - -(define-public rust-gtk-sys-0.10 - (package - (name "rust-gtk-sys") - (version "0.10.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "gtk-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0mq4i161kk6dwiz19ayxgm9fhx7n3r5lm9lbjiyk0qs811pxmb49")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #f ;missing files - #:cargo-inputs - (("rust-atk-sys" ,rust-atk-sys-0.10) - ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9) - ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9) - ("rust-gdk-sys" ,rust-gdk-sys-0.9) - ("rust-gio-sys" ,rust-gio-sys-0.9) - ("rust-glib-sys" ,rust-glib-sys-0.9) - ("rust-gobject-sys" ,rust-gobject-sys-0.9) - ("rust-libc" ,rust-libc-0.2) - ("rust-pango-sys" ,rust-pango-sys-0.9) - ("rust-pkg-config" ,rust-pkg-config-0.3)) - #:cargo-development-inputs - (("rust-shell-words" ,rust-shell-words-0.1) - ("rust-tempfile" ,rust-tempfile-3)))) - (inputs - `(("gtk+" ,gtk+))) - (home-page "https://gtk-rs.org/") - (synopsis "FFI bindings to libgtk-3") - (description "This package provides FFI bindings to libgtk-3.") - (license license:expat))) - -(define-public rust-gtk-sys-0.10 - (package - (name "rust-gtk-sys") - (version "0.10.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "gtk-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0mq4i161kk6dwiz19ayxgm9fhx7n3r5lm9lbjiyk0qs811pxmb49")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #f ;missing files - #:cargo-inputs - (("rust-atk-sys" ,rust-atk-sys-0.10) - ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9) - ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9) - ("rust-gdk-sys" ,rust-gdk-sys-0.9) - ("rust-gio-sys" ,rust-gio-sys-0.9) - ("rust-glib-sys" ,rust-glib-sys-0.9) - ("rust-gobject-sys" ,rust-gobject-sys-0.9) - ("rust-libc" ,rust-libc-0.2) - ("rust-pango-sys" ,rust-pango-sys-0.9) - ("rust-pkg-config" ,rust-pkg-config-0.3)) - #:cargo-development-inputs - (("rust-shell-words" ,rust-shell-words-0.1) - ("rust-tempfile" ,rust-tempfile-3)))) - (inputs - `(("gtk+" ,gtk+))) - (home-page "https://gtk-rs.org/") - (synopsis "FFI bindings to libgtk-3") - (description "This package provides FFI bindings to libgtk-3.") - (license license:expat))) - -(define-public rust-atk-sys-0.10 - (package - (name "rust-atk-sys") - (version "0.10.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "atk-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1knzvq2jdkx1nav619jbqsx2ivzh901rsp2wl57wr50x2fpy8c7m")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #f ;missing files - #:cargo-inputs - (("rust-glib-sys" ,rust-glib-sys-0.9) - ("rust-gobject-sys" ,rust-gobject-sys-0.9) - ("rust-libc" ,rust-libc-0.2) - ("rust-pkg-config" ,rust-pkg-config-0.3)) - #:cargo-development-inputs - (("rust-shell-words" ,rust-shell-words-0.1) - ("rust-tempfile" ,rust-tempfile-3)))) - (inputs - `(("atk" ,atk) - ("glib" ,glib))) - (home-page "https://gtk-rs.org/") - (synopsis "FFI bindings to libatk-1") - (description "FFI bindings to libatk-1") - (license license:expat))) - -(define-public rust-gtk-0.9 - (package - (name "rust-gtk") - (version "0.9.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "gtk" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "17gab15byxfhmzq2ax7nd6aay611l7gjxqysykjdb1m6gggnmprs")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-atk" ,rust-atk-0.9) - ("rust-bitflags" ,rust-bitflags-1) - ("rust-cairo-rs" ,rust-cairo-rs-0.9) - ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.9) - ("rust-cc" ,rust-cc-1) - ("rust-gdk" ,rust-gdk-0.13) - ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.8) - ("rust-gdk-pixbuf-sys" ,rust-gdk-pixbuf-sys-0.9) - ("rust-gdk-sys" ,rust-gdk-sys-0.9) - ("rust-gio" ,rust-gio-0.8) - ("rust-gio-sys" ,rust-gio-sys-0.9) - ("rust-glib" ,rust-glib-0.9) - ("rust-glib-sys" ,rust-glib-sys-0.9) - ("rust-gobject-sys" ,rust-gobject-sys-0.9) - ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1) - ("rust-gtk-sys" ,rust-gtk-sys-0.10) - ("rust-lazy-static" ,rust-lazy-static-1) - ("rust-libc" ,rust-libc-0.2) - ("rust-pango" ,rust-pango-0.8) - ("rust-pango-sys" ,rust-pango-sys-0.9)) - #:cargo-development-inputs - (("rust-gir-format-check" ,rust-gir-format-check-0.1)))) - (inputs - `(("atk" ,atk) - ("cairo" ,cairo) - ("glib" ,glib) - ("gtk+" ,gtk+) - ("pango" ,pango))) - (home-page "https://gtk-rs.org/") - (synopsis "Rust bindings for the GTK+ 3 library") - (description "This package provides Rust bindings for the GTK+ 3 library.") - (license license:expat))) - -(define-public rust-libappindicator-sys-0.5 - (package - (name "rust-libappindicator-sys") - (version "0.5.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "libappindicator-sys" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "07b5r3wy5kq4x3zsmgbgmz2645yr5fyy1finkbsj3cbc38hbl6cp")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-gtk-sys" ,rust-gtk-sys-0.10) - ("rust-bindgen" ,rust-bindgen-0.52) - ("rust-pkg-config" ,rust-pkg-config-0.3)))) - (home-page "https://github.com/qdot/libappindicator-sys") - (synopsis "Bindings for the libappindicator library.") - (description "Bindings for the libappindicator library. libappindicator provides -cross-distribution/window system functions for creating systray icons and menus.") - (license license:lgpl3+))) - -(define-public rust-libappindicator-0.5 - (package - (name "rust-libappindicator") - (version "0.5.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "libappindicator" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0dyhb5gh2srhaq8v6nrcds4qsqibkpgkh53lypxf4l1z6mbzrlsj")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-gtk" ,rust-gtk-0.9) - ("rust-glib" ,rust-glib-0.10) - ("rust-log" ,rust-log-0.4) - ("rust-gtk-sys" ,rust-gtk-sys-0.10) - ("rust-libappindicator-sys" ,rust-libappindicator-sys-0.5)))) - (home-page "https://github.com/qdot/libappindicator-rs") - (synopsis "Bindings for the libappindicator library.") - (description "Bindings for the libappindicator library. libappindicator provides -cross-distribution/window system functions for creating systray icons and menus.") - (license license:lgpl3+))) - -(define-public rust-dlv-list-0.2 - (package - (name "rus-dlv-list") - (version "0.2.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "dlv-list" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0v42n28mx9r6vr43dsqkh5dgvb9m0wyjp7fb20m331m7p48ijf8v")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - ;;unable to build rust-rand-0.7 - ;;(("rust-rand" ,rust-rand-0.7)))) - (("rust-rand" ,rust-my-rand-0.7)))) - (home-page "https://github.com/sgodwincs/dlv-list-rs") - (synopsis "Semi-doubly linked list implemented using a vector.") - (description "Semi-doubly linked list implemented using a vector.") - (license license:expat))) - -(define-public rust-ordered-multimap-0.3 - (package - (name "rust-ordered-multimap") - (version "0.3.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "ordered-multimap" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1194q7sb2d6chbllsn7237dhhvx04iqr3sq0ii16w1pcv5x2qrqw")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-dlv-list" ,rust-dlv-list-0.2) - ("rust-hashbrown" ,rust-hashbrown-0.9) - ("rust-serde" ,rust-serde-1)))) - (home-page "https://github.com/sgodwincs/ordered-multimap-rs") - (synopsis "This is a multimap meaning that multiple values can be associated with a given key") - (description "Currently, this crate contains a single type ListOrderedMultimap. This is a multimap - meaning that multiple values can be associated with a given key, - but it also maintains insertion order across all keys and values.") - (license license:expat))) - -;;unable to build rust-gdk-0.13 from crates-gtk.scm -(define-public rust-my-gdk-0.13 - (package - (name "rust-gdk") - (version "0.13.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "gdk" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "0zbb9bwg2z9vlcjj9b59qch3mfmszsrxya7syc5a39v85adq606v")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-bitflags" ,rust-bitflags-1) - ;;unable to build rust-cairo-rs-0.9 - ;;("rust-cairo-rs" ,rust-cairo-rs-0.9) - ("rust-cairo-rs" ,rust-my-cairo-rs-0.9) - ("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.10) - ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.9) - ("rust-gdk-sys" ,rust-gdk-sys-0.10) - ("rust-gio" ,rust-gio-0.9) - ("rust-gio-sys" ,rust-gio-sys-0.10) - ("rust-glib" ,rust-glib-0.10) - ("rust-glib-sys" ,rust-glib-sys-0.10) - ("rust-gobject-sys" ,rust-gobject-sys-0.10) - ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1) - ("rust-libc" ,rust-libc-0.2) - ("rust-pango" ,rust-pango-0.9)) - #:cargo-development-inputs - (("rust-gir-format-check" ,rust-gir-format-check-0.1)))) - (inputs - `(("cairo" ,cairo) - ("gdk-pixbuf" ,gdk-pixbuf) - ("glib" ,glib) - ("gtk+" ,gtk+) - ("pango" ,pango))) - (home-page "https://gtk-rs.org/") - (synopsis "Rust bindings for the GDK 3 library") - (description "This package provides Rust bindings for the GDK 3 library.") - (license license:expat))) - -;;unable to build rust-cairo-rs-0.9 -(define-public rust-my-cairo-rs-0.9 - (package - (name "rust-cairo-rs") - (version "0.9.1") - (source - (origin - (method url-fetch) - (uri (crate-uri "cairo-rs" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "1f5x6ipfpzz0ffph0pg0xfkdfcbr0jp59714zz857jp88zhg5h65")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-bitflags" ,rust-bitflags-1) - ;;unable to build rust-cairo-sys-rs-0.10 - ;;("rust-cairo-sys-rs" ,rust-cairo-sys-rs-0.10) - ("rust-cairo-sys-rs" ,rust-my-cairo-sys-rs-0.10) - ("rust-glib" ,rust-glib-0.10) - ("rust-glib-sys" ,rust-glib-sys-0.10) - ("rust-gobject-sys" ,rust-gobject-sys-0.10) - ("rust-gtk-rs-lgpl-docs" ,rust-gtk-rs-lgpl-docs-0.1) - ("rust-libc" ,rust-libc-0.2) - ("rust-thiserror" ,rust-thiserror-1)) - #:cargo-development-inputs - (("rust-tempfile" ,rust-tempfile-3)))) - (inputs - `(("cairo" ,cairo))) - (home-page "https://gtk-rs.org/") - (synopsis "Rust bindings for the Cairo library") - (description "Rust bindings for the Cairo library") - (license license:expat))) - -;;unable to build rust-cairo-sys-rs-0.10 -(define-public rust-my-cairo-sys-rs-0.10 - (package - (name "rust-cairo-sys-rs") - (version "0.10.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "cairo-sys-rs" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "19wch8zc11hbi724mn16hhqyff8kw5c5bsbdlzpxdwfmkadn7lif")))) - (build-system cargo-build-system) - (arguments - `(#:skip-build? #t - #:cargo-inputs - (("rust-glib-sys" ,rust-glib-sys-0.10) - ("rust-libc" ,rust-libc-0.2) - ;;unable to build rust-system-deps-1 - ;;("rust-system-deps" ,rust-system-deps-1) - ("rust-system-deps" ,rust-my-system-deps-1) - ("rust-winapi" ,rust-winapi-0.3) - ("rust-x11" ,rust-x11-2)))) - (inputs - `(("cairo" ,cairo))) - (home-page "https://gtk-rs.org/") - (synopsis "FFI bindings to libcairo") - (description "This package provides FFI bindings to libcairo.") - (license license:expat))) - -;;unable to build rust-system-deps-1 -(define-public rust-my-system-deps-1 - (package - (name "rust-system-deps") - (version "1.3.2") - (source - (origin - (method url-fetch) - (uri (crate-uri "system-deps" version)) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "16v4ljmj8sj030mdcc1yk615vciqlyxi7csq6lxka6cs4qbwqghg")))) - (build-system cargo-build-system) - (arguments - `(#:tests? #f ;source is missing some test files - #:cargo-inputs - (("rust-heck" ,rust-heck-0.3) - ("rust-pkg-config" ,rust-pkg-config-0.3) - ("rust-strum" ,rust-strum-0.18) - ("rust-strum-macros" ,rust-strum-macros-0.18) - ("rust-thiserror" ,rust-thiserror-1) - ("rust-toml" ,rust-toml-0.5) - ;;unable to build rust-version-compare-0.0 - ;;("rust-version-compare" ,rust-version-compare-0.0)) - ("rust-version-compare" ,rust-my-version-compare-0.0)) - #:cargo-development-inputs - (("rust-itertools" ,rust-itertools-0.9)))) - (home-page "https://github.com/gdesmott/system-deps") - (synopsis "Define system dependencies in @file{Cargo.toml}") - (description - "This crate lets you write system dependencies in @file{Cargo.toml} -metadata, rather than programmatically in @file{build.rs}. This makes those -dependencies declarative, so other tools can read them as well.") - (license (list license:expat license:asl2.0)))) - -;;unable to build rust-version-compare-0.0 -(define-public rust-my-version-compare-0.0 - (package - (name "rust-version-compare") - (version "0.0.10") - (source - (origin - (method url-fetch) - (uri (crate-uri "version-compare" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 "18ack6rx18rp700h1dncljmpzchs3p2dfh76a8ds6vmfbfi5cdfn")))) - (build-system cargo-build-system) - (home-page "https://github.com/timvisee/version-compare") - (synopsis "Rust library to easily compare version numbers") - (description - "This package provides a Rust library to easily compare version -numbers, and test them against various comparison operators.") - (license license:expat))) - -;;unable to build rust-rand-0.7 -(define-public rust-my-rand-0.7 - (package - (name "rust-rand") - (version "0.7.3") - (source - (origin - (method url-fetch) - (uri (crate-uri "rand" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "00sdaimkbz491qgi6qxkv582yivl32m2jd401kzbn94vsiwicsva")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-getrandom" ,rust-getrandom-0.1) - ("rust-libc" ,rust-libc-0.2) - ("rust-log" ,rust-log-0.4) - ("rust-packed-simd" ,rust-packed-simd-0.3) - ("rust-rand-chacha" ,rust-rand-chacha-0.2) - ("rust-rand-core" ,rust-rand-core-0.5) - ("rust-rand-hc" ,rust-rand-hc-0.2) - ("rust-rand-pcg" ,rust-rand-pcg-0.2)) - #:cargo-development-inputs - (("rust-rand-hc" ,rust-rand-hc-0.2) - ("rust-rand-pcg" ,rust-rand-pcg-0.2)))) - (home-page "https://crates.io/crates/rand") - (synopsis "Random number generators and other randomness functionality") - (description - "Rand provides utilities to generate random numbers, to convert them to -useful types and distributions, and some randomness-related algorithms.") - (license (list license:expat license:asl2.0)))) - -(define-public rust-gettext-rs-0.7 - (package - (name "rust-gettext-rs") - (version "0.7.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "gettext-rs" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0r7kahqcjrkm83d3gzzkn83fnw2bnqj2ank5z6hsm66izalai7p4")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-gettext-sys" ,rust-gettext-sys-0.21) - ("rust-locale-config" ,rust-locale-config-0.3)))) - (inputs - `(("gettext" ,gettext-minimal))) - (home-page "https://github.com/Koka/gettext-rs") - (synopsis "GNU Gettext FFI binding for Rust") - (description "This package provides GNU Gettext FFI bindings for Rust.") - (license license:expat))) - -(define-public rust-gettext-sys-0.21 - (package - (name "rust-gettext-sys") - (version "0.21.0") - (source - (origin - (method url-fetch) - (uri (crate-uri "gettext-sys" version)) - (file-name - (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "105d5zh67yc5vyzmqxdw7hx82h606ca6rzhsfjgzjczn2s012pc8")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-cc" ,rust-cc-1) - ("rust-tempfile" ,rust-tempfile-3)))) - (inputs - `(("gettext" ,gettext-minimal))) - (home-page "https://github.com/Koka/gettext-rs") - (synopsis "Gettext raw FFI bindings") - (description "This package provides raw FFI bindings for GNU Gettext.") - (license license:expat))) - -(define-public blue-recorder - (let ((version "1.3.2") - (commit "d67dc8882ae446feca9cc44076f0839a0aeb845c")) - (package - (name "blue-recorder") - (version (git-version version "+4commits" commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/xlmnxp/blue-recorder/") - (commit commit) - (recursive? #t))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0q6af66bw6qqrr99gw09750hmd63d1d5zaalrmbk3jqf8kmyzkaa")))) - (build-system cargo-build-system) - (arguments - `(#:cargo-inputs - (("rust-chrono" ,rust-chrono-0.4) - ("rust-regex" ,rust-regex-1) - ("rust-libappindicator" ,rust-libappindicator-0.5) - ("rust-rust-ini" ,rust-rust-ini-0.16) - ("rust-subprocess" ,rust-subprocess-0.2) - ;;("rust-gdk" ,rust-gdk-0.13) - ;;unable to build rust-gdk-0.13 from crates-gtk.scm - ("rust-gdk" ,rust-my-gdk-0.13) - ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.9) - ("rust-gettext-rs" ,rust-gettext-rs-0.7) - ("rust-gio" ,rust-gio-0.9) - ("rust-glib" ,rust-glib-0.10) - ("rust-gtk" ,rust-gtk-0.9) - ("rust-zbus" ,rust-zbus-1) - ("rust-zvariant" ,rust-zvariant-2)) - #:phases - (modify-phases %standard-phases - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (share (string-append out "/share")) - (icons (string-append share "/icons/hicolor/scalable/apps")) - (blue-recorder "target/release/blue-recorder")) - ;; Install the executable. - (install-file blue-recorder bin) - ;; Install desktop file. - (install-file "data/blue-recorder.desktop" - (string-append share "/applications")) - ;; Install interfaces file. - (install-file "interfaces/main.ui" - (string-append bin "/interfaces")) - ;; Install icon. - (mkdir-p icons) - (copy-file "data/blue-recorder.svg" - (string-append icons "/blue-recorder.svg")) - ;; Install po. - (copy-recursively "po" - (string-append bin "/po")) - ;; Install data. - (copy-recursively "data" - (string-append bin "/data")) - #t)))))) - (native-inputs - `(("clang" ,clang) - ("gettext" ,gettext-minimal) - ("pkg-config" ,pkg-config))) - (inputs - `(("ffmpeg" ,ffmpeg) - ("libappindicator" ,libappindicator) - ("gtk+" ,gtk+) - ("xwininfo" ,xwininfo) - ("pulseaudio" ,pulseaudio))) - (synopsis "A simple screen recorder for Linux desktop.") - (description "A simple desktop recorder for Linux systems. Built using Rust, GTK+ 3 and ffmpeg. It supports - recording audio and video on almost all Linux interfaces with support for Wayland display server on GNOME session.") - (home-page "https://github.com/xlmnxp/blue-recorder") - (license license:gpl3+)))) - -blue-recorder diff --git a/src/config_management.rs b/src/config_management.rs index 1be465a..b3f3a8d 100755 --- a/src/config_management.rs +++ b/src/config_management.rs @@ -59,6 +59,7 @@ fn default() { set("default", "followmousecheck", "0"); set("default", "hidecheck", "0"); set("default", "speakercheck", "0"); + set("default", "mode", "screen"); } fn merge_previous_version() -> Option { diff --git a/src/ffmpeg_interface.rs b/src/ffmpeg_interface.rs index ea86743..517b5e6 100644 --- a/src/ffmpeg_interface.rs +++ b/src/ffmpeg_interface.rs @@ -1,4 +1,5 @@ extern crate subprocess; +use crate::config_management; use crate::utils::{is_snap, is_wayland}; use crate::wayland_record::{CursorModeTypes, RecordTypes, WaylandRecorder}; use chrono::prelude::*; @@ -85,34 +86,46 @@ impl Ffmpeg { } if self.record_video.is_active() && !is_wayland() { + let mode = config_management::get("default", "mode"); + let format = "x11grab"; + let display = format!("{}+{},{}", + std::env::var("DISPLAY").unwrap_or_else(|_| ":0".to_string()) + .as_str(), + x, + y + ); let mut ffmpeg_command = FfmpegCommand::new(); - // if show mouse switch is enabled, draw the mouse to video - let draw_mouse = if self.record_mouse.is_active() { - "-draw_mouse 1" - } else { - "-draw_mouse 0" - }; - // record video with specified width and hight - ffmpeg_command.size(width.into(), height.into()) - .format("x11grab").args(draw_mouse.split(' ')) - .input(format!("{}+{},{}", std::env::var("DISPLAY").unwrap_or_else(|_| ":0".to_string()) - .as_str(), - x, - y - )); - - // Disable frame rate if value is zero - if self.record_frames.value() > 0.0 { - ffmpeg_command.rate(self.record_frames.value() as f32); + if self.follow_mouse.is_active() && mode.as_str() == "screen" { + let width = width as f32 * 0.95; + let height = height as f32 * 0.95; + ffmpeg_command.size(width as u32, height as u32); + } else { + ffmpeg_command.size(width.into(), height.into()); } + // if show mouse switch is enabled, draw the mouse to video + if self.record_mouse.is_active() { + ffmpeg_command.args(["-draw_mouse", "1"]); + } else { + ffmpeg_command.args(["-draw_mouse", "0"]); + }; + // if follow mouse switch is enabled, follow the mouse if self.follow_mouse.is_active() { ffmpeg_command.args(["-follow_mouse", "centered"]); } + // Disable frame rate if value is zero + if self.record_frames.value() > 0.0 { + ffmpeg_command.args(["-framerate", &self.record_frames.value().to_string()]); + } + + // Video format && input + ffmpeg_command.format(format) + .input(display); + // Disable bitrate if value is zero if self.record_bitrate.value() > 0.0 { ffmpeg_command.args([ diff --git a/src/main.rs b/src/main.rs index 6a36dc2..456366a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -140,13 +140,16 @@ pub fn build_ui(application: &Application) { stop_button.hide(); play_button.hide(); + // Toggle button + config_management::set("default", "mode", "screen"); + screen_grab_button.set_active(true); + // Comboboxs tooltip audio_source_combobox.set_tooltip_text(Some(&bundle.format_pattern(bundle.get_message("audio-source-tooltip").unwrap() .value().unwrap(), None, &mut vec![]).to_string())); format_chooser_combobox.set_tooltip_text(Some(&bundle.format_pattern(bundle.get_message("format-tooltip").unwrap() .value().unwrap(), None, &mut vec![]).to_string())); - // Hide window grab button in Wayland area_grab_button.set_tooltip_text(Some(&bundle.format_pattern(bundle.get_message("area-tooltip").unwrap() .value().unwrap(), None, &mut vec![]).to_string())); // Temporary solution @@ -156,6 +159,7 @@ pub fn build_ui(application: &Application) { //area_grab_button.set_can_target(false); //area_grab_button.add_css_class("disabled"); area_grab_button.set_sensitive(false); + // Hide window grab button in Wayland area_grab_button.set_tooltip_text(Some(&bundle.format_pattern(bundle.get_message("wayland-tooltip").unwrap() .value().unwrap(), None, &mut vec![]).to_string())); } @@ -241,23 +245,19 @@ pub fn build_ui(application: &Application) { config_management::set_bool("default", "videocheck", switch.is_active()); if switch.is_active() { _mouse_switch.set_sensitive(true); + _follow_mouse_switch.set_sensitive(true); } else { _mouse_switch.set_sensitive(false); _follow_mouse_switch.set_sensitive(false); _audio_switch.set_active(true); _audio_switch.set_sensitive(true); _mouse_switch.set_active(false); + _follow_mouse_switch.set_active(false); } }); let _follow_mouse_switch = follow_mouse_switch.clone(); mouse_switch.connect_toggled(move |switch: &CheckButton| { config_management::set_bool("default", "mousecheck", switch.is_active()); - if switch.is_active() { - _follow_mouse_switch.set_sensitive(true); - } else { - _follow_mouse_switch.set_active(false); - _follow_mouse_switch.set_sensitive(false); - } }); let _mouse_switch = mouse_switch.clone(); audio_switch.connect_toggled(move |switch: &CheckButton| { @@ -548,6 +548,7 @@ pub fn build_ui(application: &Application) { area_grab_label.set_label(&bundle.format_pattern(bundle.get_message("select-area").unwrap() .value().unwrap(), None, &mut vec![]).to_string()); area_grab_button.connect_clicked(move |_| { + config_management::set("default", "mode", "area"); _area_chooser_window.show(); }); @@ -556,6 +557,9 @@ pub fn build_ui(application: &Application) { area_apply_label.set_label(&bundle.format_pattern(bundle.get_message("apply").unwrap() .value().unwrap(), None, &mut vec![]).to_string()); area_set_button.connect_clicked(move |_| { + _area_capture + .borrow_mut() + .get_window_by_name(_area_chooser_window.title().unwrap().as_str()); _area_chooser_window.hide(); }); @@ -569,6 +573,7 @@ pub fn build_ui(application: &Application) { screen_grab_label.set_label(&bundle.format_pattern(bundle.get_message("select-screen").unwrap() .value().unwrap(), None, &mut vec![]).to_string()); screen_grab_button.connect_clicked(move |_| { + config_management::set("default", "mode", "screen"); screen_grab_button_record_window.replace(false); _area_chooser_window.hide(); _area_capture.borrow_mut().reset(); @@ -581,6 +586,7 @@ pub fn build_ui(application: &Application) { window_grab_label.set_label(&bundle.format_pattern(bundle.get_message("select-window").unwrap() .value().unwrap(), None, &mut vec![]).to_string()); window_grab_button.connect_clicked(move |_| { + config_management::set("default", "mode", "window"); _area_chooser_window.hide(); if is_wayland() { window_grab_button_record_window.replace(true);