From a949e959710830bd3af172939bf3985737910def Mon Sep 17 00:00:00 2001 From: Valeria Fadeeva Date: Sun, 5 Nov 2023 00:21:58 +0500 Subject: [PATCH] Update --- .clang-format | 18 + Cargo.lock | 2266 -------------------- data/application_utility/default.json | 2836 +++++++++++++++++-------- data/application_utility/flatpak.json | 1423 +++++++++++++ data/img/config-title.png | Bin 0 -> 16385 bytes data/img/external-link.png | Bin 220 -> 302 bytes data/img/faq-img.png | Bin 0 -> 7881 bytes data/img/github.png | Bin 0 -> 1368 bytes data/img/ko-fi.png | Bin 0 -> 1114 bytes data/img/logo-gpu.png | Bin 0 -> 51801 bytes data/img/mastodon.png | Bin 0 -> 1165 bytes data/img/melawy.png | Bin 0 -> 980 bytes data/img/website.png | Bin 0 -> 980 bytes data/img/youtube.png | Bin 0 -> 1145 bytes data/pages/de-DE | 1 - data/pages/de/involved | 37 - data/pages/de/readme | 45 - data/pages/de/release | 37 - data/pages/pl/involved | 37 - data/pages/pl/readme | 43 - data/pages/pl/release | 37 - data/preferences.json | 16 +- i18n/de/melawy_welcome.ftl | 66 - i18n/pl/melawy_welcome.ftl | 66 - i18n/ru/melawy_welcome.ftl | 1 + push.sh | 2 + src/scripts/amd_drivers.sh | 98 + src/scripts/apply_defaults.sh | 168 ++ src/scripts/dbox.sh | 163 ++ src/scripts/firewalled.sh | 80 + src/scripts/fix_keys.sh | 51 + src/scripts/hw_service.sh | 64 + src/scripts/init_snapper.sh | 47 + src/scripts/iso_builder.sh | 107 + src/scripts/nVidia_drivers.sh | 377 ++++ src/scripts/rank_mirrors.sh | 11 + src/scripts/switch_dm.sh | 111 + src/scripts/switch_to_zsh.sh | 38 + src/scripts/update_system.sh | 103 + src/scripts/xero_rices.sh | 206 ++ src/scripts/xerofix.sh | 97 + ui/drivers_page.glade | 235 ++ ui/faq_page.glade | 251 +++ ui/melawy-welcome.glade | 52 +- ui/post_install_page.glade | 262 +++ 45 files changed, 5947 insertions(+), 3505 deletions(-) create mode 100644 .clang-format delete mode 100644 Cargo.lock create mode 100644 data/application_utility/flatpak.json create mode 100644 data/img/config-title.png create mode 100644 data/img/faq-img.png create mode 100644 data/img/github.png create mode 100644 data/img/ko-fi.png create mode 100644 data/img/logo-gpu.png create mode 100644 data/img/mastodon.png create mode 100644 data/img/melawy.png create mode 100644 data/img/website.png create mode 100644 data/img/youtube.png delete mode 120000 data/pages/de-DE delete mode 100644 data/pages/de/involved delete mode 100644 data/pages/de/readme delete mode 100644 data/pages/de/release delete mode 100644 data/pages/pl/involved delete mode 100644 data/pages/pl/readme delete mode 100644 data/pages/pl/release delete mode 100644 i18n/de/melawy_welcome.ftl delete mode 100644 i18n/pl/melawy_welcome.ftl create mode 100755 src/scripts/amd_drivers.sh create mode 100755 src/scripts/apply_defaults.sh create mode 100755 src/scripts/dbox.sh create mode 100755 src/scripts/firewalled.sh create mode 100755 src/scripts/fix_keys.sh create mode 100755 src/scripts/hw_service.sh create mode 100755 src/scripts/init_snapper.sh create mode 100755 src/scripts/iso_builder.sh create mode 100755 src/scripts/nVidia_drivers.sh create mode 100755 src/scripts/rank_mirrors.sh create mode 100755 src/scripts/switch_dm.sh create mode 100755 src/scripts/switch_to_zsh.sh create mode 100755 src/scripts/update_system.sh create mode 100755 src/scripts/xero_rices.sh create mode 100755 src/scripts/xerofix.sh create mode 100644 ui/drivers_page.glade create mode 100644 ui/faq_page.glade create mode 100644 ui/post_install_page.glade diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..3ab4962 --- /dev/null +++ b/.clang-format @@ -0,0 +1,18 @@ +BasedOnStyle: WebKit +AccessModifierOffset: -3 +AllowShortLoopsOnASingleLine: true +AlignConsecutiveAssignments: true +AlignConsecutiveMacros: true +AlignTrailingComments: true +BreakBeforeBraces: Custom +BreakConstructorInitializers: BeforeColon +BreakStringLiterals: false +ConstructorInitializerIndentWidth: 2 +Cpp11BracedListStyle: true +PointerAlignment: Left +FixNamespaceComments: true +SpaceBeforeCpp11BracedList: false +SpacesBeforeTrailingComments: 2 +Standard: c++17 +TabWidth: 4 +UseTab: Never diff --git a/Cargo.lock b/Cargo.lock deleted file mode 100644 index 0703a51..0000000 --- a/Cargo.lock +++ /dev/null @@ -1,2266 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "aho-corasick" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" -dependencies = [ - "memchr", -] - -[[package]] -name = "alpm" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cc4aac5bdc7152a8158fabee3037597fefe54c296e45903743e4a2655dcd9cc" -dependencies = [ - "alpm-sys", - "bitflags 1.3.2", -] - -[[package]] -name = "alpm-sys" -version = "2.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee1afe3484685ecedf03aefd7904428befed7815687e48aa4b21b3417eeecf0" -dependencies = [ - "pkg-config", -] - -[[package]] -name = "alpm-utils" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01c6892a7ced000868007e9ee99a80680c96f5b3e535e9ade81a54501e391232" -dependencies = [ - "alpm", - "pacmanconf", -] - -[[package]] -name = "arc-swap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" - -[[package]] -name = "atk" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" -dependencies = [ - "atk-sys", - "glib", - "libc", -] - -[[package]] -name = "atk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "backtrace" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" - -[[package]] -name = "block" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" - -[[package]] -name = "block-buffer" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" -dependencies = [ - "generic-array", -] - -[[package]] -name = "bstr" -version = "1.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c79ad7fb2dd38f3dabd76b09c6a5a20c038fc0213ef1e9afd30eb777f120f019" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "bumpalo" -version = "3.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" - -[[package]] -name = "bytes" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" - -[[package]] -name = "cairo-rs" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c0466dfa8c0ee78deef390c274ad756801e0a6dbb86c5ef0924a298c5761c4d" -dependencies = [ - "bitflags 2.4.0", - "cairo-sys-rs", - "glib", - "libc", - "once_cell", - "thiserror", -] - -[[package]] -name = "cairo-sys-rs" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "cc" -version = "1.0.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] - -[[package]] -name = "cfg-expr" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3" -dependencies = [ - "smallvec", - "target-lexicon", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "cini" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8628d1f5b9a7b1196ce1aa660e3ba7e2559d350649cbe94993519c127df667f2" - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "cpufeatures" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" -dependencies = [ - "libc", -] - -[[package]] -name = "crypto-common" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" -dependencies = [ - "generic-array", - "typenum", -] - -[[package]] -name = "dashmap" -version = "5.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" -dependencies = [ - "cfg-if", - "hashbrown 0.14.1", - "lock_api", - "once_cell", - "parking_lot_core", -] - -[[package]] -name = "digest" -version = "0.10.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" -dependencies = [ - "block-buffer", - "crypto-common", -] - -[[package]] -name = "displaydoc" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "encoding_rs" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "errno" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - -[[package]] -name = "field-offset" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" -dependencies = [ - "memoffset", - "rustc_version", -] - -[[package]] -name = "find-crate" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2" -dependencies = [ - "toml 0.5.11", -] - -[[package]] -name = "fluent" -version = "0.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61f69378194459db76abd2ce3952b790db103ceb003008d3d50d97c41ff847a7" -dependencies = [ - "fluent-bundle", - "unic-langid", -] - -[[package]] -name = "fluent-bundle" -version = "0.15.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e242c601dec9711505f6d5bbff5bedd4b61b2469f2e8bb8e57ee7c9747a87ffd" -dependencies = [ - "fluent-langneg", - "fluent-syntax", - "intl-memoizer", - "intl_pluralrules", - "rustc-hash", - "self_cell", - "smallvec", - "unic-langid", -] - -[[package]] -name = "fluent-langneg" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c4ad0989667548f06ccd0e306ed56b61bd4d35458d54df5ec7587c0e8ed5e94" -dependencies = [ - "unic-langid", -] - -[[package]] -name = "fluent-syntax" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0abed97648395c902868fee9026de96483933faa54ea3b40d652f7dfe61ca78" -dependencies = [ - "thiserror", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-executor" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" -dependencies = [ - "futures-core", - "futures-task", - "futures-util", -] - -[[package]] -name = "futures-io" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" - -[[package]] -name = "futures-macro" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "futures-sink" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-core", - "futures-io", - "futures-macro", - "futures-task", - "memchr", - "pin-project-lite", - "pin-utils", - "slab", -] - -[[package]] -name = "gdk" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" -dependencies = [ - "cairo-rs", - "gdk-pixbuf", - "gdk-sys", - "gio", - "glib", - "libc", - "pango", -] - -[[package]] -name = "gdk-pixbuf" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbc9c2ed73a81d556b65d08879ba4ee58808a6b1927ce915262185d6d547c6f3" -dependencies = [ - "gdk-pixbuf-sys", - "gio", - "glib", - "libc", - "once_cell", -] - -[[package]] -name = "gdk-pixbuf-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" -dependencies = [ - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gdk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" -dependencies = [ - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "pkg-config", - "system-deps", -] - -[[package]] -name = "generic-array" -version = "0.14.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" -dependencies = [ - "typenum", - "version_check", -] - -[[package]] -name = "gimli" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" - -[[package]] -name = "gio" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57052f84e8e5999b258e8adf8f5f2af0ac69033864936b8b6838321db2f759b1" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-util", - "gio-sys", - "glib", - "libc", - "once_cell", - "pin-project-lite", - "smallvec", - "thiserror", -] - -[[package]] -name = "gio-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", - "winapi", -] - -[[package]] -name = "glib" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c316afb01ce8067c5eaab1fc4f2cd47dc21ce7b6296358605e2ffab23ccbd19" -dependencies = [ - "bitflags 2.4.0", - "futures-channel", - "futures-core", - "futures-executor", - "futures-task", - "futures-util", - "gio-sys", - "glib-macros", - "glib-sys", - "gobject-sys", - "libc", - "memchr", - "once_cell", - "smallvec", - "thiserror", -] - -[[package]] -name = "glib-macros" -version = "0.18.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8da903822b136d42360518653fcf154455defc437d3e7a81475bf9a95ff1e47" -dependencies = [ - "heck", - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "glib-sys" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" -dependencies = [ - "libc", - "system-deps", -] - -[[package]] -name = "globset" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" -dependencies = [ - "aho-corasick", - "bstr", - "fnv", - "log", - "regex", -] - -[[package]] -name = "gobject-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" -dependencies = [ - "glib-sys", - "libc", - "system-deps", -] - -[[package]] -name = "gtk" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" -dependencies = [ - "atk", - "cairo-rs", - "field-offset", - "futures-channel", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk-sys", - "gtk3-macros", - "libc", - "pango", - "pkg-config", -] - -[[package]] -name = "gtk-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" -dependencies = [ - "atk-sys", - "cairo-sys-rs", - "gdk-pixbuf-sys", - "gdk-sys", - "gio-sys", - "glib-sys", - "gobject-sys", - "libc", - "pango-sys", - "system-deps", -] - -[[package]] -name = "gtk3-macros" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" -dependencies = [ - "proc-macro-crate", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "h2" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap 1.9.3", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "0.14.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2 0.4.9", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "i18n-config" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c9ce3c48cbc21fd5b22b9331f32b5b51f6ad85d969b99e793427332e76e7640" -dependencies = [ - "log", - "serde", - "serde_derive", - "thiserror", - "toml 0.8.2", - "unic-langid", -] - -[[package]] -name = "i18n-embed" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94205d95764f5bb9db9ea98fa77f89653365ca748e27161f5bbea2ffd50e459c" -dependencies = [ - "arc-swap", - "fluent", - "fluent-langneg", - "fluent-syntax", - "i18n-embed-impl", - "intl-memoizer", - "lazy_static", - "locale_config", - "log", - "parking_lot", - "rust-embed", - "thiserror", - "unic-langid", - "walkdir", -] - -[[package]] -name = "i18n-embed-fl" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc1f8715195dffc4caddcf1cf3128da15fe5d8a137606ea8856c9300047d5a2" -dependencies = [ - "dashmap", - "find-crate", - "fluent", - "fluent-syntax", - "i18n-config", - "i18n-embed", - "lazy_static", - "proc-macro-error", - "proc-macro2", - "quote", - "strsim", - "syn 2.0.38", - "unic-langid", -] - -[[package]] -name = "i18n-embed-impl" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2a4d5bff745c9a6e1459c490059281b353a4ab0a4e1e58b3eeeaef71f97d07b" -dependencies = [ - "find-crate", - "i18n-config", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" -dependencies = [ - "equivalent", - "hashbrown 0.14.1", -] - -[[package]] -name = "intl-memoizer" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c310433e4a310918d6ed9243542a6b83ec1183df95dff8f23f87bb88a264a66f" -dependencies = [ - "type-map", - "unic-langid", -] - -[[package]] -name = "intl_pluralrules" -version = "7.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "078ea7b7c29a2b4df841a7f6ac8775ff6074020c6776d48491ce2268e068f972" -dependencies = [ - "unic-langid", -] - -[[package]] -name = "ipnet" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" - -[[package]] -name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "js-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.149" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" - -[[package]] -name = "linux-raw-sys" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" - -[[package]] -name = "locale_config" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934" -dependencies = [ - "lazy_static", - "objc", - "objc-foundation", - "regex", - "winapi", -] - -[[package]] -name = "lock_api" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "malloc_buf" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" -dependencies = [ - "libc", -] - -[[package]] -name = "melawy-welcome" -version = "0.10.1" -dependencies = [ - "alpm", - "alpm-utils", - "gdk", - "gdk-pixbuf", - "gio", - "glib", - "gtk", - "i18n-embed", - "i18n-embed-fl", - "once_cell", - "pacmanconf", - "phf", - "reqwest", - "rust-embed", - "serde", - "serde_json", - "subprocess", - "unic-langid", -] - -[[package]] -name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.8.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" -dependencies = [ - "libc", - "wasi", - "windows-sys", -] - -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "objc" -version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" -dependencies = [ - "malloc_buf", -] - -[[package]] -name = "objc-foundation" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" -dependencies = [ - "block", - "objc", - "objc_id", -] - -[[package]] -name = "objc_id" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" -dependencies = [ - "objc", -] - -[[package]] -name = "object" -version = "0.32.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "openssl" -version = "0.10.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bac25ee399abb46215765b1cb35bc0212377e58a061560d8b29b024fd0430e7c" -dependencies = [ - "bitflags 2.4.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.93" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "pacmanconf" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba64fdfa5d4589657dc8c8497b67322d8a64c162357ea0359656bfe23eec6185" -dependencies = [ - "cini", -] - -[[package]] -name = "pango" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06a9e54b831d033206160096b825f2070cf5fda7e35167b1c01e9e774f9202d1" -dependencies = [ - "gio", - "glib", - "libc", - "once_cell", - "pango-sys", -] - -[[package]] -name = "pango-sys" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" -dependencies = [ - "glib-sys", - "gobject-sys", - "libc", - "system-deps", -] - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets", -] - -[[package]] -name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "phf" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" -dependencies = [ - "phf_macros", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" -dependencies = [ - "phf_shared", - "rand", -] - -[[package]] -name = "phf_macros" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "phf_shared" -version = "0.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project-lite" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" - -[[package]] -name = "proc-macro-crate" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" -dependencies = [ - "once_cell", - "toml_edit 0.19.15", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - -[[package]] -name = "proc-macro2" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rand" -version = "0.8.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" -dependencies = [ - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "regex" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d119d7c7ca818f8a53c300863d4f87566aac09943aef5b355bb83969dae75d87" -dependencies = [ - "aho-corasick", - "memchr", - "regex-automata", - "regex-syntax", -] - -[[package]] -name = "regex-automata" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "465c6fc0621e4abc4187a2bda0937bfd4f722c2730b29562e19689ea796c9a4b" -dependencies = [ - "aho-corasick", - "memchr", - "regex-syntax", -] - -[[package]] -name = "regex-syntax" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56d84fdd47036b038fc80dd333d10b6aab10d5d31f4a366e20014def75328d33" - -[[package]] -name = "reqwest" -version = "0.11.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "system-configuration", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "rust-embed" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e7d90385b59f0a6bf3d3b757f3ca4ece2048265d70db20a2016043d4509a40" -dependencies = [ - "rust-embed-impl", - "rust-embed-utils", - "walkdir", -] - -[[package]] -name = "rust-embed-impl" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c3d8c6fd84090ae348e63a84336b112b5c3918b3bf0493a581f7bd8ee623c29" -dependencies = [ - "proc-macro2", - "quote", - "rust-embed-utils", - "syn 2.0.38", - "walkdir", -] - -[[package]] -name = "rust-embed-utils" -version = "8.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "873feff8cb7bf86fdf0a71bb21c95159f4e4a37dd7a4bd1855a940909b583ada" -dependencies = [ - "globset", - "sha2", - "walkdir", -] - -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] -name = "rustix" -version = "0.38.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745ecfa778e66b2b63c88a61cb36e0eea109e803b0b86bf9879fbc77c70e86ed" -dependencies = [ - "bitflags 2.4.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] - -[[package]] -name = "ryu" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "schannel" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" -dependencies = [ - "windows-sys", -] - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "security-framework" -version = "2.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "self_cell" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ef965a420fe14fdac7dd018862966a4c14094f900e1650bbc71ddd7d580c8af" - -[[package]] -name = "semver" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" - -[[package]] -name = "serde" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "serde_json" -version = "1.0.107" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_spanned" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sha2" -version = "0.10.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" -dependencies = [ - "cfg-if", - "cpufeatures", - "digest", -] - -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" - -[[package]] -name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "socket2" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "subprocess" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2e86926081dda636c546d8c5e641661049d7562a68f5488be4a1f7f66f6086" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags 1.3.2", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "system-deps" -version = "6.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af52f9402f94aac4948a2518b43359be8d9ce6cd9efc1c4de3b2f7b7e897d6" -dependencies = [ - "cfg-expr", - "heck", - "pkg-config", - "toml 0.8.2", - "version-compare", -] - -[[package]] -name = "target-lexicon" -version = "0.12.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" - -[[package]] -name = "tempfile" -version = "3.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" -dependencies = [ - "cfg-if", - "fastrand", - "redox_syscall", - "rustix", - "windows-sys", -] - -[[package]] -name = "thiserror" -version = "1.0.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.49" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", -] - -[[package]] -name = "tinystr" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5d0e245e80bdc9b4e5356fc45a72184abbc3861992603f515270e9340f5a219" -dependencies = [ - "displaydoc", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "num_cpus", - "pin-project-lite", - "socket2 0.5.4", - "windows-sys", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - -[[package]] -name = "toml" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" -dependencies = [ - "serde", - "serde_spanned", - "toml_datetime", - "toml_edit 0.20.2", -] - -[[package]] -name = "toml_datetime" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" -dependencies = [ - "serde", -] - -[[package]] -name = "toml_edit" -version = "0.19.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" -dependencies = [ - "indexmap 2.0.2", - "toml_datetime", - "winnow", -] - -[[package]] -name = "toml_edit" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" -dependencies = [ - "indexmap 2.0.2", - "serde", - "serde_spanned", - "toml_datetime", - "winnow", -] - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" - -[[package]] -name = "type-map" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6d3364c5e96cb2ad1603037ab253ddd34d7fb72a58bdddf4b7350760fc69a46" -dependencies = [ - "rustc-hash", -] - -[[package]] -name = "typenum" -version = "1.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" - -[[package]] -name = "unic-langid" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "398f9ad7239db44fd0f80fe068d12ff22d78354080332a5077dc6f52f14dcf2f" -dependencies = [ - "unic-langid-impl", -] - -[[package]] -name = "unic-langid-impl" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35bfd2f2b8796545b55d7d3fd3e89a0613f68a0d1c8bc28cb7ff96b411a35ff" -dependencies = [ - "serde", - "tinystr", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "url" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "version-compare" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579a42fc0b8e0c63b76519a339be31bed574929511fa53c1a3acae26eb258f29" - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "walkdir" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" -dependencies = [ - "same-file", - "winapi-util", -] - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.38", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.38", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" - -[[package]] -name = "web-sys" -version = "0.3.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-util" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" -dependencies = [ - "winapi", -] - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "winnow" -version = "0.5.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711d82167854aff2018dfd193aa0fef5370f456732f0d5a0c59b0f1b4b907" -dependencies = [ - "memchr", -] - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys", -] diff --git a/data/application_utility/default.json b/data/application_utility/default.json index 085a1ce..a13541e 100644 --- a/data/application_utility/default.json +++ b/data/application_utility/default.json @@ -1,869 +1,1991 @@ [ - { - "name": "Browsers", - "icon": "browser", - "description": "Web browsing and communication", - "apps": [ - { - "name": "Brave", - "icon": "brave", - "description": "A web browser that stops ads and trackers by default.", - "pkg": "brave-bin", - "extra": [] - }, - { - "name": "Ungoogled Chromium", - "icon": "chromium", - "description": "A lightweight approach to removing Google web service dependency", - "pkg": "ungoogled-chromium", - "extra": [] - }, - { - "name": "Chromium", - "icon": "chromium", - "description": "Fast and popular open source browser", - "pkg": "chromium", - "extra": [] - }, - { - "name": "Epiphany", - "icon": "epiphany", - "description": "Gnome Web Browser", - "pkg": "epiphany", - "filter": [ - "advanced" - ], - "extra": [] - }, - { - "name": "Firefox", - "icon": "mozilla-firefox", - "description": "Privacy oriented Web Browser", - "pkg": "firefox", - "extra": [] - }, - { - "name": "Midori", - "icon": "midori", - "description": "Lightweight Web browser", - "pkg": "midori", - "extra": [] - }, - { - "name": "Falkon", - "icon": "falkon", - "description": "KDE Web Browser", - "pkg": "falkon", - "filter": [ - "advanced" - ], - "desktop": [ - "!gnome" - ], - "extra": [] - }, - { - "name": "Konqueror", - "icon": "konqueror", - "description": "Konqueror Web Browser", - "pkg": "konqueror", - "filter": [ - "advanced" - ], - "desktop": [ - "!gnome" - ], - "extra": [] - }, - { - "name": "Opera", - "icon": "opera", - "description": "Fast and secure webbrowser", - "pkg": "opera", - "extra": [] - } - ] - }, - { - "name": "E-mail", - "icon": "mail-client", - "description": "E-mail, Calendar, Tasks", - "apps": [ - { - "name": "Claws Mail", - "icon": "claws-mail", - "description": "Lightweight and fast GTK+ based Mail Client", - "pkg": "claws-mail", - "filter": [ - "advanced" - ], - "extra": [] - }, - { - "name": "Evolution", - "icon": "evolution", - "description": "Manage your email, contacts and schedule", - "pkg": "evolution", - "extra": [] - }, - { - "name": "Geary", - "icon": "geary", - "description": "Send and receive mail", - "pkg": "geary", - "extra": [] - }, - { - "name": "KMail", - "icon": "kmail", - "description": "KDE E-mail client", - "pkg": "kmail", - "desktop": [ - "!gnome" - ], - "extra": [] - }, - { - "name": "Thunderbird", - "icon": "thunderbird", - "description": "Send and receive mail, contacts and schedule", - "pkg": "thunderbird", - "extra": [] - } - ] - }, - { - "name": "Office Suites", - "icon": "applications-office", - "description": "Office suites like MS Office", - "apps": [ - { - "name": "Libre Office (Fresh)", - "icon": "libreoffice-main", - "description": "Open Source Office Application (Latest)", - "pkg": "libreoffice-fresh", - "extra": [] - }, - { - "name": "Libre Office (Still)", - "icon": "libreoffice-main", - "description": "Open Source Office Application (Stable)", - "pkg": "libreoffice-still", - "extra": [] - }, - { - "name": "WPS Office", - "icon": "ms-word", - "description": "An office productivity suite.", - "pkg": "wps-office", - "extra": [] - }, - { - "name": "OnlyOffice Desktop Editors", - "icon": "ms-word", - "description": "Light and free MS Office clone.", - "pkg": "onlyoffice-bin", - "extra": [] - }, - { - "name": "MS 365 Electron", - "icon": "ms-word", - "description": "Unofficial Microsoft 365 Web Desktop Wrapper made with Electron", - "pkg": "ms-365-electron-bin", - "extra": [] - } - ] - }, - { - "name": "E-Book", - "icon": "calibre", - "description": "E-book library apps", - "apps": [ - { - "name": "Calibre", - "icon": "calibre-viewer", - "description": "The one stop solution to your e-book needs", - "pkg": "calibre", - "extra": [] - }, - { - "name": "FBReader", - "icon": "fbreader", - "description": "FBReader E-Book Reader", - "pkg": "fbreader", - "extra": [] - } - ] - }, - { - "name": "Text Editors", - "icon": "text-editor", - "description": "Various editors for text or code", - "apps": [ - { - "name": "Atom", - "icon": "atom", - "description": "A hackable text editor for the 21st Century", - "pkg": "atom", - "filter": [ - "advanced" - ], - "extra": [] - }, - { - "name": "Gedit", - "icon": "gedit", - "description": "Gnome text editor.", - "pkg": "gedit", - "extra": [] - }, - { - "name": "Micro", - "icon": "micro", - "description": "Inituitive Text Editor for terminal", - "pkg": "micro", - "extra": [] - }, - { - "name": "Vim", - "icon": "vim", - "description": "Keyboard controlled text-editor", - "pkg": "vim", - "filter": [ - "advanced" - ], - "extra": [] - }, - { - "name": "NeoVim", - "icon": "neovim", - "description": "Vim-fork focused on extensibility and usability", - "pkg": "neovim", - "filter": [ - "advanced" - ], - "extra": [] - }, - { - "name": "Neovide", - "icon": "neovide", - "description": "No Nonsense Neovim Client in Rust", - "pkg": "neovide", - "filter": [ - "advanced" - ], - "extra": [] - }, - { - "name": "Visual Studio Code OSS", - "icon": "visual-studio-code", - "description": "Microsoft Code Editor", - "pkg": "code", - "filter": [ - "advanced" - ], - "extra": [] - }, - { - "name": "Gnome builder", - "icon": "gnome-builder", - "description": "An IDE for writing GNOME-based software", - "pkg": "gnome-builder", - "filter": [ - "advanced" - ], - "extra": [] - }, - { - "name": "Xed", - "icon": "xed", - "description": "A small and lightweight text editor. X Apps Project", - "pkg": "xed", - "extra": [] - } - ] - }, - { - "name": "Printing", + { + "name": "Package Managers", + "icon": "pamac", + "description": "Alternative Package Managers", + "apps": [ + { + "name": "Amethyst AUR Helper", + "icon": "beagled", + "description": "Dynamic", + "pkg": "ame", + "extra": [] + }, + { + "name": "AppImage Launcher", + "icon": "beagled", + "description": "Dynamic", + "pkg": "appimagelauncher", + "extra": [] + }, + { + "name": "Aura", + "icon": "beagled", + "description": "Dynamic", + "pkg": "aura-bin", + "extra": [] + }, + { + "name": "Bauh", + "icon": "bauh", + "description": "Dynamic", + "pkg": "bauh", + "extra": [] + }, + { + "name": "Discover", + "icon": "org.kde.discover", + "description": "Dynamic", + "pkg": "discover", + "extra": [] + }, + { + "name": "Kalu KDE", + "icon": "plasma", + "description": "Dynamic", + "pkg": "kalu-kde", + "extra": [] + }, + { + "name": "Octopi", + "icon": "octopi", + "description": "Dynamic", + "pkg": "octopi", + "extra": ["alpm_octopi_utils","octopi-notifier-qt5"] + }, + { + "name": "Pamac", + "icon": "pamac", + "description": "Update your System, Add/Remove Software from repo and AUR", + "pkg": "pamac", + "extra": ["pamac-gtk","libpamac-flatpak-plugin","libpamac-snap-plugin"] + }, + { + "name": "Paru", + "icon": "konsole", + "description": "Dynamic", + "pkg": "paru-bin", + "extra": [] + }, + { + "name": "Yay", + "icon": "terminal", + "description": "CLI AUR helper", + "pkg": "yay", + "extra": [] + } + ] + }, + { + "name": "Browsers", + "icon": "browser", + "description": "Web browsing and communication", + "apps": [ + { + "name": "Firefox", + "icon": "firefox", + "description": "Mozilla Web Browser", + "pkg": "firefox", + "extra": [] + }, + { + "name": "Firefox Dev", + "icon": "mozilla-firefox", + "description": "Privacy oriented Web Browser", + "pkg": "firefox-developer-edition", + "extra": [] + }, + { + "name": "Brave", + "icon": "brave", + "description": "A web browser that stops ads and trackers by default.", + "pkg": "brave-bin", + "extra": [] + }, + { + "name": "Opera", + "icon": "opera", + "description": "Fast and secure webbrowser", + "pkg": "opera", + "extra": ["opera-ffmpeg-codecs"] + }, + { + "name": "Vivaldi", + "icon": "vivaldi", + "description": "Fast and secure webbrowser", + "pkg": "vivaldi", + "extra": ["vivaldi-ffmpeg-codecs","vivaldi-widevine"] + }, + { + "name": "Chromium", + "icon": "chromium", + "description": "Open Sourced Chrome Browser", + "pkg": "chromium", + "extra": [] + }, + { + "name": "Ungoogled Chromium", + "icon": "chromium", + "description": "A lightweight approach to removing Google web service dependency", + "pkg": "ungoogled-chromium", + "extra": [] + }, + { + "name": "Epiphany", + "icon": "epiphany", + "description": "Gnome Web Browser", + "pkg": "epiphany", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "Midori", + "icon": "midori", + "description": "Lightweight Web browser", + "pkg": "midori", + "extra": [] + }, + { + "name": "Falkon", + "icon": "falkon", + "description": "KDE Web Browser", + "pkg": "falkon", + "filter": [ + "advanced" + ], + "desktop": [ + "!gnome" + ], + "extra": [] + }, + { + "name": "Konqueror", + "icon": "konqueror", + "description": "Konqueror Web Browser", + "pkg": "konqueror", + "filter": [ + "advanced" + ], + "desktop": [ + "!gnome" + ], + "extra": [] + }, + { + "name": "Netsurf", + "icon": "netsurf", + "description": "Light and Fast Web Browser", + "pkg": "netsurf", + "extra": [] + }, + { + "name": "Mercury Browser", + "icon": "net.xmind.XMind", + "description": "Dynamic", + "pkg": "mercury-browser-bin", + "extra": [] + }, + { + "name": "Thorium", + "icon": "chrome", + "description": "Dynamic", + "pkg": "thorium-browser-bin", + "extra": [] + }, + { + "name": "Webapp Manager", + "icon": "webapp-manager", + "description": "Dynamic", + "pkg": "webapp-manager", + "extra": [] + } + ] + }, + { + "name": "E-mail", + "icon": "mail-client", + "description": "E-mail, Calendar, Tasks", + "apps": [ + { + "name": "Thunderbird", + "icon": "thunderbird", + "description": "Send and receive mail, contacts and schedule", + "pkg": "thunderbird", + "extra": [] + }, + { + "name": "Mailspring", + "icon": "mailspring", + "description": "Send and receive mail, contacts and schedule", + "pkg": "Mailspring", + "extra": [] + }, + { + "name": "Claws Mail", + "icon": "claws-mail", + "description": "Lightweight and fast GTK+ based Mail Client", + "pkg": "claws-mail", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "Evolution", + "icon": "evolution", + "description": "Manage your email, contacts and schedule", + "pkg": "evolution", + "extra": [] + }, + { + "name": "Geary", + "icon": "geary", + "description": "Send and receive mail", + "pkg": "geary", + "extra": [] + }, + { + "name": "KMail", + "icon": "kmail", + "description": "KDE E-mail client", + "pkg": "kmail", + "desktop": [ + "!gnome" + ], + "extra": [] + }, + { + "name": "Sylpheed", + "icon": "sylpheed", + "description": "E-mail client", + "pkg": "sylpheed", + "extra": [] + }, + { + "name": "Blue Mail", + "icon": "kmail", + "description": "Dynamic", + "pkg": "bluemail", + "extra": [] + } + ] + }, + { + "name": "Office Suites", + "icon": "applications-office", + "description": "Office suites like MS Office", + "apps": [ + { + "name": "Libre Office (Fresh)", + "icon": "libreoffice-main", + "description": "Open Source Office Application (Latest)", + "pkg": "libreoffice-fresh", + "extra": ["hunspell-en_us"] + }, + { + "name": "Libre Office (Still)", + "icon": "libreoffice-main", + "description": "Open Source Office Application (Stable)", + "pkg": "libreoffice-still", + "extra": ["hunspell-en_us"] + }, + { + "name": "Free Office", + "icon": "freeoffice-planmaker", + "description": "Dynamic", + "pkg": "freeoffice", + "extra": [] + }, + { + "name": "WPS Office", + "icon": "ms-word", + "description": "An office productivity suite.", + "pkg": "wps-office", + "extra": [] + }, + { + "name": "OnlyOffice Desktop Editors", + "icon": "ms-word", + "description": "Light and free MS Office clone.", + "pkg": "onlyoffice-bin", + "extra": [] + }, + { + "name": "Calligra Office", + "icon": "calligrawords", + "description": "Qt Based Office Suite", + "pkg": "calligra", + "extra": [] + }, + { + "name": "MS 365 Electron", + "icon": "ms-word", + "description": "Unofficial Microsoft 365 Web Desktop Wrapper made with Electron", + "pkg": "ms-365-electron-bin", + "extra": [] + }, + { + "name": "MS Office Online", + "icon": "ms-word", + "description": "Microsoft Office Online", + "pkg": "ms-office-online", + "extra": [] + } + ] + }, + { + "name": "Office Apps", + "icon": "gnumeric", + "description": "Stand alone applications", + "apps": [ + { + "name": "Abiword", + "icon": "abiword", + "description": "Compose, Edit and view documents", + "pkg": "abiword", + "extra": [] + }, + { + "name": "Gnumeric", + "icon": "gnumeric", + "description": "A High Precision Spreadsheet Program", + "pkg": "gnumeric", + "extra": [] + } + ] + }, + { + "name": "E-Book", + "icon": "calibre", + "description": "E-book library apps", + "apps": [ + { + "name": "Calibre", + "icon": "calibre-viewer", + "description": "The one stop solution to your e-book needs", + "pkg": "calibre", + "extra": [] + }, + { + "name": "FBReader", + "icon": "fbreader", + "description": "FBReader E-Book Reader", + "pkg": "fbreader", + "extra": [] + } + ] + }, + { + "name": "Text Editors", + "icon": "text-editor", + "description": "Various editors for text or code", + "apps": [ + { + "name": "Atom", + "icon": "atom", + "description": "A hackable text editor for the 21st Century", + "pkg": "atom", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "Gedit", + "icon": "gedit", + "description": "Gnome text editor.", + "pkg": "gedit", + "extra": [] + }, + { + "name": "Micro", + "icon": "micro", + "description": "Inituitive Text Editor for terminal", + "pkg": "micro", + "extra": [] + }, + { + "name": "Vim", + "icon": "vim", + "description": "Keyboard controlled text-editor", + "pkg": "vim", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "NeoVim", + "icon": "neovim", + "description": "Vim-fork focused on extensibility and usability", + "pkg": "neovim", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "Neovide", + "icon": "neovide", + "description": "No Nonsense Neovim Client in Rust", + "pkg": "neovide", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "Visual Studio Code", + "icon": "visual-studio-code", + "description": "Microsoft Code Editor", + "pkg": "visual-studio-code-bin", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "Visual Studio Code OSS", + "icon": "visual-studio-code", + "description": "Microsoft Code Editor", + "pkg": "code", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "Gnome builder", + "icon": "gnome-builder", + "description": "An IDE for writing GNOME-based software", + "pkg": "gnome-builder", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "Geany", + "icon": "geany", + "description": "A fast and lightweight IDE using GTK+", + "pkg": "geany", + "extra": [] + }, + { + "name": "Xed", + "icon": "xed", + "description": "A small and lightweight text editor. X Apps Project", + "pkg": "xed", + "extra": [] + }, + { + "name": "Mousepad", + "icon": "mousepad", + "description": "Simple Text Editor", + "pkg": "mousepad", + "extra": [] + } + ] + }, + { + "name": "Printing", + "icon": "printer", + "description": "Support for printing CUPS", + "apps": [ + { + "name": "The CUPS Printing System", "icon": "printer", - "description": "Support for printing CUPS", - "apps": [ - { - "name": "The CUPS Printing System", - "icon": "printer", - "description": "Printing support", - "pkg": "cups", - "extra": ["cups-pdf", "cups-pk-helper"] - } - ] - }, - { - "name": "PDF", - "icon": "pdfeditor", - "description": "PDF applications applications", - "apps": [ - { - "name": "Evince", - "icon": "evince", - "description": "View multi page documents", - "pkg": "evince", - "extra": [] - }, - { - "name": "Okular", - "icon": "okular", - "description": "Document Viewer", - "pkg": "okular", - "desktop": [ - "!gnome" - ], - "extra": [] - }, - - { - "name": "PDFMod", - "icon": "pdfmod", - "description": "Remove, extract and rotate pages in PDF Documents", - "pkg": "pdfmod", - "extra": [] - }, - { - "name": "Xournalpp", - "icon": "xournalpp", - "description": "Easy pdf editing tool", - "pkg": "xournalpp", - "extra": [] - }, - { - "name": "Xreader", - "icon": "xreader", - "description": "Xreader is based on Atril and acts as document and PDF reader", - "pkg": "xreader", - "extra": [] - }, - { - "name": "Paperwork", - "icon": "paperwork", - "description": "Document manager for GNOME to manage scanned documents and PDFs", - "pkg": "paperwork", - "extra": [] - } - ] - }, - { - "name": "Graphics Creating", - "icon": "applications-accessories", - "description": "Creating and editing graphics", - "apps": [ - { - "name": "Blender", - "icon": "blender", - "description": "3D modeling and animation", - "pkg": "blender", - "extra": [] - }, - { - "name": "GIMP", - "icon": "gimp", - "description": "Create images and edit photographs", - "pkg": "gimp", - "extra": [] - }, - { - "name": "Inkscape", - "icon": "inkscape", - "description": "Vector Graphics Editor", - "pkg": "inkscape", - "extra": [] - }, - { - "name": "Krita", - "icon": "krita", - "description": "Digital Painting Creative Freedom", - "pkg": "krita", - "extra": [] - }, - { - "name": "Pinta", - "icon": "pinta", - "description": "Easy create and edit images", - "pkg": "pinta", - "extra": [] - }, - { - "name": "Tux Paint", - "icon": "tuxpaint", - "description": "Drawing program for children", - "pkg": "tuxpaint", - "extra": [] - } - ] - }, - { - "name": "Photos", - "icon": "applications-graphics", - "description": "Viewers and organizers", - "apps": [ - { - "name": "Gpicview", - "icon": "gpicview", - "description": "Lightweight Image Viewer", - "pkg": "gpicview", - "extra": [] - }, - { - "name": "gThumb", - "icon": "gthumb", - "description": "View and organize your images", - "pkg": "gthumb", - "extra": [] - }, - { - "name": "Gnome-photos", - "icon": "gthumb", - "description": "Access, organize, and share your photos on GNOME", - "pkg": "gnome-photos", - "extra": [] - }, - { - "name": "Ristretto", - "icon": "ristretto", - "description": "Free and lightweight image viewer", - "pkg": "ristretto", - "extra": [] - }, - { - "name": "Shotwell", - "icon": "shotwell", - "description": "Popular Photo Manager", - "pkg": "shotwell", - "extra": [] - }, - { - "name": "Viewnior", - "icon": "viewnior", - "description": "GTK based Elegant Image Viewer", - "pkg": "viewnior", - "extra": [] - }, - { - "name": "Eye of Gnome", - "icon": "eog", - "description": "An image viewing and cataloging program", - "pkg": "eog", - "extra": [] - } - ] - }, - { - "name": "Video/Movie", - "icon": "video-player", - "description": "Organize and play videos and movies", - "apps": [ - { - "name": "Kodi", - "icon": "kodi", - "description": "Manage and view your media", - "pkg": "kodi", - "extra": [] - }, - { - "name": "Parole", - "icon": "parole", - "description": "Modern and simple media player", - "pkg": "parole", - "extra": [] - }, - { - "name": "SM Player", - "icon": "smplayer", - "description": "A great MPlayer front end", - "pkg": "smplayer", - "extra": [] - }, - { - "name": "Totem", - "icon": "totem", - "description": "Play movies", - "pkg": "totem", - "extra": [] - }, - { - "name": "VLC", - "icon": "vlc", - "description": "VLC media player, the openxource multimedia player", - "pkg": "vlc", - "extra": [] - }, - { - "name": "Xplayer", - "icon": "xplayer", - "description": "Xplayer is based on Totem and plays both music an video", - "pkg": "xplayer", - "extra": [] - } - ] - }, - { - "name": "Audio", - "icon": "musicbrainz", - "description": "Audio players", - "apps": [ - { - "name": "Audacious", - "icon": "audacious", - "description": "Listen to music", - "pkg": "audacious", - "extra": [] - }, - { - "name": "Clementine", - "icon": "clementine", - "description": "Play music files and internet radio", - "pkg": "clementine", - "extra": [] - }, - { - "name": "DeadBeeF", - "icon": "deadbeef", - "description": "Listen to music", - "pkg": "deadbeef", - "extra": ["ffmpeg", "libmad", "mpg123"] - }, - { - "name": "Lollypop", - "icon": "lollypop", - "description": "Play and organize your music collection", - "pkg": "lollypop", - "extra": [] - }, - { - "name": "Rhythmbox", - "icon": "rhythmbox", - "description": "Gnome music playing application", - "pkg": "rhythmbox", - "extra": [] - } - ] - }, - { - "name": "Media recording/editing", + "description": "Printing support", + "pkg": "cups", + "extra": ["cups-pdf", "cups-pk-helper"] + } + ] + }, + { + "name": "PDF", + "icon": "pdfeditor", + "description": "PDF applications applications", + "apps": [ + { + "name": "Evince", + "icon": "evince", + "description": "View multi page documents", + "pkg": "evince", + "extra": [] + }, + { + "name": "Okular", + "icon": "okular", + "description": "Document Viewer", + "pkg": "okular", + "desktop": [ + "!gnome" + ], + "extra": [] + }, + { + "name": "PDFMod", + "icon": "pdfmod", + "description": "Remove, extract and rotate pages in PDF Documents", + "pkg": "pdfmod", + "extra": [] + }, + { + "name": "Xournalpp", + "icon": "xournalpp", + "description": "Easy pdf editing tool", + "pkg": "xournalpp", + "extra": [] + }, + { + "name": "Xreader", + "icon": "xreader", + "description": "Xreader is based on Atril and acts as document and PDF reader", + "pkg": "xreader", + "extra": [] + }, + { + "name": "Paperwork", + "icon": "paperwork", + "description": "Document manager for GNOME to manage scanned documents and PDFs", + "pkg": "paperwork", + "extra": [] + }, + { + "name": "Epdfview", + "icon": "qpdfview", + "description": "Lightweight PDF document viewer", + "pkg": "epdfview", + "extra": [] + }, + { + "name": "Qpdfview", + "icon": "qpdfview", + "description": "Tabbed document viewer", + "pkg": "qpdfview", + "extra": [] + } + ] + }, + { + "name": "Graphics Creating", + "icon": "applications-accessories", + "description": "Creating and editing graphics", + "apps": [ + { + "name": "Blender", + "icon": "blender", + "description": "3D modeling and animation", + "pkg": "blender", + "extra": [] + }, + { + "name": "GIMP", + "icon": "gimp", + "description": "Create images and edit photographs", + "pkg": "gimp", + "extra": [] + }, + { + "name": "Inkscape", + "icon": "inkscape", + "description": "Vector Graphics Editor", + "pkg": "inkscape", + "extra": [] + }, + { + "name": "Krita", + "icon": "krita", + "description": "Digital Painting Creative Freedom", + "pkg": "krita", + "extra": [] + }, + { + "name": "Pinta", + "icon": "pinta", + "description": "Easy create and edit images", + "pkg": "pinta", + "extra": [] + }, + { + "name": "Tux Paint", + "icon": "tuxpaint", + "description": "Drawing program for children", + "pkg": "tuxpaint", + "extra": [] + }, + { + "name": "Flameshot", + "icon": "flameshot", + "description": "Dynamic", + "pkg": "flameshot", + "extra": [] + } + ] + }, + { + "name": "Photos", + "icon": "applications-graphics", + "description": "Viewers and organizers", + "apps": [ + { + "name": "Gwenview", + "icon": "gwenview", + "description": "Image Viewer", + "pkg": "gwenview", + "extra": [] + }, + { + "name": "Gpicview", + "icon": "gpicview", + "description": "Lightweight Image Viewer", + "pkg": "gpicview", + "extra": [] + }, + { + "name": "gThumb", + "icon": "gthumb", + "description": "View and organize your images", + "pkg": "gthumb", + "extra": [] + }, + { + "name": "Gnome-photos", + "icon": "gthumb", + "description": "Access, organize, and share your photos on GNOME", + "pkg": "gnome-photos", + "extra": [] + }, + { + "name": "Ristretto", + "icon": "ristretto", + "description": "Free and lightweight image viewer", + "pkg": "ristretto", + "extra": [] + }, + { + "name": "Shotwell", + "icon": "shotwell", + "description": "Popular Photo Manager", + "pkg": "shotwell", + "extra": [] + }, + { + "name": "Viewnior", + "icon": "viewnior", + "description": "GTK based Elegant Image Viewer", + "pkg": "viewnior", + "extra": [] + }, + { + "name": "Eye of Gnome", + "icon": "eog", + "description": "An image viewing and cataloging program", + "pkg": "eog", + "extra": [] + } + ] + }, + { + "name": "Video/Movie", + "icon": "video-player", + "description": "Organize and play videos and movies", + "apps": [ + { + "name": "Kodi", + "icon": "kodi", + "description": "Manage and view your media", + "pkg": "kodi", + "extra": [] + }, + { + "name": "Parole", + "icon": "parole", + "description": "Modern and simple media player", + "pkg": "parole", + "extra": [] + }, + { + "name": "SM Player", + "icon": "smplayer", + "description": "A great MPlayer front end", + "pkg": "smplayer", + "extra": [] + }, + { + "name": "Totem", + "icon": "totem", + "description": "Play movies", + "pkg": "totem", + "extra": [] + }, + { + "name": "VLC LuaJit", + "icon": "vlc", + "description": "VLC media player, the openxource multimedia player", + "pkg": "vlc-luajit", + "extra": [] + }, + { + "name": "VLC", + "icon": "vlc", + "description": "VLC media player, the openxource multimedia player", + "pkg": "vlc", + "extra": [] + }, + { + "name": "Xplayer", + "icon": "xplayer", + "description": "Xplayer is based on Totem and plays both music an video", + "pkg": "xplayer", + "extra": [] + }, + { + "name": "Totem", + "icon": "totem", + "description": "Play movies", + "pkg": "totem", + "extra": [] + } + ] + }, + { + "name": "Audio", + "icon": "musicbrainz", + "description": "Audio players", + "apps": [ + { + "name": "Audacious", + "icon": "audacious", + "description": "Listen to music", + "pkg": "audacious", + "extra": [] + }, + { + "name": "Clementine", + "icon": "clementine", + "description": "Play music files and internet radio", + "pkg": "clementine", + "extra": [] + }, + { + "name": "DeadBeeF", + "icon": "deadbeef", + "description": "Listen to music", + "pkg": "deadbeef", + "extra": ["ffmpeg", "libmad", "mpg123"] + }, + { + "name": "Lollypop", + "icon": "lollypop", + "description": "Play and organize your music collection", + "pkg": "lollypop", + "extra": [] + }, + { + "name": "Rhythmbox", + "icon": "rhythmbox", + "description": "Gnome music playing application", + "pkg": "rhythmbox", + "extra": [] + } + ] + }, + { + "name": "Media recording/editing", + "icon": "kdenlive", + "description": "Audio and Video editing", + "apps": [ + { + "name": "Audacity", + "icon": "audacity", + "description": "Record and Edit Audio files", + "pkg": "audacity", + "extra": [] + }, + { + "name": "Kdenlive", "icon": "kdenlive", - "description": "Audio and Video editing", - "apps": [ - { - "name": "Audacity", - "icon": "audacity", - "description": "Record and Edit Audio files", - "pkg": "audacity", - "extra": [] - }, - { - "name": "Kdenlive", - "icon": "kdenlive", - "description": "Video Editor", - "pkg": "kdenlive", - "extra": [] - }, - { - "name": "OBS Studio", - "icon": "obs", - "description": "Open Source Streaming/Recording Application", - "pkg": "obs-studio", - "extra": [] - }, - { - "name": "Shotcut", - "icon": "shotcut", - "description": "Cross-platform Qt based Video Editor", - "pkg": "shotcut", - "extra": [] - }, - { - "name": "Openshot", - "icon": "openshot", - "description": "Award-winning free and open-source video editor", - "pkg": "obs-studio", - "extra": [] - }, - { - "name": "Pitivi", - "icon": "pitivi", - "description": "Editor for audio/video projects", - "pkg": "pitivi", - "extra": [] - }, - { - "name": "Simple Screen Recorder", - "icon": "simple-ccsm", - "description": "Screen Capturing Application", - "pkg": "simplescreenrecorder", - "extra": [] - }, - { - "name": "Flowblade", - "icon": "flowblade", - "description": "Multitrack non-linear video editor", - "pkg": "flowblade", - "extra": [] - } - ] - }, - { - "name": "Chat", - "icon": "internet-chat", - "description": "Online messaging and chat", - "apps": [ - { - "name": "HexChat", - "icon": "hexchat", - "description": "Graphic IRC Client", - "pkg": "hexchat", - "extra": [] - }, - { - "name": "Element", - "icon": "element-desktop", - "description": "Glossy Matrix collaboration client - desktop version", - "pkg": "element-desktop", - "extra": [] - }, - { - "name": "Telegram", - "icon": "telegram-desktop", - "description": "Official Telegram Desktop client", - "pkg": "telegram-desktop", - "extra": [] - }, - { - "name": "Whatsapp web", - "icon": "whatsapp-web-jak", - "description": "Wrapper for whatsapp online", - "pkg": "whatsapp-web-jak", - "extra": [] - }, - { - "name": "Slack web", - "icon": "slack-web-jak", - "description": "Wrapper for slack online", - "pkg": "slack-web-jak", - "extra": [] - }, - { - "name": "Pidgin Messenger", - "icon": "pidgin", - "description": "Instant messaging Client", - "pkg": "pidgin", - "extra": [] - } - ] - }, - { - "name": "File Sharing", + "description": "Video Editor", + "pkg": "kdenlive", + "extra": [] + }, + { + "name": "OBS Studio with Browser support", + "icon": "obs", + "description": "Open Source Streaming/Recording Application", + "pkg": "obs-studio-tytan652", + "extra": [] + }, + { + "name": "OBS Studio", + "icon": "obs", + "description": "Open Source Streaming/Recording Application", + "pkg": "obs-studio", + "extra": [] + }, + { + "name": "Shotcut", + "icon": "shotcut", + "description": "Cross-platform Qt based Video Editor", + "pkg": "shotcut", + "extra": [] + }, + { + "name": "Openshot", + "icon": "openshot", + "description": "Award-winning free and open-source video editor", + "pkg": "openshot", + "extra": [] + }, + { + "name": "Pitivi", + "icon": "pitivi", + "description": "Editor for audio/video projects", + "pkg": "pitivi", + "extra": [] + }, + { + "name": "Simple Screen Recorder", + "icon": "simple-ccsm", + "description": "Screen Capturing Application", + "pkg": "simplescreenrecorder", + "extra": [] + }, + { + "name": "Flowblade", + "icon": "flowblade", + "description": "Multitrack non-linear video editor", + "pkg": "flowblade", + "extra": [] + } + ] + }, + { + "name": "Audio Tools", + "icon": "audio-headset", + "description": "Various Audio Tools", + "apps": [ + { + "name": "Amarok", + "icon": "amarok", + "description": "Dynamic", + "pkg": "amarok", + "extra": ["taglib-extras"] + }, + { + "name": "Glava", + "icon": "music_icon-24", + "description": "Dynamic", + "pkg": "glava", + "extra": [] + }, + { + "name": "James DSP", + "icon": "lxmusic", + "description": "Dynamic", + "pkg": "jamesdsp", + "extra": [] + }, + { + "name": "KWave", + "icon": "kwave", + "description": "Dynamic", + "pkg": "kwave", + "extra": [] + }, + { + "name": "Noisetorch", + "icon": "noise", + "description": "Dynamic", + "pkg": "noisetorch", + "extra": [] + }, + { + "name": "Ocen Audio", + "icon": "noise", + "description": "Dynamic", + "pkg": "ocenaudio-bin", + "extra": [] + }, + { + "name": "Olivia", + "icon": "lxmusic", + "description": "Dynamic", + "pkg": "olivia", + "extra": [] + }, + { + "name": "Radiotray", + "icon": "radiotray_on", + "description": "Dynamic", + "pkg": "radiotray", + "extra": [] + }, + { + "name": "Sayonara Player", + "icon": "audio-player", + "description": "Dynamic", + "pkg": "sayonara-player", + "extra": [] + }, + { + "name": "Spotify w/ Adblocker", + "icon": "spotify", + "description": "Dynamic", + "pkg": "spotify-adblock-git", + "extra": [] + } + ] + }, + { + "name": "Chat", + "icon": "internet-chat", + "description": "Online messaging and chat", + "apps": [ + { + "name": "HexChat", + "icon": "hexchat", + "description": "Graphic IRC Client", + "pkg": "hexchat", + "extra": [] + }, + { + "name": "Element", + "icon": "element-desktop", + "description": "Glossy Matrix collaboration client - desktop version", + "pkg": "element-desktop", + "extra": [] + }, + { + "name": "Telegram", + "icon": "telegram-desktop", + "description": "Official Telegram Desktop client", + "pkg": "telegram-desktop", + "extra": [] + }, + { + "name": "Whatsapp web", + "icon": "whatsapp", + "description": "Wrapper for whatsapp online", + "pkg": "whatsapp-for-linux", + "extra": [] + }, + { + "name": "Slack web", + "icon": "slack", + "description": "Wrapper for slack online", + "pkg": "slack-desktop", + "extra": [] + }, + { + "name": "Pidgin Messenger", + "icon": "pidgin", + "description": "Instant messaging Client", + "pkg": "pidgin", + "extra": [] + }, + { + "name": "Koversation IRC", + "icon": "konversation", + "description": "Dynamic", + "pkg": "konversation", + "extra": [] + }, + { + "name": "Sengi for Mastodon", + "icon": "signal", + "description": "Dynamic", + "pkg": "sengi-bin", + "extra": [] + }, + { + "name": "SimpleX Chat CLI", + "icon": "signal", + "description": "Dynamic", + "pkg": "simplex-chat-bin", + "extra": [] + } + ] + }, + { + "name": "File Sharing", + "icon": "transmission", + "description": "FTP and Torrent apps", + "filter": [ + "advanced" + ], + "apps": [ + { + "name": "qBittorrent", + "icon": "qbittorrent", + "description": "Bittorrent Client", + "pkg": "qbittorrent", + "extra": [] + }, + { + "name": "Deluge", + "icon": "deluge", + "description": "Python based Bittorrent Client", + "pkg": "deluge", + "extra": [] + }, + { + "name": "Filezilla", + "icon": "filezilla", + "description": "Graphical FTP/FTPS/SFTP browser", + "pkg": "filezilla", + "extra": [] + }, + { + "name": "Transmission GTK", "icon": "transmission", - "description": "FTP and Torrent apps", - "filter": [ - "advanced" + "description": "GTK based Bittorrent Client", + "pkg": "transmission-gtk", + "extra": [] + }, + { + "name": "QTransmission", + "icon": "transmission", + "description": "QT based Bittorrent Client", + "pkg": "transmission-qt", + "desktop": [ + "!gnome" ], - "apps": [ - { - "name": "Deluge", - "icon": "deluge", - "description": "Python based Bittorrent Client", - "pkg": "deluge", - "extra": [] - }, - { - "name": "Filezilla", - "icon": "filezilla", - "description": "Graphical FTP/FTPS/SFTP browser", - "pkg": "filezilla", - "extra": [] - }, - { - "name": "Transmission GTK", - "icon": "transmission", - "description": "GTK based Bittorrent Client", - "pkg": "transmission-gtk", - "extra": [] - }, - { - "name": "QTransmission", - "icon": "transmission", - "description": "QT based Bittorrent Client", - "pkg": "transmission-qt", - "desktop": [ - "!gnome" - ], - "extra": [] - }, - { - "name": "Syncthing", - "icon": "syncthing-gtk", - "description": "Cross Platform file synchronization tool", - "pkg": "syncthing-gtk", - "extra": [] - } - ] - }, - { - "name": "Backup", + "extra": [] + }, + { + "name": "Syncthing", + "icon": "syncthing-gtk", + "description": "Cross Platform file synchronization tool", + "pkg": "syncthing-gtk", + "extra": [] + } + ] + }, + { + "name": "Internet Downloaders", + "icon": "applications-internet", + "description": "Downloaders", + "apps": [ + { + "name": "BiglyBT", + "icon": "deluge", + "description": "Dynamic", + "pkg": "biglybt", + "extra": [] + }, + { + "name": "Deluge", + "icon": "deluge", + "description": "Dynamic", + "pkg": "deluge", + "extra": [] + }, + { + "name": "Fragments", + "icon": "fragments", + "description": "Dynamic", + "pkg": "fragments", + "extra": [] + }, + { + "name": "Free Download Manager", + "icon": "download", + "description": "Dynamic", + "pkg": "freedownloadmanager", + "extra": [] + }, + { + "name": "Ktorrent", + "icon": "ktorrent", + "description": "Dynamic", + "pkg": "ktorrent", + "extra": [] + }, + { + "name": "Nitroshare", + "icon": "neversong", + "description": "Dynamic", + "pkg": "nitroshare", + "extra": [] + }, + { + "name": "Persepolis", + "icon": "persepolis", + "description": "Dynamic", + "pkg": "persepolis", + "extra": [] + }, + { + "name": "RClone", + "icon": "googledrive", + "description": "Dynamic", + "pkg": "rclone", + "extra": [] + } + ] + }, + { + "name": "Backup", + "icon": "deja-dup", + "description": "Backup utilites", + "apps": [ + { + "name": "Timeshift", + "icon": "timeshift", + "description": "A system restore utility for Linux", + "pkg": "timeshift", + "extra": [] + }, + { + "name": "Deja Dup", "icon": "deja-dup", - "description": "Backup utilites", - "apps": [ - { - "name": "Deja Dup", - "icon": "deja-dup", - "description": "Keep your important documents safe from disater", - "pkg": "deja-dup", - "extra": [] - }, - { - "name": "Grsync", - "icon": "grsync", - "description": "Synchronize files and folders", - "pkg": "grsync", - "filter": [ - "advanced" - ], - "extra": [] - }, - { - "name": "Timeshift", - "icon": "timeshift", - "description": "A system restore utility for Linux", - "pkg": "timeshift", - "extra": [] - }, - { - "name": "Backintime", - "icon": "deja-dup", - "description": "Simple backup system", - "pkg": "backintime", - "extra": [] - }, - { - "name": "Borg", - "icon": "deja-dup", - "description": "Deduplicating backup program with compression and authenticated encryption", - "pkg": "borg", - "filter": [ - "advanced" - ], - "extra": [] - } - ] - }, - { - "name": "Password Manager", - "icon": "security-high", - "description": "Password Managers", - "apps": [ - { - "name": "KeePassXC", - "icon": "keepassxc", - "description": "Cross Platform Password Manager", - "pkg": "keepassxc", - "extra": [] - }, - { - "name": "Bitwarden", - "icon": "bitwarden", - "description": "Secure and free cloud based password manager.", - "pkg": "bitwarden", - "extra": [] - }, - { - "name": "Unix Pass", - "icon": "pass", - "description": "The standard unix password manager.", - "pkg": "pass", - "filter": [ - "advanced" - ], - "extra": [] - } - ] - }, - { - "name": "System Tools", - "icon": "disk-utility", - "description": "System utilities", + "description": "Keep your important documents safe from disater", + "pkg": "deja-dup", + "extra": [] + }, + { + "name": "Grsync", + "icon": "grsync", + "description": "Synchronize files and folders", + "pkg": "grsync", "filter": [ "advanced" ], - "apps": [ - { - "name": "balenaEtcher", - "icon": "mintstick", - "description": "Flash OS images to SD cards & USB drives, safely and easily", - "pkg": "balena-etcher", - "extra": [] - }, - { - "name": "Popsicle", - "icon": "mintstick", - "description": "Linux utility for flashing multiple USB devices in parallel", - "pkg": "popsicle", - "extra": [] - }, - { - "name": "Gnome Disks", - "icon": "gnome-disks", - "description": "Disk management system for Gnome", - "pkg": "gnome-disk-utility", - "desktop": [ - "!kde" - ], - "extra": [] - }, - { - "name": "Gparted", - "icon": "gparted", - "description": "Create, reorganize, and delete partitions", - "pkg": "gparted", - "extra": [] - }, - { - "name": "Ventoy", - "icon": "mintstick", - "description": "Tool for creating multiboot isos", - "pkg": "ventoy-bin", - "extra": [] - } + "extra": [] + }, + { + "name": "Backintime", + "icon": "deja-dup", + "description": "Simple backup system", + "pkg": "backintime", + "extra": [] + }, + { + "name": "Borg", + "icon": "deja-dup", + "description": "Deduplicating backup program with compression and authenticated encryption", + "pkg": "borg", + "filter": [ + "advanced" + ], + "extra": [] + }, + { + "name": "KBackup (KDE)", + "icon": "kbackup", + "description": "Dynamic", + "pkg": "kbackup", + "extra": [] + } + ] + }, + { + "name": "Password Manager", + "icon": "security-high", + "description": "Password Managers", + "apps": [ + { + "name": "KeePassXC", + "icon": "keepassxc", + "description": "Cross Platform Password Manager", + "pkg": "keepassxc", + "extra": [] + }, + { + "name": "Bitwarden", + "icon": "bitwarden", + "description": "Secure and free cloud based password manager.", + "pkg": "bitwarden", + "extra": [] + }, + { + "name": "SeaHorse", + "icon": "seahorse", + "description": "Manage your passwords and encryption keys", + "pkg": "seahorse", + "extra": [] + }, + { + "name": "VeraCrypt", + "icon": "veracrypt", + "description": "Disk encryption with strong security based on TrueCrypt", + "pkg": "veracrypt", + "extra": [] + }, + { + "name": "Unix Pass", + "icon": "pass", + "description": "The standard unix password manager.", + "pkg": "pass", + "filter": [ + "advanced" + ], + "extra": [] + } + ] + }, + { + "name": "Disk & USB Tools", + "icon": "disk-utility", + "description": "USB & CD/DVD Tools", + "filter": [ + "advanced" + ], + "apps": [ + { + "name": "balenaEtcher", + "icon": "etcher", + "description": "Flash OS images to SD cards & USB drives, safely and easily", + "pkg": "etcher-bin", + "extra": [] + }, + { + "name": "Popsicle", + "icon": "mintstick", + "description": "Linux utility for flashing multiple USB devices in parallel", + "pkg": "popsicle", + "extra": [] + }, + { + "name": "Gnome Disks", + "icon": "gnome-disks", + "description": "Disk management system for Gnome", + "pkg": "gnome-disk-utility", + "desktop": [ + "!kde" + ], + "extra": [] + }, + { + "name": "Gparted", + "icon": "gparted", + "description": "Create, reorganize, and delete partitions", + "pkg": "gparted", + "extra": [] + }, + { + "name": "Ventoy", + "icon": "liveusb-creator", + "description": "Tool for creating multiboot isos", + "pkg": "ventoy-bin", + "extra": [] + }, + { + "name": "IsoUSB", + "icon": "usb-creator", + "description": "A graphical tool to copy a hybrid ISO onto a USB key.", + "pkg": "isousb", + "extra": [] + }, + { + "name": "Mintstick", + "icon": "mintstick", + "description": "Format or wirte imges to usb sticks (Linux Mint tool).", + "pkg": "mintstick", + "extra": [] + }, + { + "name": "Brasero", + "icon": "brasero", + "description": "Dynamic", + "pkg": "brasero", + "extra": [] + }, + { + "name": "Baobab", + "icon": "baobab", + "description": "Dynamic", + "pkg": "baobab", + "extra": [] + }, + { + "name": "WoeUSB", + "icon": "woeusbgui-icon", + "description": "Dynamic", + "pkg": "woeusb-ng", + "extra": [] + } + ] + }, + { + "name": "Virtual Computing", + "icon": "virt-manager", + "description": "Virtual Machine applications", + "filter": [ + "advanced" + ], + "apps": [ + { + "name": "VirtualBox", + "icon": "virtualbox", + "description": "Run several virtual systems on a single host computer", + "pkg": "virtualbox", + "extra": [ + "virtualbox-guest-iso" ] - }, - { - "name": "Virtual Computing", + }, + { + "name": "Gnome Boxes", + "icon": "gnome-boxes", + "description": "Simple remote and virtual machines", + "pkg": "gnome-boxes", + "extra": [] + }, + { + "name": "Virt-manager", "icon": "virt-manager", - "description": "Virtual Machine applications", - "filter": [ - "advanced" - ], - "apps": [ - { - "name": "VirtualBox", - "icon": "virtualbox", - "description": "Run several virtual systems on a single host computer", - "pkg": "virtualbox", - "extra": [ - "virtualbox-guest-iso" - ] - }, - { - "name": "Gnome Boxes", - "icon": "gnome-boxes", - "description": "Simple remote and virtual machines", - "pkg": "gnome-boxes", - "extra": [] - }, - { - "name": "Virt-manager", - "icon": "virt-manager", - "description": "Desktop user interface for managing virtual machines", - "pkg": "virt-manager", - "extra": [] - } - ] - } + "description": "Desktop user interface for managing virtual machines", + "pkg": "virt-manager", + "extra": [] + } + ] + }, + { + "name": "Android Tools", + "icon": "anbox", + "description": "Various tools for Android", + "apps": [ + { + "name": "Android Tools", + "icon": "usbimager", + "description": "Dynamic.", + "pkg": "android-tools", + "extra": [] + }, + { + "name": "Android File Transfer", + "icon": "android-file-transfer", + "description": "Dynamic", + "pkg": "android-file-transfer", + "extra": [] + }, + { + "name": "Airdroid", + "icon": "android-package-archive", + "description": "Dynamic", + "pkg": "airdroid-nativefier", + "extra": [] + }, + { + "name": "Android SDK Tools", + "icon": "androidstudio", + "description": "Dynamic", + "pkg": "android-sdk-platform-tools", + "extra": [] + }, + { + "name": "Droid Cam", + "icon": "androidstudio", + "description": "Dynamic", + "pkg": "droidcam", + "extra": [] + }, + { + "name": "QT-SCRCPY", + "icon": "camera-web", + "description": "Dynamic", + "pkg": "qtscrcpy", + "extra": ["scrcpy"] + }, + { + "name": "Universal Android Debloater", + "icon": "androidstudio", + "description": "Dynamic", + "pkg": "universal-android-debloater-bin", + "extra": [] + } + ] + }, + { + "name": "Benchmarking", + "icon": "sysprof-calgraph", + "description": "Benchmarking Tools", + "apps": [ + { + "name": "Blender Benchmark", + "icon": "blender", + "description": "Dynamic", + "pkg": "blender-benchmark", + "extra": [] + }, + { + "name": "GPU Test", + "icon": "indicator-sensors-gpu", + "description": "Dynamic", + "pkg": "gputest", + "extra": [] + }, + { + "name": "Phoronix Test Suite", + "icon": "blackmagicraw-speedtest", + "description": "Dynamic", + "pkg": "phoronix-test-suite", + "extra": [] + } + ] + }, + { + "name": "ChatGPT / OpenAI Tools", + "icon": "terminal", + "description": "Various tools for ChatGPT", + "apps": [ + { + "name": "Chatbox", + "icon": "codeblocks", + "description": "Dynamic", + "pkg": "chatbox-bin", + "extra": [] + }, + { + "name": "ChatGPT Desktop", + "icon": "terminal", + "description": "Dynamic", + "pkg": "chatgpt-desktop-bin", + "extra": [] + }, + { + "name": "ShellGPT", + "icon": "terminal", + "description": "Dynamic", + "pkg": "shell-gpt", + "extra": [] + } + ] + }, + { + "name": "Development Tools", + "icon": "text-editor", + "description": "Various editors for text or code", + "apps": [ + { + "name": "Gammaray", + "icon": "codeblocks", + "description": "Dynamic", + "pkg": "gammaray", + "extra": [] + }, + { + "name": "Guvcview", + "icon": "guvcview", + "description": "Dynamic", + "pkg": "guvcview-qt", + "extra": [] + }, + { + "name": "Hugo", + "icon": "webide", + "description": "Dynamic", + "pkg": "hugo", + "extra": [] + }, + { + "name": "Sublime Text", + "icon": "sublime", + "description": "Dynamic", + "pkg": "sublime-text-4", + "extra": [] + }, + { + "name": "Vim Incl Addons", + "icon": "vim", + "description": "Dynamic", + "pkg": "vim", + "extra": ["neovim-qt","vim-runtime"] + } + ] + }, + { + "name": "Gaming Tools", + "icon": "applications-games", + "description": "Various Game Launchers", + "apps": [ + { + "name": "Gamemode", + "icon": "offgame", + "description": "Dynamic", + "pkg": "gamemode", + "extra": [] + }, + { + "name": "Goverlay", + "icon": "goverlay", + "description": "Dynamic", + "pkg": "goverlay", + "extra": [] + }, + { + "name": "Mangohud", + "icon": "help-info", + "description": "Dynamic", + "pkg": "mangohud", + "extra": ["gamescope"] + }, + { + "name": "Steam Linux", + "icon": "steam", + "description": "Dynamic", + "pkg": "steam", + "extra": [] + }, + { + "name": "T-Launcher", + "icon": "tlauncher", + "description": "Dynamic", + "pkg": "tlauncher", + "extra": [] + } + ] + }, + { + "name": "Power Management", + "icon": "cpu", + "description": "Control Laptop Power Usage", + "apps": [ + { + "name": "Auto CPU Freq", + "icon": "cpuinfo", + "description": "Dynamic", + "pkg": "auto-cpufreq", + "extra": [] + }, + { + "name": "CPU Power", + "icon": "cpu", + "description": "Dynamic", + "pkg": "cpupower", + "extra": [] + }, + { + "name": "System76 Power", + "icon": "system76-driver", + "description": "Dynamic", + "pkg": "system76-power", + "extra": [] + }, + { + "name": "TLP", + "icon": "battery", + "description": "Dynamic", + "pkg": "tlp", + "extra": [] + } + ] + }, + { + "name": "Remote Desktop", + "icon": "remote-desktop", + "description": "Remote Desktop Tools", + "apps": [ + { + "name": "AnyDesk", + "icon": "barrier", + "description": "Dynamic", + "pkg": "anydesk-bin", + "extra": [] + }, + { + "name": "Barrier", + "icon": "barrier", + "description": "Dynamic", + "pkg": "barrier", + "extra": [] + }, + { + "name": "No Machine", + "icon": "remmina", + "description": "Dynamic", + "pkg": "nomachine", + "extra": [] + }, + { + "name": "RealVNC Server", + "icon": "remote-desktop", + "description": "Dynamic", + "pkg": "realvnc-vnc-server", + "extra": ["realvnc-vnc-viewer"] + }, + { + "name": "TeamViewer", + "icon": "teamviewer", + "description": "Dynamic", + "pkg": "teamviewer", + "extra": [] + } + ] + }, + { + "name": "Ricing", + "icon": "theme-config", + "description": "Tools That Will Help With Ricing", + "apps": [ + { + "name": "KonSave", + "icon": "terminal", + "description": "Dynamic", + "pkg": "konsave", + "extra": [] + }, + { + "name": "Variety", + "icon": "wallpaper", + "description": "Dynamic", + "pkg": "variety", + "extra": [] + }, + { + "name": "Wallpaper Engine Plugin", + "icon": "desktop", + "description": "Dynamic", + "pkg": "wallpaper-engine-plasma", + "extra": [] + }, + { + "name": "XScreensaver", + "icon": "screensaver", + "description": "Dynamic", + "pkg": "xscreensaver", + "extra": [] + } + ] + }, + { + "name": "System Utilities", + "icon": "applications-system", + "description": "Various System Utilities", + "apps": [ + { + "name": "Albert", + "icon": "search", + "description": "Dynamic", + "pkg": "albert", + "extra": [] + }, + { + "name": "Caffeine", + "icon": "caffeine", + "description": "Dynamic", + "pkg": "caffeine-ng", + "extra": [] + }, + { + "name": "Core Control", + "icon": "system-error", + "description": "Dynamic", + "pkg": "corectrl", + "extra": [] + }, + { + "name": "Corsair Drivers", + "icon": "system-error", + "description": "Dynamic", + "pkg": "ckb-next", + "extra": [] + }, + { + "name": "CPU-X", + "icon": "cpu-x", + "description": "Dynamic", + "pkg": "cpu-x", + "extra": [] + }, + { + "name": "Deck Master", + "icon": "dnfdragora", + "description": "Dynamic", + "pkg": "deckmaster-bin", + "extra": [] + }, + { + "name": "Docker", + "icon": "dnfdragora", + "description": "Dynamic", + "pkg": "docker", + "extra": ["docker-buildx","docker-compose","docker-machine","python-docker"] + }, + { + "name": "Fan Control GUI", + "icon": "control-center2", + "description": "Dynamic", + "pkg": "fancontrol-gui", + "extra": [] + }, + { + "name": "Mouse Tweaks", + "icon": "mouse", + "description": "Dynamic", + "pkg": "mousetweaks", + "extra": [] + }, + { + "name": "Notebook Fan Control", + "icon": "terminal", + "description": "Dynamic", + "pkg": "nbfc", + "extra": [] + }, + { + "name": "Open Razer", + "icon": "mouse", + "description": "Dynamic", + "pkg": "openrazer-driver-dkms", + "extra": ["openrazer-daemon"] + }, + { + "name": "Plymouth Animated Boot", + "icon": "kde", + "description": "Dynamic", + "pkg": "plymouth", + "extra": ["plymouth-kcm"] + }, + { + "name": "PuTTY", + "icon": "putty", + "description": "Dynamic", + "pkg": "putty", + "extra": [] + }, + { + "name": "Radeon Control", + "icon": "red_glasses", + "description": "Dynamic", + "pkg": "radeontool", + "extra": [] + }, + { + "name": "Solaar (Logitech)", + "icon": "mouse", + "description": "Dynamic", + "pkg": "solaar", + "extra": [] + }, + { + "name": "Wacom Tablet Support", + "icon": "terminal", + "description": "Dynamic", + "pkg": "kcm-wacomtablet", + "extra": ["switchboard-plug-wacom","libwacom","xf86-input-wacom"] + }, + { + "name": "WiNE", + "icon": "wine", + "description": "Dynamic", + "pkg": "wine-meta", + "extra": [] + } + ] + }, + { + "name": "Terminals / Prompts / Shells", + "icon": "terminix", + "description": "Extra Terminal Emulators", + "apps": [ + { + "name": "Alacritty", + "icon": "alacritty", + "description": "Dynamic", + "pkg": "alacritty", + "extra": ["alacritty-themes"] + }, + { + "name": "Cool Retro Term", + "icon": "terminal", + "description": "Dynamic.", + "pkg": "cool-retro-term", + "extra": [] + }, + { + "name": "Fish Shell", + "icon": "terminal", + "description": "Dynamic.", + "pkg": "fish", + "extra": [] + }, + { + "name": "GNOME Terminal", + "icon": "terminal", + "description": "GNOME Terminal With Transparency.", + "pkg": "gnome-terminal-transparency", + "extra": [] + }, + { + "name": "Starship Prompt", + "icon": "terminal", + "description": "Dynamic", + "pkg": "starship", + "extra": [] + }, + { + "name": "Tabby Tabbed Terminal", + "icon": "terminal", + "description": "Dynamic", + "pkg": "tabby-bin", + "extra": [] + }, + { + "name": "Tilix", + "icon": "terminal", + "description": "Dynamic", + "pkg": "tilix", + "extra": [] + } + ] + }, + { + "name": "Terminal Utilities", + "icon": "terminix", + "description": "Tools that run in Terminal", + "apps": [ + { + "name": "Bash Pipes", + "icon": "bash", + "description": "Dynamic", + "pkg": "bash-pipes", + "extra": [] + }, + { + "name": "Btop", + "icon": "btop", + "description": "Dynamic", + "pkg": "btop", + "extra": [] + }, + { + "name": "Cava", + "icon": "music", + "description": "Dynamic", + "pkg": "cava", + "extra": [] + }, + { + "name": "CPU Fetch", + "icon": "cpuinfo", + "description": "Dynamic", + "pkg": "cpufetch", + "extra": [] + }, + { + "name": "CPU-ID", + "icon": "cpuinfo", + "description": "Dynamic", + "pkg": "cpuid", + "extra": [] + }, + { + "name": "FM-6000", + "icon": "termius", + "description": "Dynamic", + "pkg": "fm6000", + "extra": [] + }, + { + "name": "Gotop", + "icon": "btop", + "description": "Dynamic", + "pkg": "gotop", + "extra": [] + }, + { + "name": "Neo Matrix", + "icon": "maui-station", + "description": "Dynamic", + "pkg": "neo-matrix", + "extra": ["cmatrix"] + }, + { + "name": "nVtop", + "icon": "nvclock", + "description": "Dynamic", + "pkg": "nvtop", + "extra": [] + }, + { + "name": "TTY Clock", + "icon": "clock", + "description": "Dynamic", + "pkg": "tty-clock-git", + "extra": [] + }, + { + "name": "WTTR (Terminal Weather)", + "icon": "weather", + "description": "Dynamic", + "pkg": "wttr", + "extra": [] + } + ] + }, + { + "name": "Video Tools", + "icon": "video", + "description": "Various Video Tools", + "apps": [ + { + "name": "Baka Media Player", + "icon": "mplayer", + "description": "Dynamic", + "pkg": "baka-mplayer", + "extra": [] + }, + { + "name": "DeckLink", + "icon": "video", + "description": "Dynamic", + "pkg": "decklink", + "extra": ["mediaexpress"] + }, + { + "name": "Hypnotix", + "icon": "video", + "description": "Dynamic", + "pkg": "hypnotix", + "extra": [] + }, + { + "name": "Jellyfin Complete", + "icon": "mediacontrol", + "description": "Dynamic", + "pkg": "jellyfin-server", + "extra": ["jellyfin-web","jellyfin-ffmpeg","mopidy-jellyfin"] + }, + { + "name": "Media Downloader", + "icon": "youtube", + "description": "Dynamic", + "pkg": "media-downloader", + "extra": ["yt-dlp","aria2","aria2cd"] + }, + { + "name": "Mystiq", + "icon": "mystiq", + "description": "Dynamic", + "pkg": "mystiq", + "extra": [] + }, + { + "name": "Plex Media Server", + "icon": "pnmixer", + "description": "Dynamic", + "pkg": "plex-media-server", + "extra": ["plex-media-player"] + }, + { + "name": "Simple Screen Recorder", + "icon": "video", + "description": "Dynamic", + "pkg": "simplescreenrecorder", + "extra": ["lib32-simplescreenrecorder"] + }, + { + "name": "Twitch DL", + "icon": "tvtime", + "description": "Dynamic", + "pkg": "twitch-dl-bin", + "extra": [] + } + ] + } ] diff --git a/data/application_utility/flatpak.json b/data/application_utility/flatpak.json new file mode 100644 index 0000000..4d094d6 --- /dev/null +++ b/data/application_utility/flatpak.json @@ -0,0 +1,1423 @@ +[ + { + "name": "Android Tools", + "icon": "applications-development", + "description": "Android Development", + "apps": [ + { + "name": "Android Studio", + "icon": "android-studio", + "description": "Integrated development environment", + "pkg": "com.google.AndroidStudio", + "extra": [] + }, + { + "name": "GUI Scrcpy", + "icon": "securecrt", + "description": "Android Screen Mirroring Software", + "pkg": "in.srev.guiscrcpy", + "extra": [] + } + ] + }, + { + "name": "Audio", + "icon": "music_icon-24", + "description": "Audio Players, Recorders", + "apps": [ + { + "name": "Amberol", + "icon": "audio-player", + "description": "Plays music, and nothing else", + "pkg": "io.bassi.Amberol", + "extra": [] + }, + { + "name": "Ardour", + "icon": "ardour", + "description": "Digital Audio Workstation", + "pkg": "org.ardour.Ardour", + "extra": [] + }, + { + "name": "Audacious", + "icon": "audacious", + "description": "Lightweight audio player", + "pkg": "org.atheme.audacious", + "extra": [] + }, + { + "name": "Audacity", + "icon": "audacity", + "description": "Record and edit audio files", + "pkg": "org.audacityteam.Audacity", + "extra": ["org.audacityteam.Audacity.Codecs"] + }, + { + "name": "Ciano", + "icon": "audio-player", + "description": "A multimedia file converter", + "pkg": "com.github.robertsanseries.ciano", + "extra": [] + }, + { + "name": "Cider", + "icon": "cider", + "description": "An open source and community oriented Apple Music client", + "pkg": "sh.cider.Cider", + "extra": [] + }, + { + "name": "EasyTAG", + "icon": "easytag", + "description": "Edit audio file metadata", + "pkg": "org.gnome.EasyTAG", + "extra": [] + }, + { + "name": "Elisa", + "icon": "audio-player", + "description": "Beautiful no-nonsense music player with online radio support", + "pkg": "org.kde.elisa", + "extra": [] + }, + { + "name": "G-Music Browser", + "icon": "music", + "description": "Jukebox for large collection of music", + "pkg": "org.gmusicbrowser.gmusicbrowser", + "extra": [] + }, + { + "name": "LMMS", + "icon": "lmms", + "description": "A music production application", + "pkg": "io.lmms.LMMS", + "extra": [] + }, + { + "name": "MusicBrainz Picard", + "icon": "com.github.geigi.cozy", + "description": "MusicBrainz's music tagger", + "pkg": "org.musicbrainz.Picard", + "extra": [] + }, + { + "name": "SoundConverter", + "icon": "audacious", + "description": "Convert audio files", + "pkg": "org.soundconverter.SoundConverter", + "extra": [] + }, + { + "name": "Spotify", + "icon": "spotify-client", + "description": "Online music streaming service", + "pkg": "com.spotify.Client", + "extra": [] + }, + { + "name": "Rhythmbox", + "icon": "audio-player", + "description": "Play and organize your music collection", + "pkg": "org.gnome.Rhythmbox3", + "extra": [] + }, + { + "name": "Shortwave", + "icon": "audio-player", + "description": "Listen to internet radio", + "pkg": "de.haeckerfelix.Shortwave", + "extra": [] + }, + { + "name": "Soundux", + "icon": "sound", + "description": "A cross-platform soundboard", + "pkg": "io.github.Soundux", + "extra": [] + }, + { + "name": "Tagger", + "icon": "easytag", + "description": "An easy-to-use music tag (metadata) editor", + "pkg": "org.nickvision.tagger", + "extra": [] + }, + { + "name": "Tauon Music Box", + "icon": "audio-player", + "description": "Play your music with style", + "pkg": "com.github.taiko2k.tauonmb", + "extra": [] + } + ] + }, + { + "name": "Browsers", + "icon": "browser", + "description": "Web browsing", + "apps": [ + { + "name": "Brave", + "icon": "brave", + "description": "A web browser that stops ads and trackers by default.", + "pkg": "com.brave.Browser", + "extra": [] + }, + { + "name": "Chromium", + "icon": "chromium", + "description": "Fast and popular open source browser", + "pkg": "org.chromium.Chromium", + "extra": [] + }, + { + "name": "LibreWolf", + "icon": "librewolf", + "description": "LibreWolf Web Browser", + "pkg": "io.gitlab.librewolf-community", + "extra": [] + }, + { + "name": "Microsoft Edge", + "icon": "microsoft-edge", + "description": "Microsoft Browser", + "pkg": "com.microsoft.Edge", + "extra": [] + }, + { + "name": "Mullvad Browser", + "icon": "firefox", + "description": "Tor Based Browser", + "pkg": "net.mullvad.MullvadBrowser", + "extra": [] + }, + { + "name": "Tor Browser Launcher", + "icon": "tor-browser", + "description": "The Tor Browser Bundle", + "pkg": "com.github.micahflee.torbrowser-launcher", + "extra": [] + }, + { + "name": "Ungoogled Chromium", + "icon": "chromium", + "description": "A lightweight approach to removing Google web service dependency", + "pkg": "com.github.Eloston.UngoogledChromium", + "extra": [] + }, + { + "name": "Waterfox G5", + "icon": "chromium", + "description": "A lightweight, free and open source web browser built for the modern web.", + "pkg": "net.waterfox.waterfox", + "extra": [] + } + ] + }, + { + "name": "Downloaders / Cloud", + "icon": "webbrowser-app", + "description": "Download Managers / Cloud Storage", + "apps": [ + { + "name": "Dropbox", + "icon": "dropbox", + "description": "Access your files from any computer", + "pkg": "com.dropbox.Client", + "extra": [] + }, + { + "name": "Filezilla", + "icon": "filezilla", + "description": "Graphical FTP/FTPS/SFTP browser", + "pkg": "org.filezillaproject.Filezilla", + "extra": [] + }, + { + "name": "JDownloader", + "icon": "jdownloader", + "description": "Download management tool", + "pkg": "org.jdownloader.JDownloader", + "extra": [] + }, + { + "name": "MEGAsync", + "icon": "megasynching", + "description": "Easy automated syncing between your computers and your MEGA Cloud Drive.", + "pkg": "nz.mega.MEGAsync", + "extra": [] + }, + { + "name": "qBittorrent", + "icon": "qbittorrent", + "description": "An open-source Bittorrent client", + "pkg": "org.qbittorrent.qBittorrent", + "extra": [] + }, + { + "name": "Motrix", + "icon": "motrix", + "description": "A full-featured download manager", + "pkg": "net.agalwood.Motrix", + "extra": [] + }, + { + "name": "FreeTube", + "icon": "freetube", + "description": "An Open Source YouTube app for privacy", + "pkg": "io.freetubeapp.FreeTube", + "extra": [] + }, + { + "name": "VGrive", + "icon": "google-drive", + "description": "Google Drive client", + "pkg": "com.github.bcedu.vgrive", + "extra": [] + } + ] + }, + { + "name": "Dev Studio Tools", + "icon": "applications-development", + "description": "Development Studios", + "apps": [ + { + "name": "BlackFennec", + "icon": "git", + "description": "Extensible Semi-structured Data Editing Environment", + "pkg": "org.blackfennec.app", + "extra": [] + }, + { + "name": "GitFiend", + "icon": "git", + "description": "A Git client designed for humans", + "pkg": "com.gitfiend.GitFiend", + "extra": [] + }, + { + "name": "Gittyup", + "icon": "git", + "description": "Understand your Git history!", + "pkg": "com.github.Murmele.Gittyup", + "extra": [] + }, + { + "name": "Github Desktop", + "icon": "github-desktop", + "description": "Simple collaboration from your desktop", + "pkg": "io.github.shiftey.Desktop", + "extra": [] + }, + { + "name": "Git-G", + "icon": "git", + "description": "Graphical user interface for git", + "pkg": "org.gnome.gitg", + "extra": [] + }, + { + "name": "GitKraken", + "icon": "GitKraken", + "description": "For repo management, in-app code editing & issue tracking.", + "pkg": "md.obsidian.Obsidian", + "extra": [] + }, + { + "name": "Glade", + "icon": "GitKraken", + "description": "Create or open user interface designs for GTK+ applications.", + "pkg": "org.gnome.Glade", + "extra": [] + }, + { + "name": "Godot", + "icon": "godot", + "description": "Godot game engine editor", + "pkg": "org.godotengine.Godot", + "extra": [] + }, + { + "name": "Ghostwriter", + "icon": "ghostwriter", + "description": "Distraction-free text editor for Markdown", + "pkg": "io.github.wereturtle.ghostwriter", + "extra": [] + }, + { + "name": "KDevelop", + "icon": "kdevelop", + "description": "Featureful, plugin-extensible IDE", + "pkg": "org.kde.kdevelop", + "extra": [] + }, + { + "name": "NetBeans", + "icon": "notepad", + "description": "An Apache Java IDE. Fits the Pieces Together", + "pkg": "org.apache.netbeans", + "extra": [] + }, + { + "name": "Notepadqq", + "icon": "notepad", + "description": "An advanced text editor", + "pkg": "com.notepadqq.Notepadqq", + "extra": [] + }, + { + "name": "Obsidian", + "icon": "obsidian", + "description": "Markdown-based knowledge base.", + "pkg": "com.visualstudio.code-oss", + "extra": [] + }, + { + "name": "Visual Studio Code OSS", + "icon": "visual-studio-code", + "description": "Microsoft Code Editor", + "pkg": "com.visualstudio.code-oss", + "extra": [] + }, + { + "name": "Visual Studio Code", + "icon": "visual-studio-code", + "description": "Visual Studio Code. Code editing. Redefined.", + "pkg": "com.visualstudio.code", + "extra": [] + }, + { + "name": "VSCodium", + "icon": "code", + "description": "VSCodium. Code editing. Redefined.", + "pkg": "com.vscodium.codium", + "extra": [] + } + ] + }, + { + "name": "Disk & USB Tools", + "icon": "usbimager", + "description": "System utilities", + "apps": [ + { + "name": "Disk Usage Analyzer", + "icon": "baobab", + "description": "Check folder sizes and available disk space", + "pkg": "org.gnome.baobab", + "extra": [] + }, + { + "name": "Impression", + "icon": "baobab", + "description": "Create bootable drives", + "pkg": "io.gitlab.adhami3310.Impression", + "extra": [] + }, + { + "name": "Popsicle", + "icon": "mintstick", + "description": "Linux utility for flashing multiple USB devices in parallel", + "pkg": "com.system76.Popsicle", + "extra": [] + }, + { + "name": "PowerISO", + "icon": "iso-image-burn", + "description": "A all-in-one CD/DVD/Blu-Ray tool", + "pkg": "com.poweriso.PowerISO", + "extra": [] + }, + { + "name": "Raspberry Pi Imager", + "icon": "rpi-imager", + "description": "Raspberry Pi imaging utility", + "pkg": "org.raspberrypi.rpi-imager", + "extra": [] + }, + { + "name": "Synology Drive", + "icon": "synfig_icon", + "description": "Powerful private cloud storage with no recurring fees", + "pkg": "com.synology.SynologyDrive", + "extra": [] + } + ] + }, + { + "name": "Email", + "icon": "email", + "description": "E-mail Clients", + "apps": [ + { + "name": "Evolution", + "icon": "evolution", + "description": "Manage your email, contacts and schedule", + "pkg": "org.gnome.Evolution", + "extra": [] + }, + { + "name": "Geary", + "icon": "geary", + "description": "Send and receive mail", + "pkg": "org.gnome.Geary", + "extra": [] + }, + { + "name": "Mailspring", + "icon": "mailspring", + "description": "The best email app for people and teams at work", + "pkg": "com.getmailspring.Mailspring", + "extra": [] + }, + { + "name": "Thunderbird", + "icon": "thunderbird", + "description": "Send and receive mail, contacts and schedule", + "pkg": "org.mozilla.Thunderbird", + "extra": [] + } + ] + }, + { + "name": "Games (FOSS)", + "icon": "applications-games", + "description": "Free Open Source Games", + "apps": [ + { + "name": "0 A.D.", + "icon": "0ad", + "description": "Real-Time Strategy Game of Ancient Warfare", + "pkg": "com.play0ad.zeroad", + "extra": [] + }, + { + "name": "Abuse", + "icon": "artscontrol", + "description": "Dark 2D side-scrolling platform game", + "pkg": "com.github.Xenoveritas.abuse", + "extra": [] + }, + { + "name": "Alien Arena", + "icon": "artscontrol", + "description": "Ultra fast paced arena FPS", + "pkg": "org.alienarena.alienarena", + "extra": [] + }, + { + "name": "AstroMenace", + "icon": "artscontrol", + "description": "Hardcore 3D space scroll-shooter with spaceship upgrade possibilities", + "pkg": "com.viewizard.AstroMenace", + "extra": [] + }, + { + "name": "Battle for Wesnoth", + "icon": "applications-games", + "description": "A turn-based strategy game with a high fantasy theme.", + "pkg": "org.wesnoth.Wesnoth", + "extra": [] + }, + { + "name": "Chromium B.S.U.", + "icon": "bomber", + "description": "Fast paced, arcade-style, top-scrolling space shooter", + "pkg": "net.sourceforge.chromium-bsu", + "extra": [] + }, + { + "name": "Endless Sky.", + "icon": "bomber", + "description": "Space exploration and combat game", + "pkg": "io.github.endless_sky.endless_sky", + "extra": [] + }, + { + "name": "Naev.", + "icon": "bomber", + "description": "2D action/rpg space trading combat game", + "pkg": "org.naev.Naev", + "extra": [] + }, + { + "name": "OpenRA", + "icon": "redshift", + "description": "Reimagining of early Westwood real-time strategy games", + "pkg": "net.openra.OpenRA", + "extra": [] + }, + { + "name": "Red Eclipse", + "icon": "redshift", + "description": "First-person shooter with agile gameplay.", + "pkg": "net.redeclipse.RedEclipse", + "extra": [] + }, + { + "name": "Space Cadet Pinball", + "icon": "net.pcsx2.PCSX2", + "description": "Reverse engineering of 3D Pinball", + "pkg": "com.github.k4zmu2a.spacecadetpinball", + "extra": [] + }, + { + "name": "SuperTux", + "icon": "supertux", + "description": "A jump-and-run game starring Tux the Penguin", + "pkg": "org.supertuxproject.SuperTux", + "extra": [] + }, + { + "name": "SuperTux Cart", + "icon": "supertux", + "description": "A 3D open-source kart racing game starring Tux the Penguin", + "pkg": "net.supertuxkart.SuperTuxKart", + "extra": [] + }, + { + "name": "Tesseract", + "icon": "xonotic", + "description": "First-person shooter with cooperative in-game map editing", + "pkg": "gg.tesseract.Tesseract", + "extra": [] + }, + { + "name": "Unreal Tournament 2004", + "icon": "xonotic", + "description": "First-person shooter", + "pkg": "com.epicgames.ut2004", + "extra": [] + }, + { + "name": "Who Wants To Be a Millionaire", + "icon": "net.pcsx2.PCSX2", + "description": "Answer all questions to win $1 million.", + "pkg": "lv.martinsz.millionaire", + "extra": [] + }, + { + "name": "Wolfenstein: Blade of Agony", + "icon": "doom", + "description": "Story-driven FPS inspired by WWII shooters from the 90's and early 2000's", + "pkg": "com.realm667.Wolfenstein_Blade_of_Agony", + "extra": [] + }, + { + "name": "Xonotic", + "icon": "xonotic", + "description": "Multiplayer, deathmatch oriented first person shooter", + "pkg": "org.xonotic.Xonotic", + "extra": [] + } + ] + }, + { + "name": "Game Launchers", + "icon": "applications-games", + "description": "Gaming Tools", + "apps": [ + { + "name": "Bottles", + "icon": "com.usebottles.bottles", + "description": "Run Windows software", + "pkg": "com.usebottles.bottles", + "extra": [] + }, + { + "name": "GeForce NOW Electron", + "icon": "nvclock", + "description": "Unofficial GeForce NOW application written in Electron", + "pkg": "io.github.hmlendea.geforcenow-electron", + "extra": [] + }, + { + "name": "Heroic Games Launcher", + "icon": "heroic", + "description": "An Open Source GOG and Epic Games Launcher.", + "pkg": "com.heroicgameslauncher.hgl", + "extra": [] + }, + { + "name": "Lutris", + "icon": "lutris", + "description": "Video game preservation platform", + "pkg": "net.lutris.Lutris", + "extra": [] + }, + { + "name": "Moonlight", + "icon": "steam", + "description": "Play games remotely from your NVIDIA GameStream-enabled PC", + "pkg": "com.moonlight_stream.Moonlight", + "extra": [] + }, + { + "name": "ProtonUp-Qt", + "icon": "update", + "description": "Install Wine- and Proton-based compatibility tools", + "pkg": "net.davidotek.pupgui2", + "extra": [] + } + ] + }, + { + "name": "Graphics Tools", + "icon": "applications-graphics", + "description": "Creating and editing graphics", + "apps": [ + { + "name": "Blender", + "icon": "blender", + "description": "3D modeling and animation", + "pkg": "org.blender.Blender", + "extra": [] + }, + { + "name": "Darktable", + "icon": "darktable", + "description": "Organize and develop images from digital cameras", + "pkg": "org.darktable.Darktable", + "extra": [] + }, + { + "name": "DigiKam", + "icon": "digikam", + "description": "Photo Management Program", + "pkg": "org.kde.digikam", + "extra": [] + }, + { + "name": "GIMP", + "icon": "gimp", + "description": "Create images and edit photographs", + "pkg": "org.gimp.GIMP", + "extra": [] + }, + { + "name": "Krita", + "icon": "krita", + "description": "Digital Painting Creative Freedom", + "pkg": "org.kde.krita", + "extra": [] + }, + { + "name": "Upscaler", + "icon": "krita", + "description": "Upscale and enhance images", + "pkg": "io.gitlab.theevilskeleton.Upscaler", + "extra": [] + } + ] + }, + { + "name": "Internet Social", + "icon": "messagebox_info", + "description": "Chat Clients", + "apps": [ + { + "name": "ArmCord", + "icon": "discord", + "description": "ArmCord is a custom client designed to enhance your Discord experience", + "pkg": "xyz.armcord.ArmCord", + "extra": [] + }, + { + "name": "Caprine", + "icon": "caprine", + "description": "Elegant Facebook Messenger desktop app", + "pkg": "com.sindresorhus.Caprine", + "extra": [] + }, + { + "name": "Cawbird", + "icon": "cawbird", + "description": "Twitter Client", + "pkg": "uk.co.ibboard.cawbird", + "extra": [] + }, + { + "name": "Discord", + "icon": "discord", + "description": "Messaging, Voice, and Video Client", + "pkg": "com.discordapp.Discord", + "extra": [] + }, + { + "name": "Element", + "icon": "element-desktop", + "description": "Glossy Matrix collaboration client - desktop version", + "pkg": "im.riot.Riot", + "extra": [] + }, + { + "name": "Ferdium", + "icon": "ferdium", + "description": "Messenger for the desktop", + "pkg": "org.ferdium.Ferdium", + "extra": [] + }, + { + "name": "Fractal", + "icon": "fractal", + "description": "Matrix group messaging app", + "pkg": "org.gnome.Fractal", + "extra": [] + }, + { + "name": "Jitsi", + "icon": "com.deepin.Picker", + "description": "Secure, Simple and Scalable Video Conferences", + "pkg": "org.jitsi.jitsi-meet", + "extra": [] + }, + { + "name": "Mattermost", + "icon": "messengerfordesktop", + "description": "An open source platform for developer collaboration.", + "pkg": "com.mattermost.Desktop", + "extra": [] + }, + { + "name": "Mumble", + "icon": "messengerfordesktop", + "description": "Low latency encrypted VoIP client", + "pkg": "info.mumble.Mumble", + "extra": [] + }, + { + "name": "Session Desktop", + "icon": "caprine", + "description": "Encrypted Private messenger", + "pkg": "network.loki.Session", + "extra": [] + }, + { + "name": "Signal Desktop", + "icon": "signal-desktop", + "description": "Private messenger", + "pkg": "org.signal.Signal", + "extra": [] + }, + { + "name": "Slack", + "icon": "slack", + "description": "Chat with your team", + "pkg": "com.slack.Slack", + "extra": [] + }, + { + "name": "Teams For Linux", + "icon": "teams", + "description": "Unofficial Teams client for Linux", + "pkg": "com.github.IsmaelMartinez.teams_for_linux", + "extra": [] + }, + { + "name": "Telegram", + "icon": "telegram", + "description": "Official Telegram Desktop client", + "pkg": "org.telegram.desktop", + "extra": [] + }, + { + "name": "Tokodon", + "icon": "mastodon", + "description": "A Mastodon client", + "pkg": "org.kde.tokodon", + "extra": [] + }, + { + "name": "WebCord", + "icon": "discord", + "description": "A Discord and Fosscord client in electron", + "pkg": "io.github.spacingbat3.webcord", + "extra": [] + }, + { + "name": "WhatsApp Desktop", + "icon": "whatsapp", + "description": "Unofficial WhatsApp Web Desktop client.", + "pkg": "io.github.mimbrero.WhatsAppDesktop", + "extra": [] + }, + { + "name": "Zoom", + "icon": "zoom-desktop", + "description": "Video Conferencing, Web Conferencing, Webinars, Screen Sharing", + "pkg": "us.zoom.Zoom", + "extra": [] + } + ] + }, + { + "name": "Minecraft Tools", + "icon": "applications-games", + "description": "Launchers", + "apps": [ + { + "name": "Minecraft (Official)", + "icon": "minecraft", + "description": "Create your own world in one of the most popular video games", + "pkg": "com.mojang.Minecraft", + "extra": [] + }, + { + "name": "ATLauncher", + "icon": "minecraft", + "description": "A launcher which integrates multiple different modpacks.", + "pkg": "com.atlauncher.ATLauncher", + "extra": [] + }, + { + "name": "Bedrock Launcher", + "icon": "minecraft", + "description": "Download and play Minecraft Bedrock Edition on GNU/Linux", + "pkg": "io.mrarm.mcpelauncher", + "extra": [] + }, + { + "name": "GD Launcher", + "icon": "minecraft", + "description": "This is an unofficial package. Issues with it should not be reported to GDLauncher upstream!", + "pkg": "io.gdevs.GDLauncher", + "extra": [] + }, + { + "name": "jdMinecraft Launcher", + "icon": "minecraft", + "description": "A classic styled Minecraft Launcher", + "pkg": "com.gitlab.JakobDev.jdMinecraftLauncher", + "extra": [] + }, + { + "name": "Lunar Client", + "icon": "minecraft", + "description": "A modpack for all modern versions of Minecraft!", + "pkg": "com.lunarclient.LunarClient", + "extra": [] + }, + { + "name": "Modpack Manager", + "icon": "minecraft", + "description": "Manage your modpacks with ease!", + "pkg": "io.github.mrquantumoff.mcmodpackmanager", + "extra": [] + }, + { + "name": "Prism Launcher", + "icon": "minecraft", + "description": "Prism Launcher is a custom launcher for Minecraft that focuses on predictability .", + "pkg": "org.prismlauncher.PrismLauncher", + "extra": [] + }, + { + "name": "RPM Launcher", + "icon": "minecraft", + "description": "A better Minecraft Launcher that supports multiple platforms.", + "pkg": "ga.rpmtw.rpmlauncher", + "extra": [] + } + ] + }, + { + "name": "Office Suites", + "icon": "applications-office", + "description": "Office suites like MS Office", + "apps": [ + { + "name": "OnlyOffice Desktop Editors", + "icon": "ms-word", + "description": "Light and free MS Office clone.", + "pkg": "org.onlyoffice.desktopeditors", + "extra": [] + }, + { + "name": "Simplenote", + "icon": "simplenote", + "description": "The simplest way to keep notes", + "pkg": "com.simplenote.Simplenote", + "extra": [] + }, + { + "name": "WPS Office", + "icon": "ms-word", + "description": "An office productivity suite.", + "pkg": "com.wps.Office", + "extra": [] + } + ] + }, + { + "name": "Password Manager", + "icon": "security-high", + "description": "Password Managers", + "apps": [ + { + "name": "Bitwarden", + "icon": "bitwarden", + "description": "Secure and free cloud based password manager.", + "pkg": "com.bitwarden.desktop", + "extra": [] + }, + { + "name": "KeePassXC", + "icon": "keepassxc", + "description": "Cross Platform Password Manager", + "pkg": "org.keepassxc.KeePassXC", + "extra": [] + }, + { + "name": "NordPass", + "icon": "password", + "description": "An easy to use password manager brought to you by cybersecurity experts.", + "pkg": "com.nordpass.NordPass", + "extra": [] + } + ] + }, + { + "name": "Package Managers", + "icon": "pamac", + "description": "Extra GUI Package Managers", + "apps": [ + { + "name": "AppImage Pool", + "icon": "pamac", + "description": "Simple AppImageHub Client", + "pkg": "io.github.prateekmedia.appimagepool", + "extra": [] + } + ] + }, + { + "name": "Remote Desktop", + "icon": "remote-desktop", + "description": "Remote Desktop Tools", + "apps": [ + { + "name": "Connections", + "icon": "regextester", + "description": "SView and use other desktops", + "pkg": "org.gnome.Connections", + "extra": [] + }, + { + "name": "Parsec", + "icon": "regextester", + "description": "Simple, low-latency game streaming", + "pkg": "com.parsecgaming.parsec", + "extra": [] + }, + { + "name": "Remmina", + "icon": "remmina", + "description": "Remote Desktop Client", + "pkg": "org.remmina.Remmina", + "extra": [] + } + ] + }, + { + "name": "Retro Game Tools (Emu)", + "icon": "applications-games", + "description": "Retro games/emulators", + "apps": [ + { + "name": "Citra", + "icon": "drive-optical", + "description": "Nintendo 3DS emulator", + "pkg": "org.citra_emu.citra", + "extra": [] + }, + { + "name": "Dolphin Emulator", + "icon": "dolphin-emu", + "description": "GameCube / Wii / Triforce Emulator", + "pkg": "org.DolphinEmu.dolphin-emu", + "extra": [] + }, + { + "name": "DOSBox", + "icon": "dosbox", + "description": "x86/DOS emulator with sound and graphics", + "pkg": "com.dosbox.DOSBox", + "extra": [] + }, + { + "name": "DuckStation", + "icon": "net.sourceforge.qtpfsgui.LuminanceHDR", + "description": "PlayStation 1/PSX emulator.", + "pkg": "org.duckstation.DuckStation", + "extra": [] + }, + { + "name": "EDuke32", + "icon": "dosbox-x", + "description": "EDuke32 is an awesome, free homebrew game engine", + "pkg": "com.eduke32.EDuke32", + "extra": [] + }, + { + "name": "Flycast", + "icon": "computer", + "description": "Sega Dreamcast, Naomi and Atomiswave emulator", + "pkg": "org.flycast.Flycast", + "extra": [] + }, + { + "name": "FS-UAE", + "icon": "computer", + "description": "FS-UAE Amiga Emulator", + "pkg": "net.fsuae.FS-UAE", + "extra": [] + }, + { + "name": "MAME", + "icon": "computer", + "description": "MAME is a multi-purpose emulation framework.", + "pkg": "org.mamedev.MAME", + "extra": [] + }, + { + "name": "mGBA", + "icon": "applications-games", + "description": "Nintendo Game Boy Advance Emulator", + "pkg": "io.mgba.mGBA", + "extra": [] + }, + { + "name": "PPSSPP", + "icon": "applications-games", + "description": "A PlayStation Portable emulator", + "pkg": "org.ppsspp.PPSSPP", + "extra": [] + }, + { + "name": "RetroArch", + "icon": "retroarch", + "description": "Frontend for emulators, game engines and media players.", + "pkg": "org.libretro.RetroArch", + "extra": [] + }, + { + "name": "RPCS3", + "icon": "applications-games", + "description": "Open-source Sony PlayStation 3 Emulator", + "pkg": "org.ryujinx.Ryujinx", + "extra": [] + }, + { + "name": "Ryujinx", + "icon": "applications-games", + "description": "An open-source Nintendo Switch emulator written in C-Sharp", + "pkg": "net.rpcs3.RPCS3", + "extra": [] + }, + { + "name": "SameBoy", + "icon": "applications-games", + "description": "Game Boy and Game Boy Color emulator.", + "pkg": "io.github.sameboy.SameBoy", + "extra": [] + }, + { + "name": "ScummVM", + "icon": "applications-games", + "description": "Interpreter for numerous adventure games and role-playing games.", + "pkg": "org.scummvm.ScummVM", + "extra": [] + }, + { + "name": "Snes9x", + "icon": "applications-games", + "description": "A freeware Super Nintendo Entertainment System (SNES) emulator.", + "pkg": "com.snes9x.Snes9x", + "extra": [] + }, + { + "name": "Stella", + "icon": "applications-games", + "description": "Multi-platform Atari 2600 VCS emulator.", + "pkg": "io.github.stella_emu.Stella", + "extra": [] + }, + { + "name": "Xemu", + "icon": "applications-games", + "description": "Original Xbox Emulator.", + "pkg": "app.xemu.xemu", + "extra": [] + }, + { + "name": "Yuzu", + "icon": "applications-games", + "description": "Nintendo Switch emulator", + "pkg": "org.yuzu_emu.yuzu", + "extra": [] + } + ] + }, + { + "name": "System Tools", + "icon": "applications-system", + "description": "System utilities", + "apps": [ + { + "name": "Basilisk II", + "icon": "computerjanitor", + "description": "A 68k Macintosh emulator", + "pkg": "net.cebix.basilisk", + "extra": [] + }, + { + "name": "Firmware", + "icon": "application-x-firmware", + "description": "Install firmware on devices", + "pkg": "org.gnome.Firmware", + "extra": [] + }, + { + "name": "Geekbench 6", + "icon": "geekbench", + "description": "Cross-platform system benchmark", + "pkg": "com.geekbench.Geekbench6", + "extra": [] + }, + { + "name": "GPU-Viewer", + "icon": "nvclock", + "description": "A front-end to glxinfo, vulkaninfo, clinfo and es2_info", + "pkg": "io.github.arunsivaramanneo.GPUViewer", + "extra": [] + }, + { + "name": "HydraPaper", + "icon": "wallpaper", + "description": "Wallpaper manager with multi monitor support", + "pkg": "org.gabmus.hydrapaper", + "extra": [] + }, + { + "name": "Metadata Cleaner", + "icon": "text", + "description": "View and clean metadata in files", + "pkg": "fr.romainvigier.MetadataCleaner", + "extra": [] + }, + { + "name": "Mission Center", + "icon": "system", + "description": "Task Manager Clone", + "pkg": "io.missioncenter.MissionCenter", + "extra": [] + }, + { + "name": "OpenRGB", + "icon": "OpenRGB", + "description": "Open source RGB lighting control", + "pkg": "org.openrgb.OpenRGB", + "extra": [] + }, + { + "name": "Podman Desktop", + "icon": "whalebird", + "description": "Manage Podman and other container engines from a single UI and tray.", + "pkg": "io.podman_desktop.PodmanDesktop", + "extra": [] + }, + { + "name": "RazerGenie", + "icon": "mouse", + "description": "Qt application for configuring your Razer devices under GNU/Linux.", + "pkg": "xyz.z3ntu.razergenie", + "extra": [] + }, + { + "name": "Save Desktop", + "icon": "system-monitor", + "description": "Save the current configuration of your desktop environment", + "pkg": "io.github.vikdevelop.SaveDesktop", + "extra": [] + }, + { + "name": "System Monitoring Center", + "icon": "system-monitor", + "description": "Multi-featured system monitor", + "pkg": "io.github.hakandundar34coding.system-monitoring-center", + "extra": [] + }, + { + "name": "Warpinator", + "icon": "warpinator", + "description": "Send and Receive Files across the Network", + "pkg": "org.x.Warpinator", + "extra": [] + }, + { + "name": "Whaler", + "icon": "whalebird", + "description": "Docker Container Management", + "pkg": "com.github.sdv43.whaler", + "extra": [] + } + ] + }, + { + "name": "Video/Movie", + "icon": "video-player", + "description": "Organize and play videos and movies", + "apps": [ + { + "name": "Avidemux", + "icon": "avidemux", + "description": "Multi-purpose video editing and processing software", + "pkg": "org.avidemux.Avidemux", + "extra": [] + }, + { + "name": "FileBot", + "icon": "net.filebot.FileBot", + "description": "The ultimate TV and Movie Renamer", + "pkg": "net.filebot.FileBot", + "extra": [] + }, + { + "name": "Footage", + "icon": "hi64-apps-ffado.svg", + "description": "Polish your videos", + "pkg": "io.gitlab.adhami3310.Footage", + "extra": [] + }, + { + "name": "HandBrake", + "icon": "handbrake", + "description": "Video Transcoder", + "pkg": "fr.handbrake.ghb", + "extra": [] + }, + { + "name": "KdenLive", + "icon": "kdenlive", + "description": "Kdenlive is a non linear video editor. It is based on the MLT framework", + "pkg": "flathub org.kde.kdenlive", + "extra": [] + }, + { + "name": "Kodi", + "icon": "kodi", + "description": "Manage and view your media", + "pkg": "tv.kodi.Kodi", + "extra": [] + }, + { + "name": "MakeMKV", + "icon": "videotrimmer", + "description": "DVD and Blu-ray to MKV converter and network streamer", + "pkg": "com.makemkv.MakeMKV", + "extra": [] + }, + { + "name": "MediaInfo", + "icon": "mediacontrol", + "description": "Convenient unified display of technical/tag data for video and audio files", + "pkg": "net.mediaarea.MediaInfo", + "extra": [] + }, + { + "name": "MKVToolNix", + "icon": "mkvtoolnix-gui", + "description": "Matroska files creator and tools", + "pkg": "org.bunkus.mkvtoolnix-gui", + "extra": [] + }, + { + "name": "MoonPlayer", + "icon": "videoplayer", + "description": "Video player for playing/downloading online videos from YouTube, Youku etc.", + "pkg": "com.github.coslyk.MoonPlayer", + "extra": [] + }, + { + "name": "OBS Studio AiO (Incl. Plugins)", + "icon": "obs", + "description": "Live streaming and video recording software", + "pkg": "com.obsproject.Studio", + "extra": ["com.obsproject.Studio.Plugin.OBSVkCapture","com.obsproject.Studio.Plugin.Gstreamer","com.obsproject.Studio.Plugin.TransitionTable","com.obsproject.Studio.Plugin.waveform","com.obsproject.Studio.Plugin.InputOverlay","com.obsproject.Studio.Plugin.SceneSwitcher","com.obsproject.Studio.Plugin.MoveTransition","com.obsproject.Studio.Plugin.ScaleToSound","com.obsproject.Studio.Plugin.WebSocket","com.obsproject.Studio.Plugin.DroidCam","com.obsproject.Studio.Plugin.BackgroundRemoval","com.obsproject.Studio.Plugin.GStreamerVaapi","com.obsproject.Studio.Plugin.VerticalCanvas","org.freedesktop.Platform.VulkanLayer.OBSVkCapture"] + }, + { + "name": "OpenShot Video Editor", + "icon": "openshot", + "description": "An easy to use, quick to learn, and surprisingly powerful video editor", + "pkg": "org.openshot.OpenShot", + "extra": [] + }, + { + "name": "Pitivi", + "icon": "pitivi", + "description": "Create and edit your own movies", + "pkg": "org.pitivi.Pitivi", + "extra": [] + }, + { + "name": "Plex HTPC", + "icon": "presentate", + "description": "Plex HTPC client for the big screen", + "pkg": "tv.plex.PlexHTPC", + "extra": ["tv.plex.PlexDesktop"] + }, + { + "name": "Shotcut", + "icon": "shotwell", + "description": "Video editor", + "pkg": "org.shotcut.Shotcut", + "extra": [] + }, + { + "name": "Snapshot", + "icon": "shotwell", + "description": "Take pictures and videos", + "pkg": "org.gnome.Snapshot", + "extra": [] + }, + { + "name": "Stremio", + "icon": "stremio", + "description": "Watch videos, movies, TV series and TV channels instantly.", + "pkg": "com.stremio.Stremio", + "extra": [] + }, + { + "name": "Tube Converter (Downloader)", + "icon": "youtube", + "description": "An easy-to-use YouTube video downloader", + "pkg": "org.nickvision.tagger", + "extra": [] + }, + { + "name": "Video Trimmer", + "icon": "vidcutter", + "description": "Trim videos quickly", + "pkg": "org.gnome.gitlab.YaLTeR.VideoTrimmer", + "extra": [] + }, + { + "name": "VLC", + "icon": "vlc", + "description": "VLC media player, the openxource multimedia player", + "pkg": "org.videolan.VLC", + "extra": [] + }, + { + "name": "YouTube-DL GUI", + "icon": "youtubedl-gui", + "description": "A simple-to-use, cross-platform graphical interface for youtube-dl.", + "pkg": "io.github.JaGoLi.ytdl_gui", + "extra": [] + } + ] + } +] diff --git a/data/img/config-title.png b/data/img/config-title.png new file mode 100644 index 0000000000000000000000000000000000000000..47463e0c9fc395cbc26c83c4da5b2b9498a704cf GIT binary patch literal 16385 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 RN#lR?SzcAHTIO5e{{hXm@}K|! literal 0 HcmV?d00001 diff --git a/data/img/external-link.png b/data/img/external-link.png index 789c5afb910b45b763ae2fdad96d187fdab78836..651b4383f12f1f01b1e197829a1e05e1e7836a6c 100644 GIT binary patch delta 286 zcmV+(0pb4K0j>g&8Gi-<0050L&%FQu010qNS#tmY0!{z`0!{%X*4lIc000?uMObuG zZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0002HNkl&WnA5s^fpQP>RO9ys+E(9JD#u@P;lvIgo59o7&t;ucLK6V|EI>m5 diff --git a/data/img/faq-img.png b/data/img/faq-img.png new file mode 100644 index 0000000000000000000000000000000000000000..d00202758e03e9b18025d377c3a2576ace7c0bd3 GIT binary patch literal 7881 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 Iq-p5?0OmUSK>z>% literal 0 HcmV?d00001 diff --git a/data/img/github.png b/data/img/github.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec10f1c8a75045f8600f7378a9e59bc7deea852 GIT binary patch literal 1368 zcmV-e1*iInP)P000>X1^@s6#OZ}&00009a7bBm000HV z000HV0h@WX000008FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11m#IY zK~zW$omOj1R7Vv4<^l?Z<>>;;LmrK=C@usL8nrE`Xj@UXv8k!)k1F+tt=6WsmIOjl zBlc;O)R-De4XtTS1zqSPMhT198s$|a6w1S5i|m3t1Qr)zckguO;@#}E_-IcunK|ct z=X`r-&YW4I*X!{hF*FW(sXXm#Adp;!S;j^P8)`O&*cf1=0Th)M+Y{CLWdFNNpHs+O zB!<2|50%AzD?mSBQK4R5o=8thgeF9d06$;c9-n}Da0vC++AuXGWU)vphV(h5w;UTbSDlKBO)wRN@$t9 z1MM>#aJ1|cD5Z0f%-C$$UvdnKR=$Ao35$e@Wbr%?i%9nAx8`vpL3F04YM!-s09(HM7?hjk5egub_fRji8y2KYI(OZCmpwY+HWzAi7NnH7sdfB%gclnA*3+q=}&D>4)SQ52?%9}heK4LRC2H!s3 z@V@`zAX0Tp;N~_rnV+u;FRjl;T}2sm3CgW1J#_}G?eve&pR5Icv{Z4+wnwI|rYt#a zXlbL#*_-I!{bts(W~J!UBUBZat{Cd2E9ub4s0>lerokb~^Qq!9w(TerYwwyUjA0)h4x(fRo>@NBc z=PzC!usi4`z24^Fe&=SdO;DQzLUNCPTR!mmo+6a&%ZI7C27@gZaewoZ6T6(V)ap0y z*n_Xjs|EytSw9; zS-KXM%3CC3_&g_x3@~(e&-0u1$)tqpDM1Re^LIIjjS)6(5|AeLLk#1-_F8>pq>b6; alz#vV&IMH{rcB}h0000P000>X1^@s6#OZ}&00009a7bBm000HV z000HV0h@WX000008FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11LsLZ zK~zW$tyW!Z6jc=d?w#44?m}@&w{5yxH7P_M;9-kf6eT36FKCoDBtAeI5)){mi9bX=%aT$lURX7M-qmnlZKs3>mVkr%_E~ltvZ;{ota@)Mn3UM|YYe zD@&{#i1FGfRX2uSq9D7-O9s9d-3AkT487ryexNmfr!g-Pv>kp}9~J;zn|?bhaW1584_$exW-}5d6K0=^7$`TE2?vzw|&|ibn!FclmYGLTT<2r4eo=l za~SVY+72{&zAlLT29!b90swe%6E;^)$hcDAg3w3aPW=6r$O{~v1)ALEAt~F~b5+x3 zW4{sae&qJFj;2~I>@bg&6MM#Cb6vDtkDzXmo26$s z@42B;#oA;H$1hFb&hiqUKMqD2W*qdn8?tXC`-9hr!jlvOF&hiz4!v`8^0ret`F>iO2j{U8_FYv2D&+J z;q;9ud`DyNhFUaIHP)qKxHgsp-4+=x1PdLwAfEXZHJoh&W)5b@3FOcA0zyC-6Ucq@ zeaXh8?{y>R%4_0EK`%s-Gl-=n)gE@TXC9Pz(FS(5nh2y6Mhp_k_VrJem4f6XN@Jf!9=nE!91- zKX+W7K=;+Z{dJh(-CRC6B>c-$j7(EEl_6!tva$fwY`9Q7A7$LK5o_#6W!2Q6jr6nf zcs?(Uu265M7OPOGj#G43{M)!i8~WnnI4<1wuaPhgV{bUe-|Tbm4?|CVP7jVO+3L|5 z8y`?z7l8UBR`QsG=3nGImoiG2vg(FM$e}RT& z9CqxLL2t7@h!i*-ul7<#Yv`ZJFP_1Fock$*W*H~w7XpzAnNfNmm7%8DM$6Da4LaVz zXK7>YMpf$ZU$LWeXlRsFU g?-Y)>=Ny>-0R@v~dttyAK>z>%07*qoM6N<$g1z_x`Tzg` literal 0 HcmV?d00001 diff --git a/data/img/logo-gpu.png b/data/img/logo-gpu.png new file mode 100644 index 0000000000000000000000000000000000000000..39d3ea236f7e3db8240dd0da2129e6f78e42c08a GIT binary patch literal 51801 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�yLRn|9fZg|X#{+XY15`1OTehm;c&<#vdd z6`pTcp1hALW@;}6>aTJ{q4xvQ!2(Q3yxNR888Ajc7dO-HdG*AlWu3V;$q7TGj?X{+ z+x=U^$3z&e&)uQ;bXgH;Auj?GgdteSH(yHws^F5sZAlni?UP)wJAq$EO5$3$mP|DoV`8 z@VXczYPDFv=ktNf=~NO^Q(s@dX-mbfii+zejvLRC)2i%EL zFfxhkPbT0brKhI@`K%#8RziTtC@n30zM-L^cHO#lW!N^?58l(!>|w|EJ=#4Uwxo+T zkmg#TSB9Z_Ll2`VZj%xQQR3 zzR@NdI*2I#?Q0J~PbUeiQDRldTG!?ef{IBn z1r;>G0lwBcbl*;fu*70PhG+yMod``s9q{)6Y056E;19~6kqK>~F6RQ+35aY67*nsf z_n9;P{oqZ@SX%`AWL$`eWOZlI{3JTqRT&f^#7`Un!)UFp!s~0tUV3v;Rl%tX>pKOz ztYZ+S3T`yx67X|UuOkAYwg+O=y}2ieeZAz}@G@4ffFC@3h1FDfd^YH4ZdXl`zH z6A%(}a&nUJ9?52G-@d(qNJeeY9fV@#YUBf#yQO>L?&Gi}n)^-+IlJoQF-UXgfbiH8 zH0*$a(q3#zG$5M{p=OY=Z*KwN=a+)<%{SDgT+)K!cbvSB2IlGLy)Bj%(Lhbe5pep! z>0kgRq-ZYLytHH(6VAT6JqROI(FK#^JKlNu?H6jG%YB+LLrvE;E6U%Zp;LPWO;=BL z1U#KgVhX7RF}Wr;IUS@K%FfUr{{W+~uP zWT*%_^11$^(*Wx6sMwFSbL?bAHp=dParc%rUkCj@p-J?KRo{J$M<%%@pZ~|LP2}DL z%*&>NF1TQVRJqyOvgebXJ2q`kNy`=|9d+#4#Xjd5jjBX0Kma4?hh}Ha$>jXL0uyhq zNz zVhtNEx{(s_A&A98mseXi^13^lSN-*NWXgKWQp%uw+g^qZmp`$nwZWGD>lPn*X(T^c zdBuT{Gh_nU|9be;@CrJ_w^1WzmkcOh^YvF{Z$64Oa%@#$HP@JvFCMa~%{mavn;Qg_ zoCLs%5|yf*3m<&CX2(WU^U^-JDskt{8Xw<%9|6UOR5xqJM7f z!YR? zgoLWLwzhv;tyVvgLPr1k*S~%l_RS^Qe7xClfJsvfaLwbzJoDHm8(Xs^%8w5lBOd&; z7#k0gX6Y_k{|`$t1Wc4l7Jzrp2Yv25uo*bDoc(BkJd~X~z;^9*plvNCj6tK>9%zw8 zvQRw&FNY5O*uaEjc6eZVewJoP_YFMZ+_s>Riu$raw$6{=fAfVp2)S*W)9z>lnXJ)X zV@*+51_j2LqY+yrca=%#Y-qOH()^$W?c_}XJ7HU1iI&9Vn3`aOoCiXgrZF1>1ie=1 z%GN+tT%OdCqx?bieA9t2WSURSRrbZZ1e5~dW9jvqDoQ*}tKNJmVbq1kv;>7XjO@fT z`N5ILoeX;irf6fztEQ;bGydjBPp@p1EFcC$Df4R z2G14@!j7Fgx4B%d(tx46g1R1Tsjb~^x60WTyX}`gzds`{Bjc|0jLf-Pwr*)JEG*0* zQr0(}ot=;U^Pm6xHr&={d+AeOiEkrXZ7p_RW(kRRJTd1?4XO#^Y>Vp?0-^# z#0Xu(_4)Hbyz?&5L?0^M`UNKX_F^!uo&);&^#qIr(5&>ghUv-F+mx!XZXKCNP<$ zB_5QRN(hd*@cO)RA!(AVc))IPLB81fDs*{TnahofI(6OdNrtZTIquY+M+l4|uoW_r zzUj+FmF>q2X$Dcu)paYu2rL~=jj&xSY(WSot`E|jXqZJoP=hR4DlYkuLCe`wW}n?z z7X-sDL6ET8+&CGwz46vI?mi;+i!GnM-jrW-cD*cG<1lA6mR7c=6prlUxbn$cnG_lU zrr{H&CpV>y`?mk?Djtz9>q~n=3lN4BNP$Z9`$Kyd; zOQ5B#mAaW9HD=7%&6_t<6^tZXQsUy`sPVs|qT-J2+qYM5*|Mb#qQ~j%FXFuo894B9 zOJ*Q4dqqam^O#kIW)L!Gv5%IGmD#xwS3QrIKZXZo=vrf6zBo{4I;DFY^Y4J8LBQc{u#f17vqN8w}G`8*RALIBiL zm1m$GC`62*ntDQkiRGA!F!j#ndPAjFRWu_BRNWBPR5NB4Bw(b4I@4v+Ff=fwvn zo7JLpj55!=^SVv`xOj;SgNoPEWk_*an+I4r&2Hk+h*wuJ$;g~hfvNa-Pd!$)CYX_t zAv82JcxvnGOA?ckQOpetEgJUld+)u6wi@-#H{UFUt~eeu@E$b|%P` zd&sJ5D9G=;1c5<=z)IdVQ6cZn=&|5C{WLI+8Vm6|%4rBmpGVq=^z;b*fb?SnlR2{i z?-hllI}693+2F-ISr+j7JfA>!Miq-;#3IH_gFW^L)K}XNrW#Lr44{K9#-q@5$0jm# z&8%iL+};4Wj1_e9BC4cWnOtFOqmKpwiW=7?RA~@AkqF+Y0!m>vuxKI#^j?;DUBq9P zWhIX|lAJQ=GPn!vWs(P}%vVwT^Rp1#o z1f0Pjk;cg1B8IrD;PmPcIPOHyO8!X|?-~sU*?WjB%|UGZlpoTMLq8TU@j$|_?imxO z($dlAU6SY46ANTb0iP(qK+REC+A}>1-yXyO5hfAg#*Fr+{WOQLAGiQZKyWgQSZKhQ zr78$ffGH%Q@!80A3Iwz(08VseSA*ofTx8X!fgyH13Ys2B!far6a-su7HIz+A+soq$ z*G@Hq5>q8wCY^ox*sWQ!t~PXZm+b(*VFSBhgOqsd_VhiAZ-u@C0Pms4{^o5oJTURj zDIssYiVF4&6aq+Zg}SyTBo-2p|1pNR_)lnmQBwP3=TFGCd#s22Tm*heN6%D&dkTgr5Rz*KyZ`a%%;C)N~ZYAa19^Bk+1%H&YV5NH&JA#{t) zqTrS&39v^uAVJ1sWXN#{P_pKo=QYV9Ns1N%K$N~Di(**fgGB1mBuO`dswfM(YHJEzJB_{ooEMOx5m>?VNBlODo z3-7<_|you#|fau`X@&U9o_lWh?Y>jf%rFFI244Mq#dLR7SKX?vy8k`rp7S5HpJb5O z#Aa(pvst+diISW}5?*`Po!4>bOkxsqL_|_b72z9w&GiMVDuL-$DYWZ9SYCS={=Lz& zNKVZ`Qr1)^37FQ%iO~U(k_3S_vxKgKmTt!U90iJFGN?MWek2_tvJax~&BJIjvAz?w zAythulK3uOn_xr2@;JFaFJYx25oHTY@TMnTnpWiRb6X{S7(<2uszTdGFEvpDa8>Wd zHy3_u8dvLXFT{BoCqX$&u=C$H<3Iu@*F=7EysW4TKTCeOBEkw~`2NXa-_0`k;b7%7R+6dlNWFM~dP5OTGiFl5&tbda05EKN%oi8hI&6c=Y7ok2`uXDwPxV#j5T7+;VV z3G^zkAkOYrkH-T+FR{zdOlOc`AMCbk?+BfJ3G45$P;qp@kwoB@Wtpk<9J^O7ev@20 z^(%~N==$176sFF7>9+Uhe*JAockq0UhIP)p`V9zH9WTq&Nw<7X5*8DZ5r(tpUUc=% zLvyaV_nytZzN0Nlb-DDzm{(`apGz&!LH_W9h2OgFG5GgfW==PiGb&9CkH&N3d1T^1 zz??mM_IK&uS;Dri`|CV}Y|@{0&|t7%`#nhc1KFSx9o+crkhYW^=z!1KvI)q{nV|1G zK);G={^{y3J~}RwR<8l|@h8Fm;QgRqJ{Gby6|~|FpwFBQIeYgovx~&ztN>tZU_?a! zvka4YLM+#f*P-a_IVNYgcPe_z*Ly&ZnmF{7la&jI>;Z2=^_s&u!JKft;f-gTOiq=w zzdy?~3EtK@NFG^YbpbK76x|IvwTQBNUzjf|o?6q;QyujMxpITt+h-R z63S%otb^e6q3|oo+I)^a zL0!R>Ck6=ch&ZcBwOPQi$*d6CSD6y%>Bu!Faim_Cm+fon6K`s2P=br#XeV$r7B?)?T1tJd`HCrGb}RgE#o?lW@W$h#j| zxc#+X6$x!2d5R9z#7iGGo!x|XLSqRHqij=;dMlbB`RJO|LL+QcYWo!!k!`#}N$F8& z8IpabtWnXu=Um5%2`1n3`M%Z^v|XG>kSH-g!36MOoh6z6^pY3SLP5=8(&tx0ol2WN zEhUtUZkZ19o}y%@)pD9xF?jqEMXV0s#h2L2R5?LAse2b`WTEE5nie2dqQ6n<>nPcI zu!KOXcO;S*K76`NiI+ZW79E_TW1Y|gVv2|?NFcEr-85M5VJ1nYJsmN7uxNYG>XQwN z>2o%V&aq60qi8K9W0Xki?9l7eL1$Y`1kz+AhG`QlDJ?4~qUvKx-#Q(+H0bPR6i3s} z%z3M!`h+?rTZvT1Jz!yQK&D*UQ-hssXlorLb44Ee`x|TWCe6N~(u5F(r<%lq3SG_u z&xK#a4f6YB?aIpS_Nf|+*ro5x`*pvGv!AZea8yNaNNUNHHc26g^qS0sCVhQDtD!f! z6r@}er|T66+r0;P22Qva;8%};5J47Fw4H=_K5rTH;l&3%kwnab9duQd6bs|;Y^Dnq zlV#{7so~){_VOjOC!(dqL{g!p+w4r>WaK2yL4mOTyesAQu z;UP$SU3KRUQ0|@yqG;b;$6=L|3 zWZ+&gC0?T6ArPfJoW)2e9k-P9|6^u8Zbgqn`+;_JQzp)7TZ#H_hOB_sVf|SoK~BW> zfv$9ZPSEL~vx!L*7;UCY7V=A0k8H_0P(vh)pwZ}!e8rGKw=4tL0WBq8jO6#&=h59C z{iVmy$v>{qvwi6!rlRs%>-?PCSjlL;lWoh|Te{|hit*RYSRVKFzq8)RqJuVi%h5a8 zR6I;A*`E~(WQV%TwUx)9_#f{by?tE4AC&HwKX9;)Ko-*nBdk)Z&K(RAx-R1EDYEG4 zNs0!+SRI}>_g%0y9(eb6^LpR(_;Zz(FC?R{-LiS0gses*x?)*6`rw0J0;5CW;$v%< zJiO%XXHn7!hn2kU&)Etx$V5*3IFjRirbJp7=Od`qZY@~>%KZ-{6vSKUfzUN>Z~7;| zlo?=DHMFA=Q)b|yG@Rp#)Prf#ahV)w<=AxCXc)}G@@ocY^p5qlLQWRJfFcV#lz^gz zYXB7}4O@Yrs(|h%&Dt(87bShNbq&09k=r1>7UzLMALVrEp9d%|?PbYUX`00v1s+O} zhD@!d{d?QD^DctU4i|SWDe0G;AH7{RW#U)X6WbWas>0HXTv8eC3C%~@VojaYg!;PI zpV@ZfoH5T!f!tZOapITRXhv$LTV_Fm3^;6J+m3y+C6Jx#HR!-bW97b0md~Ih`b}ME zx3Y8oBa5$o_yx~y2u;+35K>XRf!_S6Aa0`$1d)v7{^h?u_3ckCEx5Dfv)A1J%?6EJ z6t?||LU|IidH`E$nL!A8Z0MoHj(w(^Rk(8gqpw2Z_u_3dN+=;-_1RH#az;%4PHltU zCm^%_pIrlgR*sRSn36~Fmw67aoxgnUV}GNcV+|lwWZ>3PMqo{J6u z!FkxN8$l~91bMxaXT7)m5@cSIv@Gio@wbLnR1m zz32zZfV{mN?7OD1u^i5Cv339-zv62X{BJIWdTPpe!3V*%EE<{GK3K|y{tJ{GfQI?6 zg716xfvrkF%oy0R!ftXd)M-%S^M1SvjD5w-dTeVBON3Q^4D@yD!87efU^U+yb699G zVdZE2=wXo8tvv+|jjo5zB&JNAP|AvGsID*yKV15}H1hg!M3pfU0eX7;S3-J(Emj}J z0SW(Q8Bs0!*}d;vI{B-cuD$VVUz3dr|E6OHt3b$`ksHc>Q!t=k0rMx|2qtbF`fKwL zXKag6d89Nxsh7Ghp4Ba^=uNh%PzO_y5Qn**DvaG>BJ#J$4aU5V#}=^DZ0x!U|Z*8TbCTLFH4|7S*D(?6V@o0GgAQgwM*B((8Q zPn_7kZh!r;GCX%IOA$@3*CB1Cob0zaQxM4slE-yUCy1ovlGAw%?C?DeHDJv9HAo{b z2BT*$Aj$D)+{Qtf47x1vh{i z$^}0`kz~}|lR>3K6`(!4QC$PIkI#l~e2%7#yHe5l{I|;P@Z6{70o-;qH1-+_ITj@) zOJ~GuN{K)ud-q?LVk0C7h!?8EJDcCP zsS?#YmcFu&E*jAFMHz4uh75GCHFy+>#<`;!eOf&%t>gyYv9a3+4m-{*PeT<{2IBvm{;=7&GD!T)P^~f{6e#?*;RoyTAzM zP>V+gPq-1ZKfeUlg1Hh;L-w&pT zb{BfQovrVDbQUp*a|`0aJ0=!X5GmPM9UL*CJOY8f5;360@WY<+@B?(+dPrALL6Md>Evc>HbZVb|Ta^j7LE#Ed?tUWl6=D zn2(jJ+XD;{w~(A-VUT|M6M)y>0xOU%JFo2C#I!gu;t}jKe+@eVok>h$0D~AZj9|o6 zynaRfm3KT=R~I$<;`E_G`{dn6Yj6DNhecz4aMSRukctg$mbl3~dR`iXTTp6pzg(rCaxVPR!0SBPE4#&AS8%T+y}otA~A_` zVgP9?j1xZJCvU6s8h0isxP{=Ea;z*)kHNJ9>?zJ$stvY|5zEj?uxmt$A+hRdlw+#5-la z@XBkMd}iRi%x-8b66c_I!RU*UQ1`;7M0E9<6d_7Yfulw8YR{3VWdWS8=hN9L%jDBN#y=VM)U*GcEXJ%af5Twb2hn_og zXPo7+#p4>nwxYnRC^qU;C*T1OT%*5PxpK#T`ML0UD{d{Ngk2rS<;3PB5)h8d&nflY zvDZ!Y4Zr&b(+))gKU#mhA~&eXOCUjpwy+dtZLG?@C z6MHrpSwmG*W)3~o_QMCo)elUWzxuhqeS16x>ht*{=P{h2=p3Skn;3Ax34*)yM3*C9 z`2IMFi1V|~?RgtgK^M@x3aa=W@p{;f?}`b?+(KjLG3Dv^@7Nc~nZBZ=@e47j4t!Dw zVoHFMoJ&Y9T(~&r(AnYQoCri>;!4!1h_><-FTQ%gjgOBy*gyvQ>8CM04z(l*#Wm3# z1utxxuzc2-)o^lWG$#`0u`@*iio`=QY$tB(Tu!!M4zU_4CzjTN0C>`|SR$PX-G1Z6 zf80_UQAUS#>&|syn^mEeZ3Se*3$iBy{$L9Qb(fS}xNvdKpeqoQn3Kc<2e^n8S_grx zt3C+ddBc70MFV}lR~8}QlQB^)2G#LyU>vXi`+e_he(le9jK23Y+aSJf&E@Od7TU4B z^E*yLYnEIL%{2r$A^B!JweYT;Mz@<*Rp^(6H4UPYKk4&KOnq9C4VH~X06m$G@4|%( z7v}^z)0KyC5)%)#=JPk$J|ro7(c^c1Fy_fO^8-rX=`1?JD}!c5poV0@ds`xR7d-dR zL6-rb2w(RN&7U)G($GRU^-j4xo%fmS=$$S`k&K!VQo+MN8`s!#*lqQ8{xvINaxNkC z(wLYiNJ$BcKG|BLxaPSTeB;7}3l}ZW6%uSYF^LJYNJiY9hYJggX?>760!6Zb7%E`!<%V)|{E=AA%A5bVd8q>0(}N=WxBm8_uj-K5(rK+d?QK6I6D<(O zU(uDvgCBT3DmHgCV8p20Zey+=HfY4Pla4lNedR#*b$e7f6xOgJE>_Y+tr2e`2g5eO zDwRTiVf9*U zMFK2wQC+Lb6%EGJo#8mF~3iD=6fAsJqab4X6B zsF`(i>!ZIMUQdGk0)0jl9IR~Yt>xxkw;>`y9OX+QbOVd9nl3;rdX5QUSA%|4RtV@u z93)v`%Enl3E#&t`2ZyB9N2=-%x6x)7E?l_ivgqtNCWPqDLu-i_4CK}lcI14XMcTaN zmBvx=`X66-`LroV0z)QSS{#A|ODNOsn|9KsX+cd?%4%$CoROOqm{AwXgpDAMPWJHvSfSmJ0&bcCS&Pcv_)(`r}vh({MI94f-8a?T*{go%A z6aD+%P!Wme#;RfvQ$k>C^wdp_l1-w%3rqMzfpaWXww-a0-rSpyDcxm1H7^LYAQVr4T2ZKP6@SxxB96X#$!F`yU} zpLdci%k+Ho!`t8a+{8Opk12TY@k55xGfq2q)6ki`2uj(C#% zEsg1IDIS?=a9P9z{KpD~VaW@u(2Mg(OqVNtk<6skL{A#}Wdr1q@G+&fY{~xRuf4l$ z`*IZ`C_>dPT|H zA-6vCr4nEN|4=PYE>?q#$keissbyhO>w_+u*T-b%6^Sk=5NX7~pyW_(u#mQkqpAcI z$8k0%j?y8cNw15T;3PqzMM9E|NXVJkNy(1}y7k+8no`M6j7KS{G{z04gN3t0GUgaj zYtBNE6|7=OkFQ!NOJcH`DcB|tB`V!AQgn zK{_~smAg1pw8c17bnoIm!>(M_W86)bDZ{UxN*V(>nr>5T1S`qv;6YVkN(?A}#lqrb zIo*RNiAPFmSfz{=OU$tq(Y$%iM~|27N_;czlEY$vd|w)Ei*4$Zr|hJa=VSU{wq}6O z>w(@O1=JJ!wtAx#2WyHp@2D;PfyQbV^$8n;^s>aYToQX@8OqeCdo#rc^gBlNyk4g zXsO|GyL%;2nko-MePu=Opj3V2<7M0HwWfx>pRPO#=?9z>Pu%g|S)o5_WXvklQw z5^I^U=-K3F-nVS#Zgz>OV<7$>arzF6jyBMxKDp4}!j3}I5gj%i>C&ZbyAm;R@Xl2f zA$5+*c=0}NIq`&C(Snk~^)*I#{qp07>4H1Vxnx4&ppjP%Ci$Nkp!vJy^zJwK^R?j^ zG-x(N4U5%)LARa_iDJ*J(xx!WMX>rNy4!3!;eW(!*?JtOB<6zp2GTwB{a$73JfxnWzl>S&!^eWY&bg2wcmP!0877ujRR&v$DU339P_zgF@VX%*@c)FioXdC6p)-mcmFxzQR!;Llu4z5Ur5nv;#LG+a869P zaO=qn>5>$w2*0M?f3Mt07y5bw?zlL4fUMk*GXBf=4f75hHT+OTEu5e~XQ+4o9(eP000>X1^@s6#OZ}&00009a7bBm000HV z000HV0h@WX000008FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11R6<1 zK~zW$rB+>RR7Dj2W`DZ7-3nW{{t;VB+hh$QSw*yhCWbV|)Cac&5>t|z_+T_feKh_( zXd^tBnD7D`Fs3ii5XD9xi0DH>2oWQxP?44vYRliY*ld?BOZV=b@yy(v+qvs%+IW() z=iKu<=giERW$APpi-n;rpG0DzLhZTN9?qsaJH=xCSY?v_)Hi{3i3=SkTGq2NrpG?T*m^~M+R-C(GvL?!SH(W_`7}D zFQA#>O*hBEoz!t*;9M zRxD6e$2tFW^y!`knJ6TGu16EklVwu!8rI)mi=O8iki6U7iu0KQ-a9gZKc)(JV0jI8 zbu?mQL!C08%og#{4_ENh<(zhxG-j80H_?yXb_u>&aB5K*t=b^=Z*TDuNRPGm#;|XD zGwz88@%gr9FM-rGBxl(DKjCe6*EH0ds)T<=a|0bP4($0tKu`C*tdi*$&#fRTd z;MmwKtauoQx|3*G8O50^b4q^r>`i4C4l;B-V)>H55fQ0W?V`Xd%tPN|MU~@hp@cUN zUxe)l^qtAz_!}wQcUKMOOB}Bp8iCYHSidTcRx3srRR=~1-5-@iRl>Q$%u3{nC0x%H zQMBbj;IK;$MyBPp0Itr?BbzUJtDcyVSA`BiJmksB@l+sH2{q3aSg1t^m*+&Kv4(lu z<%=c1T-s?c?MY@!xk};)o~K(~736(c03D2y7;?QRxlU6~ensh9uEd$s?kb?SGPz<$ ziTrX3X3D)TRM?x9P>FLidkiS2tXSFG{TC1m2k9WV6Tx#ZR#;IUidmPl)>m!9)Fcj zoTm}&sN~&^hq%PNeE|A?ne^-y!+iDY)oNw~8-_nSAr&eK75lr{mTDeLl$~cRv_t!- zB;iQL@ozQEWG>4i+l3gT_s5k?!I%n`Qay^F!tExFRJ!UB~bw#XD>PL*TFTVRzCj3c<(OyKBZ+# zrS7OFuWR**UON3pVH|#``KU4Nk7=suSQZ&<3~DJzY!JsFC#a^kIfZ&?VZd-P000>X1^@s6#OZ}&00009a7bBm000HV z000HV0h@WX000008FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H117S%- zK~zYIy_R2yR8<_uKfiNl+;t{%wUl;R%+`<~vtSlV{IjUEQmoR;%qoZk6-7Qoy_f~j zMiEplMJNRIB0=L=gjL}|X1g$a)*-OZp&C0mA74FXL&b{Z?!^~a0JL81w))&sh z@1F1deSYV6?mhR4s`6h;w5w|so)-haaegP2x)^Y5-@X#hTV8fco^<-c?LrKyZy<64 zkrSxCTIKM(7pLc;`}WrXp+Kbi6kT0uJnt>S;Ud=VLuB=A65kpEt*EwQ%zjFxag0ga zDWDd_*J+HIi~MyV|E^?m9wIN-_2lyh$Yk8vLts9tpVoCOSnvhl&g{vz7!wDEfZs4C zj>y5Po0G|Xz!?BkzrvV!V8Ay3G&T;9NW33}h>Vg-4I+{SvZPXjSevg=;|kz00F1F% zTM7(STk$;(JXpJ3hYszm+lHH^x(nDfqu4-rCwt;6101>KtTDgN1>`*GblnGFE+ExP zBzh2ez7idtEo1;t;8|cLiA3;Z5P1Z+8~6^9?Cc=v^hYF<3xPj@PDDCu`ijM!^!84K zQ2iMAx>CV#l~MIeL{3+ttJBx7T^nb~lG@3A#p6W)QB`ssoqJGeiMcmkBa?A`Pp)I@ zZdF-ruos(u{Na;a$JX77K1#{Hr(tKlW9^Eu#nDquV}))-&KuDu#zWqlp+Z5z&RwtE z-}ikF_#3bC9PsevX!Px6Fa|((w?TPV(5NEr&uwk{V~d+xQF)25Gi1<()|hpR#)>x( zHi>0K;q^$#xuoG}gILxAJple2U-b>X(m%Kg$P1hUqW3j5w<&t2ynJa#WvwV{EVN^# ze|(<%IWP?D6_q^}^Nyd(_>G?lF~+V(Ijfa3N{nu>#ytyIMcWmg1pXGaFR0M}(6M8a zs`3F46Xd6sz9ZQnL}VJ0>)5vA>gH`vqpU}W0Lv=XZ)iDw{5r}IuvCyg1UZVx1L86O z;3${NCF@9_;7YTm0769uQ9WQCZ3Wf{dP!8S0|kY3h=_`00IcdMD>j3YZO-(L0$5{9 z<)U@!W=IIYZP3k)lPp5Y#HCG<;nCdW!Fyv36Tg6S&tL9`*1CP000>X1^@s6#OZ}&00009a7bBm000HV z000HV0h@WX000008FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H117S%- zK~zYIy_R2yR8<_uKfiNl+;t{%wUl;R%+`<~vtSlV{IjUEQmoR;%qoZk6-7Qoy_f~j zMiEplMJNRIB0=L=gjL}|X1g$a)*-OZp&C0mA74FXL&b{Z?!^~a0JL81w))&sh z@1F1deSYV6?mhR4s`6h;w5w|so)-haaegP2x)^Y5-@X#hTV8fco^<-c?LrKyZy<64 zkrSxCTIKM(7pLc;`}WrXp+Kbi6kT0uJnt>S;Ud=VLuB=A65kpEt*EwQ%zjFxag0ga zDWDd_*J+HIi~MyV|E^?m9wIN-_2lyh$Yk8vLts9tpVoCOSnvhl&g{vz7!wDEfZs4C zj>y5Po0G|Xz!?BkzrvV!V8Ay3G&T;9NW33}h>Vg-4I+{SvZPXjSevg=;|kz00F1F% zTM7(STk$;(JXpJ3hYszm+lHH^x(nDfqu4-rCwt;6101>KtTDgN1>`*GblnGFE+ExP zBzh2ez7idtEo1;t;8|cLiA3;Z5P1Z+8~6^9?Cc=v^hYF<3xPj@PDDCu`ijM!^!84K zQ2iMAx>CV#l~MIeL{3+ttJBx7T^nb~lG@3A#p6W)QB`ssoqJGeiMcmkBa?A`Pp)I@ zZdF-ruos(u{Na;a$JX77K1#{Hr(tKlW9^Eu#nDquV}))-&KuDu#zWqlp+Z5z&RwtE z-}ikF_#3bC9PsevX!Px6Fa|((w?TPV(5NEr&uwk{V~d+xQF)25Gi1<()|hpR#)>x( zHi>0K;q^$#xuoG}gILxAJple2U-b>X(m%Kg$P1hUqW3j5w<&t2ynJa#WvwV{EVN^# ze|(<%IWP?D6_q^}^Nyd(_>G?lF~+V(Ijfa3N{nu>#ytyIMcWmg1pXGaFR0M}(6M8a zs`3F46Xd6sz9ZQnL}VJ0>)5vA>gH`vqpU}W0Lv=XZ)iDw{5r}IuvCyg1UZVx1L86O z;3${NCF@9_;7YTm0769uQ9WQCZ3Wf{dP!8S0|kY3h=_`00IcdMD>j3YZO-(L0$5{9 z<)U@!W=IIYZP3k)lPp5Y#HCG<;nCdW!Fyv36Tg6S&tL9`*1CP000>X1^@s6#OZ}&00009a7bBm000HV z000HV0h@WX000008FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11O`b& zK~zW$omOjT990xP^T^KZ>?5P9N zLl9c*FRT7isYtaJmFh-Ip(!CgVjKO_2Pjr;vQ#$-n|;l`W_MoB8FDAP-A%jX!tOcq zo$s7;@0@$j9cp-Z7}gq*a>N@{vabh~#nFJg)ag z&WD$Oxzt{YISHv*x!~+7UiJ6wj&f61s(or^xv$jwa^J#*pVpHAgSMCEgy2IkvVez5pVDE^l45nQI1D8`sYn(Rnl8Ee$TsfP|LnSwyAU9vo%iZec+zzw_LqSk_l`1qjadeI7))CU7bX& zlhWJALH*}e9o`6F+QK&MmlwuppS);CrWzEOuq#()AvrPz**D(;J(VJGLrFPTkJyIF zVkhlUC5|vDVbw^m8ma3be|H{|L;Im{>QgWjrN&Gis^efQq6IZ?p9?HpGXr-K?x5VU z6AkHOPT zmH>P{n|!B&TU!_(1=qm?cbyC#R5A*TD6=W9ZN8&4zXd^~P$0HC$q(!S;kgl@L%}-R zoq#pj6)?$%=ja62ewL8b`4~~_r2EywO(j4_b#Bh~PjGE#XuNPF)~_R4`ud!0T(@Ev zP(1sU%Y zNk-hfz;u7lAyBS^mBhL-{gK`7rOXW82Nn?>>Rlb9Fd0>;K+=IrBQc8rT(?P|j44 zZ68FuGG{~m2as^@Fl#f=ALC3ore_I@>F(|(I{eQ5drjbDanke für ihre Unterstützung - -CachyOS Linux bekommt eine Menge Unterstützung von seiner Benutzer-Gemeinschaft, und wir wollen jedem einzelnen Beitragenden fürs mitmachen danken. Wir wachsen in gleichmäßigem Tempo und unsere Distribution wird dank ihnen jeden Tag besser. - -Es ist sehr leicht etwas zu bewegen. Abhängig von ihren Fähigkeiten, ihrer Verfügbarkeit können Sie CachyOS in einem oder mehreren Wegen helfen: - -Unterstützung und Werbung - -Die Nachricht verbreiten - -Wenn Sie CachyOS mögen, lassen Sie es andere wissen. Schreiben Sie eine Rezension und veröffentlichen sie auf distrowatch.com. Reden Sie darüber mit ihren Freunden und den Leuten die Sie treffen. - -Der Gemeinschaft beitreten - -CachyOS ist nicht nur ein Betriebssystem, es ist auch eine dynamische Gemeinschaft von Benutzern die ein freies und offenes Projekt genießen, sich dafür versammeln und zusammenwirken. Sei es, indem Sie anderen helfen, Probleme zu lösen, indem Sie ihnen das Gefühl geben, willkommen zu sein, oder einfach indem Sie andere CachyOS-Benutzer treffen und sich mit ihnen unterhalten - wir empfehlen Ihnen, der Gemeinschaft beizutreten und daran mitzuwirken, CachyOS besser zu machen. - -Anderen helfen - -Wenn Sie etwas Freizeit haben und bereit sind, anderen Benutzern bei technischen Problemen zu helfen, sollten Sie ernsthaft in Erwägung ziehen, die Foren zu lesen und/oder dem IRC-Channel beizutreten und anderen CachyOS-Benutzern bei der Lösung der Probleme zu helfen, die Sie zu beheben wissen. - -Beiträge zum Projekt - -Fehlerberichte - -Wenn Sie etwas bemerkt haben, das bei der Benutzung von CachyOS nicht richtig funktioniert, lassen Sie es uns wissen. Das Problem, das Sie entdeckt haben, wird wahrscheinlich auch andere betreffen; je früher wir davon wissen, desto schneller können wir es beheben. - -Neue Ideen - -Die überwiegende Mehrheit der Verbesserungen, die in jedem Release enthalten sind, kommen aus der Community. Wenn es etwas gibt, von dem Sie glauben, dass es fehlt oder besser gemacht werden könnte, sagen Sie es uns bitte. Ob es sich um die Aufnahme eines fehlenden Hardware-Treibers handelt, oder um eine Software-Anwendung, die Teil einer Standard-Installation sein sollte, oder ob Sie andere Ideen haben, wie man CachyOS besser machen kann, wir sind immer daran interessiert, sie zu hören. - -Kunstwerke - -Wenn Sie im Grafikdesign talentiert sind und bereit sind, zum Projekt beizutragen, senden Sie uns bitte Ihre Kreationen und Kunstwerke. Ob es ein einfaches Hintergrundbild, ein Icon-Set, ein Splash-Screen oder sogar ein neues Logo ist, wir sind immer daran interessiert, von Ihnen über neue Kunstwerke zu hören. - -Code - -Der Großteil unserer Entwicklung wird in QT, C++, Python, HTML5/CSS und BASH durchgeführt. Wir verwenden auch Git für die Versionskontrolle und PKGBUILDs für die Paketierung. Wenn Sie mit diesen Technologien vertraut sind, zögern Sie nicht, einen Blick auf den Code zu werfen. Wenn Sie denken, Sie können unsere Anwendungen verbessern oder neue schreiben, zögern Sie nicht, Patches vorzuschlagen oder unsere Git-Repositories zu forken. diff --git a/data/pages/de/readme b/data/pages/de/readme deleted file mode 100644 index f325485..0000000 --- a/data/pages/de/readme +++ /dev/null @@ -1,45 +0,0 @@ -Handhabung der Hardware - -CachyOS unterstützt nicht nur die Verwendung mehrerer Kernel (wählbar in den erweiterten Optionen auf dem Boot-Bildschirm), sondern bietet auch Zugriff auf die allerneuesten Bleeding-Edge-Kernel. Dies kann durch die Verwendung des Kernelmoduls im grafischen Einstellungsmanager von CachyOS oder über die Kommandozeile mit dem MHWD-kernel (CachyOS Hardware Detection) Befehl erfolgen. - -Diese CachyOS-Tools aktualisieren automatisch einen neu installierten Kernel zusammen mit allen Modulen, die derzeit mit Ihrem bestehenden Kernel verwendet werden. Wenn Sie zum Beispiel von Kernel 3.18 auf 4.1 aktualisieren würden, würde mhwd-kernel automatisch die Kernel 4.1-Builds und alle Module, die mit Kernel 3.18 verwendet wurden, mit einbeziehen. Was sagt man dazu! - -Sie können Ihre Hardware über das Hardware-Erkennungsmodul im Einstellungsmanager oder alternativ mit der MHWD-Kommandozeilen-Applikation konfigurieren. Mit diesen Tools können Sie z.B. grafische Treiber installieren, freie und proprietäre. - -Hilfe holen - -Obwohl CachyOS so konzipiert ist, dass es so viel wie möglich "von vornherein" funktioniert, behaupten wir nicht, dass es perfekt ist. Es kann Zeiten geben, in denen etwas schief läuft, Sie Fragen haben und den Wunsch haben, mehr zu erfahren oder es einfach nur nach Ihrem Geschmack zu personalisieren. Auf dieser Seite finden Sie Details zu einigen verfügbaren Ressourcen, die Ihnen helfen können! - -Suche im Web - -Vielleicht ist der erste Ort, an dem Sie nach allgemeiner Linux-Hilfe suchen, die Verwendung Ihrer bevorzugten Suchmaschine. Fügen Sie einfach Wörter wie 'Linux', 'CachyOS' oder 'Arch' in Ihre Suchanfrage ein. - -Da CachyOS auf Arch Linux basiert, gelten die für Arch entworfenen Anleitungen und Tipps in der Regel auch für CachyOS. - -Sehen Sie in den Foren nach - -Für spezifische Hilfe mit CachyOS haben wir ein spezielles Online-Forum, in dem Sie nach Themen suchen oder selbst eines erstellen können! Dies ist wahrscheinlich die nächstbeste Anlaufstelle für Zusammenarbeit, Diskussion und Hilfe. Bitten Sie um Hilfe, posten Sie Ihre Gedanken oder skizzieren Sie einige Vorschläge. Seien Sie nicht schüchtern! - -Das CachyOS-Forum ist in Unterforen für verschiedene Themen und Umgebungen unterteilt, bitte stellen Sie Ihre Anfrage an der entsprechenden Stelle! - -Schließen Sie sich uns im Telegram an - -Eine andere Möglichkeit ist, sich uns im Telegram. - -Melden Sie sich bei einer Mailingliste an - -Eine andere Möglichkeit, Hilfe zu bekommen, ist es, Fragen an die CachyOS-Mailingliste zu schicken (Sie können auch die Chronik nach vergangenen Diskussionen durchsuchen). Melden Sie sich einfach auf der Liste an, die Sie bevorzugen und folgen Sie den Anweisungen. Es gibt eine Liste mit verschiedenen Themen, schau einfach mal rein! - -Andere Resourcen - - - AUR Repository - Zusätzliche Software, die nicht in den regulären Repositories enthalten ist und aus den Quellen gebaut wurde. - - CachyOS Wiki - Offizielles Wiki für CachyOS. - - Arch Wiki - Offizielles Wiki für Arch. - -Vorschläge - -Haben Sie einen Vorschlag, wie wir CachyOS besser machen können? Haben Sie etwas gefunden, das Sie miteinbezogen haben möchten oder das Sie aushelfen möchten? Bitte lassen Sie es uns wissen, indem Sie ihren Vorschlag im Forum oder im IRC veröffentlichen. - -Danke schön! - -Wir wünschen Ihnen viel Spaß mit CachyOS! diff --git a/data/pages/de/release b/data/pages/de/release deleted file mode 100644 index 23d0c64..0000000 --- a/data/pages/de/release +++ /dev/null @@ -1,37 +0,0 @@ -Melawy Linux 23.10 - -Dies ist unser 10. Release im Jahr 2023. -Das Release ändert für systemd-boot die Standard-Verschlüsselungsmethode auf "luks2" und die Netzinstallation wurde aufgeräumt. -Es ist nun möglich, CachyOS-bezogene Pakete nicht zu installieren und sie haben nun ihre eigene Kategorie. -Wir haben auch einige größere Paket-Upgrades erhalten, wie llvm 16 und linux-cachyos 6.5.3. - -Derzeit testen wir auch eine neue Methode, um das nvidia-Modul bereitzustellen. Diese Methode wird "nvidia-dkms" ersetzen und das Modul wird vorkompiliert, um weitere Kompilierungen auf dem Benutzerrechner zu vermeiden. -Dies stellt auch sicher, dass der Kernel mit dem nvidia-Treiber kompiliert wird. -Wir werden noch einige Stabilitätstests durchführen und dies dann in zukünftige Versionen implementieren. - -Hier ist eine Zusammenfassung der Änderungen: - -Features: - -- systemd-boot: Standardmäßig auf luks2 -- netinstall: Bereitstellung einer eigenen Kategorie für CachyOS-Pakete -- Calamares mit Upstream synchronisiert -- Paketaktualisierungen: linux-cachyos 6.5.3, nvidia-utils 535.104.05, mesa 23.2.7 - -Fehlerbehebungen: - -- shellprocess_sdboot: Vermeiden Sie die Verwendung von "sudo", wenn Sie die Booteinträge während des Installationsprozesses erzeugen - -Sie finden den Download auf unseren Spiegelservern auf Sourceforge. - -https://mirror.cachyos.org/ISO/ -https://sourceforge.net/projects/cachyos-arch/files/ - -Wenn Sie uns unterstützen möchten, können Sie spenden, um unsere monatlichen Serverkosten zu decken. - -https://paypal.me/pttrr -https://www.patreon.com/CachyOS - -Vielen Dank für Ihre Unterstützung! - -**Das CachyOS-Team** diff --git a/data/pages/pl/involved b/data/pages/pl/involved deleted file mode 100644 index 6a66861..0000000 --- a/data/pages/pl/involved +++ /dev/null @@ -1,37 +0,0 @@ - Dzięki za wsparcie - -CachyOS Linux otrzymuje ogromne wsparcie od swojej społeczności użytkowników i chcielibyśmy podziękować każdemu wspierającemu za udział. Rozwijamy się w stałym tempie, a dzięki Tobie nasza dystrybucja z każdym dniem jest coraz lepsza. - -Bardzo łatwo jest coś zmienić. W zależności od twojego zestawu umiejętności, twojej dostępności możesz pomóc CachyOS na jeden lub więcej z następujących sposobów: - - Wsparcie i promocja - - Rozpowszechnianie informacji - -Jeśli lubisz CachyOS, daj znać innym. Napisz recenzję i opublikuj ją na distrowatch.com. Porozmawiaj o tym ze swoimi przyjaciółmi i ludźmi wokół ciebie. - - Dołączanie do społeczności - -CachyOS to nie tylko system operacyjny, ale także dynamiczna społeczność ludzi, którzy cieszą się, gromadzą i wchodzą w interakcje z wolnym i otwartym projektem. Niezależnie od tego, czy chodzi o pomaganie innym w rozwiązywaniu problemów, sprawianie, że czują się mile widziani, czy po prostu spotykając się i rozmawiając z innymi użytkownikami CachyOS, zalecamy dołączenie do społeczności i udział w ulepszaniu CachyOS. - - Pomaganie innym - -Jeśli masz trochę wolnego czasu i chcesz pomóc innym użytkownikom w rozwiązywaniu problemów technicznych, powinieneś poważnie rozważyć czytanie forów i / lub dołączenie do kanału IRC i pomoc innym użytkownikom CachyOS w rozwiązywaniu problemów, które wiesz, jak naprawić. - - Wkład do projektu - - Raporty o błędach - -Jeśli zauważyłeś coś, co nie działa poprawnie podczas korzystania z CachyOS, daj nam znać. Problem, który odkryłeś, prawdopodobnie wpłynie również na innych. Im szybciej się o tym dowiemy, tym szybciej będziemy mogli to naprawić. - - Nowe pomysły - -Zdecydowana większość ulepszeń zawartych w każdym wydaniu pochodzi od społeczności. Jeśli Twoim zdaniem brakuje czegoś, co można zrobić lepiej, poinformuj nas o tym. Niezależnie od tego, czy jest to dołączenie brakującego sterownika sprzętu, czy aplikacji, która powinna być częścią standardowej instalacji, czy też masz inne pomysły, jak ulepszyć CachyOS, zawsze jesteśmy zainteresowani ich usłyszeniem. - - Grafika - -Jeśli masz talent do projektowania graficznego i chcesz wnieść swój wkład w projekt, prześlij nam swoje kreacje i grafiki. Niezależnie od tego, czy jest to prosta tapeta, zestaw ikon, ekran powitalny, czy nawet nowe logo, zawsze jesteśmy zainteresowani usłyszeniem od Ciebie o nowej grafice. - - Kod - -Większość naszego kodu jest pisana w QT, C ++, Pythonie, HTML5 / CSS i BASH. Używamy również Gita do kontroli wersji i PKGBUILD do pakowania. Jeśli czujesz się komfortowo z tymi technologiami, nie wahaj się rzucić okiem na kod. Jeśli myślisz, że możesz ulepszyć nasze aplikacje lub napisać nowe, nie wahaj się zasugerować łatek lub rozwidlić nasze repozytoria git. diff --git a/data/pages/pl/readme b/data/pages/pl/readme deleted file mode 100644 index a25c073..0000000 --- a/data/pages/pl/readme +++ /dev/null @@ -1,43 +0,0 @@ - Obsługa sprzętu - -CachyOS nie tylko obsługuje instalację wielu jąder (wybieranych z zaawansowanych opcji na ekranie startowym), ale także zapewnia dostęp do najnowszych jąder „bleeding edge”. Można to zrobić za pomocą modułu Jądro w graficznym menedżerze ustawień CachyOS lub za pomocą wiersza poleceń przy użyciu polecenia mhwd-kernel (CachyOS Hardware Detection). - -Te narzędzia CachyOS automatycznie zaktualizują nowo zainstalowane jądro wraz z wszystkimi modułami aktualnie używanymi z istniejącym jądrem. Na przykład, gdybyś zaktualizował jądro z 3.18 do 4.1, mhwd-kernel automatycznie zainstaluje kompilacje jądra 4.1 i wszystkie moduły używane z jądrem 3.18. Co ty na to! - -Możesz skonfigurować swój sprzęt za pomocą modułu wykrywania sprzętu w Menedżerze ustawień lub alternatywnie za pomocą aplikacji MHWD z linii komend. Za pomocą tych narzędzi możesz zainstalować na przykład sterowniki graficzne, bezpłatne i zastrzeżone. - - Uzyskiwanie pomocy - -Chociaż CachyOS jest zaprojektowany tak, aby działał jak najlepiej „po wyjęciu z pudełka”, nie twierdzimy, że jest idealny. Może się zdarzyć, że coś pójdzie nie tak, możesz mieć pytania i chcieć dowiedzieć się więcej lub po prostu chcesz dostosować CachyOS do swoich upodobań. Ta strona zawiera szczegółowe informacje na temat dostępnych zasobów, które mogą Ci pomóc! - - Szukaj w internecie - -Być może pierwszym miejscem, w którym należy szukać ogólnej pomocy dla systemu Linux, jest skorzystanie z ulubionej wyszukiwarki. Po prostu uwzględnij w zapytaniu słowa takie jak „Linux”, „CachyOS” lub „Arch”. - -Ponieważ CachyOS jest oparty na Arch Linux, przewodniki i porady zaprojektowane dla Arch zwykle dotyczą również CachyOS. - - Przeszukaj fora - -Aby uzyskać konkretną pomoc dotyczącą CachyOS, mamy dedykowane forum internetowe, na którym możesz wyszukiwać tematy lub tworzyć własne! Jest to prawdopodobnie kolejne najlepsze miejsce do współpracy, dyskusji i pomocy. Poproś o pomoc, podziel się swoimi przemyśleniami lub przedstaw kilka sugestii. Nie wstydź się! - -Forum CachyOS jest podzielone na pod-fora dla różnych tematów i środowisk, prosimy o wysłanie zapytania w odpowiednim miejscu! - - - Oficjalne Forum CachyOS - - Dołącz do nas na Telegram - -Inną opcją jest dołączenie do nas na Telegram. - - Inne zasoby - - - Repozytorium AUR - Dodatkowe oprogramowanie, którego nie ma w zwykłych repozytoriach, zbudowane ze źródeł. - - CachyOS Wiki - Oficjalna wiki CachyOS. - - Arch Wiki - Oficjalna wiki Arch. - - Sugestie - -Masz sugestię, jak możemy ulepszyć CachyOS? Znalazłeś coś, co chcesz uwzględnić, lub chcesz pomóc? Daj nam znać, publikując swoje sugestie na forum lub wpadnij na IRC. - -Dziękujemy! - -Mamy nadzieję, że spodoba Ci się CachyOS! diff --git a/data/pages/pl/release b/data/pages/pl/release deleted file mode 100644 index cbe9262..0000000 --- a/data/pages/pl/release +++ /dev/null @@ -1,37 +0,0 @@ -Melawy Linux 23.10 - -To nasze dziesiąte wydanie w 2023 roku. -Wydanie zmienia się dla systemd-Uruchom domyślną metodę szyfrowania na "luks2", a netinstall został oczyszczony. -Teraz Można nie instalować pakietów związanych z CachyOS i mają teraz własną kategorię. -Dostaliśmy również kilka dużych aktualizacji pakietów, takich jak llvm 16 i linux-cachyos 6.5.3. - -Obecnie testujemy również nową metodę dostarczania modułu nvidia. Ta metoda zastąpi "nvidia-dkms", a moduł zostanie wstępnie skompilowany, aby uniknąć dalszych kompilacji na komputerze użytkownika. -Daje to również pewność, że jądro kompiluje się ze sterownikiem nvidia. -Przeprowadzimy dalsze testy stabilności, a następnie wdrożymy to w przyszłych wydaniach. - -Oto podsumowanie zmian: - -Nowe funkcje: - -- systemd-boot: domyślnie luks2 -- netinstall: udostępnienie własnej kategorii Dla pakietów CachyOS -- Calamares zsynchronizowane z upstream -- Aktualizacje pakietów: linux-cachyos 6.5.3, nvidia-utils 535.104.05, mesa 23.2.7 - -Naprawy błędów: - -- shellprocess_sdboot: Unikaj używania "sudo" podczas generowania wpisów rozruchowych w procesie instalacji - -Pliki do pobrania można znaleźć na naszych serwerach lustrzanych lub sourceforge. - -https://mirror.cachyos.org/ISO/ -https://sourceforge.net/projects/cachyos-arch/files/ - -Jeśli chcesz nas wesprzeć, możesz przekazać darowiznę na pokrycie miesięcznych kosztów serwera. - -https://paypal.me/pttrr -https://www.patreon.com/CachyOS - -Dziękujemy za wsparcie! - -Zespół CachyOS diff --git a/data/preferences.json b/data/preferences.json index 82a1f23..ad6cca7 100644 --- a/data/preferences.json +++ b/data/preferences.json @@ -5,17 +5,21 @@ "desktop_path": "/usr/share/applications/melawy-welcome.desktop", "installer_path": "/usr/bin/calamares", "live_path": "/run/archiso/bootmnt/arch", + "locale_path": "/usr/share/locale/", "logo_path": "/usr/share/icons/hicolor/scalable/apps/", "save_path": "~/.config/melawy-welcome.json", + "ui_path": "/usr/share/melawy-welcome/ui/melawy-welcome.glade", + "style_path": "/usr/share/melawy-welcome/ui/style.css", "urls": { - "development": "https://github.com/Melawy", - "software": "https://git.melawy.ru/Melawy-Linux/PKGBUILD", - "donate": "https://melawy.ru/donate", + "wiki": "https://wiki.archlinux.org", "forum": "https://t.me/Melawy_chat", + "software": "https://git.melawy.ru/Melawy-Linux", + "development": "https://github.com/Melawy", + "donate": "https://melawy.ru/donate", + "website": "https://melawy.ru", + "youtube": "https://youtube.com/@Melawy", "telegram": "https://t.me/Melawy_news", "discord": "https://discord.gg/725zXx7RhJ", - "reddit": "https://melawy.ru", - "twitter": "https://melawy.ru", - "wiki": "https://github.com/Melawy" + "github": "https://github.com/Melawy" } } diff --git a/i18n/de/melawy_welcome.ftl b/i18n/de/melawy_welcome.ftl deleted file mode 100644 index 98e5b84..0000000 --- a/i18n/de/melawy_welcome.ftl +++ /dev/null @@ -1,66 +0,0 @@ -# About dialog -about-dialog-title = Melawy Welcome -about-dialog-comments = Willkommensdialog für Melawy Linux - -# Tweaks page -tweaks = Tweaks -fixes = Fixes -applications = Anwendungen -removed-db-lock = Pacman db lock wurde entfernt! -lock-doesnt-exist = Pacman db lock existiert nicht! -orphans-not-found = Keine verwaisten Pakete gefunden! -package-not-installed = Das Paket '{$package_name}' wurde nicht installiert! - -# Dns Connections page -dns-settings = DNS Einstellung -select-connection = Verbindung auswählen: -select-dns-server = DNS-Server auswählen: -apply = Anwenden -reset = Reset -dns-server-changed = DNS Server wurde erfolgreich geändert! -dns-server-failed = DNS-Server konnte nicht eingestellt werden! -dns-server-reset = DNS-Server wurde zurückgesetzt! -dns-server-reset-failed = DNS-Server konnte nicht zurückgesetzt werden! - -# Tweaks page (tweaks) -tweak-enabled-title = {$tweak} aktiviert - -# Tweaks page (fixes) -remove-lock-title = Entferne Datenbanksperre -reinstall-title = Alle Pakete neu installieren -refresh-keyrings-title = Keyring aktualisieren -update-system-title = System-Aktualisierung -remove-orphans-title = Nicht verwendete Pakete entfernen -clear-pkgcache-title = Paket-Cache löschen -rankmirrors-title = Rank Mirrors -dnsserver-title = DNS-Server ändern - -# Main Page (buttons) -button-about-tooltip = Über -button-web-resource-tooltip = Web-Ressource -button-development-label = Entwicklung -button-software-label = Software -button-donate-label = Spenden -button-forum-label = Forum -button-installer-label = Installation starten -button-involved-label = Mitmachen -button-readme-label = Lies mich -button-release-info-label = Versionshinweise -button-wiki-label = Wiki - -# Main Page (sections) -section-docs = DOKUMENTATION -section-installer = INSTALLATION -section-support = UNTERSTÜTZUNG -section-project = PROJEKT - -# Main Page (body) -offline-error = Die Online-Installation kann nicht gestartet werden! Keine Internetverbindung -tweaksbrowser-label = Apps/Tweaks -appbrowser-label = Apps installieren -launch-start-label = Beim Systemstart ausführen -welcome-title = Willkommen bei Melawy Linux! -welcome-body = - Danke, dass Sie sich unserer Community anschließen! - - Wir, die Melawy Linux-Entwickler, hoffen, dass Sie es genauso sehr genießen werden Melawy Linux zu benutzen, wie wir es genießen, es zu entwickeln. Die Links unten werden Ihnen helfen sich in Ihrem neuen Betriebssystem zurechtzufinden. Genießen Sie diese Erfahrung und zögern Sie nicht Ihr Feedback an uns zu senden. diff --git a/i18n/pl/melawy_welcome.ftl b/i18n/pl/melawy_welcome.ftl deleted file mode 100644 index eb13324..0000000 --- a/i18n/pl/melawy_welcome.ftl +++ /dev/null @@ -1,66 +0,0 @@ -# About dialog -about-dialog-title = Melawy Welcome -about-dialog-comments = Ekran powitalny Melawy Linux - -# Tweaks page -tweaks = Usprawnienia -fixes = Poprawki -applications = Programy -removed-db-lock = Blokada bazy pacmana została usunięta! -lock-doesnt-exist = Blokada bazy pacmana nie istnieje! -orphans-not-found = Nie znaleziono pakietów osieroconych! -package-not-installed = Pakiet '{$package_name}' nie został zainstalowany! - -# Dns Connections page -dns-settings = Ustawienia DNS -select-connection = Wybierz połączenie: -select-dns-server = Wybierz serwer DNS: -apply = Zastosuj -reset = Resetuj -dns-server-changed = Serwer DNS został pomyślnie zmieniony! -dns-server-failed = Nie udało się ustawić serwera DNS! -dns-server-reset = Serwer DNS został zresetowany! -dns-server-reset-failed = Nie udało się zresetować serwera DNS! - -# Tweaks page (tweaks) -tweak-enabled-title = {$tweak} włączony - -# Tweaks page (fixes) -remove-lock-title = Usuń blokadę bazy -reinstall-title = Przeinstaluj wszystkie pakiety -refresh-keyrings-title = Odśwież klucze -update-system-title = Aktualizuj system -remove-orphans-title = Usuń pakiety osierocone -clear-pkgcache-title = Wyczyść pamięć podręczną pakietów -rankmirrors-title = Uszereguj serwery -dnsserver-title = Zmień serwer DNS - -# Main Page (buttons) -button-about-tooltip = O programie -button-web-resource-tooltip = Zasób sieciowy -button-development-label = Rozwój oprogramowania -button-software-label = Software -button-donate-label = Wesprzyj -button-forum-label = Forum -button-installer-label = Uruchom instalator -button-involved-label = Zaangażuj się -button-readme-label = Czytaj to -button-release-info-label = Informacje o wydaniu -button-wiki-label = Wiki - -# Main Page (sections) -section-docs = DOKUMENTACJA -section-installer = INSTALACJA -section-support = WSPARCIE -section-project = PROJEKT - -# Main Page (body) -offline-error = Instalacja online niemożliwa! Brak połączenia internetowego -tweaksbrowser-label = Programy/Usprawnienia -appbrowser-label = Instalator Programów -launch-start-label = Uruchamiaj przy starcie -welcome-title = Witaj w Melawy Linux! -welcome-body = - Dziękujemy za dołączenie do naszej społeczności! - - My, programiści Melawy Linux, mamy nadzieję, że używanie Melawy Linux przyniesie Ci tyle radości ile nam jego tworzenie. Poniższe odnośniki pomogą Ci w rozpoczęciu używania nowego systemu operacyjnego. Życzymy miłych wrażeń, nie wahaj się podzielić się z nami swoją opinią. diff --git a/i18n/ru/melawy_welcome.ftl b/i18n/ru/melawy_welcome.ftl index 1dd14e2..b6d0643 100644 --- a/i18n/ru/melawy_welcome.ftl +++ b/i18n/ru/melawy_welcome.ftl @@ -8,6 +8,7 @@ fixes = Исправления applications = Приложения removed-db-lock = Блокировка БД Pacman была снята! lock-doesnt-exist = Pacman БД не заблокирован! +orphans-not-found = Потерянные пакеты не найдены! package-not-installed = Пакет '{$package_name}' не был установлен! # Dns Connections page diff --git a/push.sh b/push.sh index a9a24d8..345883e 100755 --- a/push.sh +++ b/push.sh @@ -1,3 +1,5 @@ #!/bin/bash git add . && git commit -m "Update" && git push + +echo "Ready" diff --git a/src/scripts/amd_drivers.sh b/src/scripts/amd_drivers.sh new file mode 100755 index 0000000..c6ef652 --- /dev/null +++ b/src/scripts/amd_drivers.sh @@ -0,0 +1,98 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 3 +echo "###############################################################################" +echo "# XeroLinux Free (Open Source) Driver Installer #" +echo "# #" +echo "# !!! ATTENTION !!! #" +echo "# #" +echo "# This Will Install GPU Drivers For Any Intel or AMD GPUs #" +echo "# #" +echo "# Carefully Select The Appropriate Drivers. #" +echo "###############################################################################" +tput sgr0 +echo +echo "Hello $USER, Please Select An Option Below." +echo +echo "################# GPU Checker #################" +echo +echo "1. Check Which GPU You Have." +echo +echo "############# Open Source Drivers #############" +echo +echo "2. AMD GPU Free." +echo "3. ATI (Radeon HD) GPU Free." +echo +echo "Type Your Selection. To Exit, just close Window." +echo + +while :; do + +read CHOICE + +case $CHOICE in + + 1 ) + echo + echo "##########################################" + echo " Checking Installed GPU " + echo "##########################################" + echo + echo "Your system has the following GPU(s)" + echo + sleep 3 + lspci -x | grep VGA + sleep 3 + echo + glxinfo | grep -E "OpenGL vendor|OpenGL renderer*" + sleep 6 + echo + echo "#######################################" + echo " Done ! " + echo "#######################################" + clear && sh /usr/share/xerowelcome/scripts/amd_drivers.sh + ;; + + 2 ) + echo + echo "##########################################" + echo " Installing AMD GPU Free Drivers " + echo "##########################################" + sleep 3 + sudo pacman -S --noconfirm xf86-video-amdgpu libvdpau-va-gl vulkan-swrast libva-vdpau-driver libclc vulkan-radeon lib32-vulkan-radeon lib32-amdvlk amdvlk vulkan-icd-loader lib32-vulkan-icd-loader egl-wayland + sudo mkinitcpio -P + sleep 3 + echo "#######################################" + echo " Done ! " + echo "#######################################" + exit + ;; + + 3 ) + echo + echo "##########################################" + echo " Installing ATI GPU Free Drivers " + echo "##########################################" + sleep 3 + sudo pacman -S --noconfirm xf86-video-ati vulkan-radeon lib32-vulkan-radeon libvdpau-va-gl vulkan-swrast libva-vdpau-driver libclc + sudo mkinitcpio -P + sleep 3 + echo "#######################################" + echo " Done ! " + echo "#######################################" + exit + + ;; + + * ) + echo "#################################" + echo " Choose the correct number " + echo "#################################" + ;; +esac +done diff --git a/src/scripts/apply_defaults.sh b/src/scripts/apply_defaults.sh new file mode 100755 index 0000000..81f6dd5 --- /dev/null +++ b/src/scripts/apply_defaults.sh @@ -0,0 +1,168 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 1 +echo "###############################################################################" +echo "# !!! XeroLinux Reset Tool !!! #" +echo "# #" +echo "# Having Issues With Messed Up Layout or Settings ? #" +echo "# #" +echo "# This Will Restore OOB Defaults. Layout WILL BE RESET #" +echo "###############################################################################" +tput sgr0 +echo +echo "Hello $USER, which Edition are you using ?" +echo +echo "1. XeroLinux KDE Plasma." +echo "2. XeroLinux GNOME Spin." +echo "3. XeroLinux XFCE Spin." +echo +#echo "4. Exit" +echo +echo "Please Select an Option..." +echo + +read CHOICE + +case $CHOICE in + + 1 ) + echo +# echo "Option currently unavailable. Please check back soon..." + tput setaf 4 + read -p "Final Warning, This Will Undo Your Customizations, Proceed ? (y/n): " proceed_response + tput sgr0 + echo + if [[ $proceed_response == "y" || $proceed_response == "yes" ]]; then + echo + echo "###################################" + echo " Restoring/Applying KDE defaults " + echo "###################################" + sleep 2 + echo + echo "Git Cloning Default Settings Repo" + cd ~ && git clone https://github.com/xerolinux/xero-layan-git && cd xero-layan-git/ + sleep 2 + echo + echo "Running Install Script..." + sh install.sh + echo + rm -Rf ~/xero-layan-git/ + sleep 2 + # Prompt the user to reboot + tput setaf 4 + read -p "Customization Restored. Reboot recommended. Reboot now? (y/n): " reboot_response + tput setaf 0 + echo + # Check the user's response + if [[ $reboot_response == "y" || $reboot_response == "yes" ]]; then + sudo reboot + else + echo + tput setaf 4 + echo "Please manually reboot your system to apply changes." + tput sgr0 + fi + else + echo "Restoration cancelled." + exit 0 + fi + + ;; + + 2 ) + echo + tput setaf 4 + read -p "Final Warning, This Will Undo Your Customizations, Proceed ? (y/n): " proceed_response + tput sgr0 + echo + if [[ $proceed_response == "y" || $proceed_response == "yes" ]]; then + echo + echo "###################################" + echo " Restoring/Applying Gnome defaults " + echo "###################################" + sleep 2 + echo + echo "Creating backup & Applying custom Settings" + echo "##########################################" + cp -Rf ~/.config ~/.config-backup-$(date +%Y.%m.%d-%H.%M.%S) && cp -Rf /etc/skel/. ~ && sudo cp -Rf /etc/skel/. /root/ + rm ~/.config/autostart/dconf-load.desktop + sh /usr/local/bin/xdconf + sleep 2 + echo + # Prompt the user to reboot + tput setaf 4 + read -p "Customization Restored. Reboot recommended. Reboot now? (y/n): " reboot_response + tput setaf 0 + echo + # Check the user's response + if [[ $reboot_response == "y" || $reboot_response == "yes" ]]; then + sudo reboot + else + echo + tput setaf 4 + echo "Please manually reboot your system to apply changes." + tput sgr0 + fi + else + echo "Restoration cancelled." + exit 0 + fi + + ;; + + 3 ) + echo + tput setaf 4 + read -p "Final Warning, This Will Undo Your Customizations, Proceed ? (y/n): " proceed_response + tput sgr0 + echo + if [[ $proceed_response == "y" || $proceed_response == "yes" ]]; then + echo + echo "###################################" + echo " Restoring/Applying Gnome defaults " + echo "###################################" + sleep 2 + echo + echo "Creating Backups of ~/.config folder" + echo "#####################################" + cp -Rf ~/.config ~/.config-backup-$(date +%Y.%m.%d-%H.%M.%S) + sleep 2 + echo "###################################" + echo " Restoring XFCE defaults " + echo "###################################" + sleep 2 + cp -rf /etc/skel/. ~ + sudo cp -Rf /etc/skel/. /root/ + sleep 2 + # Prompt the user to reboot + tput setaf 4 + read -p "Customization Restored. Reboot recommended. Reboot now? (y/n): " reboot_response + tput setaf 0 + echo + # Check the user's response + if [[ $reboot_response == "y" || $reboot_response == "yes" ]]; then + sudo reboot + else + echo + tput setaf 4 + echo "Please manually reboot your system to apply changes." + tput sgr0 + fi + else + echo "Restoration cancelled." + exit 0 + fi + + ;; + + * ) + echo "#################################" + echo "Choose the correct number" + echo "#################################" + ;; +esac diff --git a/src/scripts/dbox.sh b/src/scripts/dbox.sh new file mode 100755 index 0000000..b457a8d --- /dev/null +++ b/src/scripts/dbox.sh @@ -0,0 +1,163 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 3 +echo "#################################################" +echo "# XeroLinux Distrobox Tool. #" +echo "#################################################" +tput sgr0 +echo +echo "Hello $USER, what would you like to do today ?" +echo +echo "################## Distrobox & Docker Setup ##################" +echo +echo "i. Install/Configure Distrobox & Docker (Automatically)." +echo "d. Distrobox Documentaion on Github (Will open browser)." +echo +echo "################### Top 5 Container Images ###################" +echo +echo "1. Debian." +echo "2. Fedora." +echo "3. Void Linux." +echo "4. OpenSuse Tumbleweed." +echo "5. Gentoo Linux (For Advanced Users)." +echo +echo "u. Update all Containers (Might take a while)." +echo +echo "Type Your Selection. To Exit, just close Window." +echo + +while :; do + +read CHOICE + +case $CHOICE in + + i ) + echo + sleep 2 + echo "Installing packages..." + echo + sudo pacman -S --noconfirm distrobox docker docker-compose + sleep 2 + echo + echo "Enabling Services & Adding you to group" + echo + sudo systemctl enable --now docker + sudo usermod -aG docker $USER + sleep 2 + echo + # Prompt the user to reboot + tput setaf 1 + read -p "All done. Reboot is required. Reboot now? (y/n): " reboot_response + tput setaf 0 + echo + # Check the user's response + if [[ $reboot_response == "y" || $reboot_response == "yes" ]]; then + sudo reboot + else + echo + tput setaf 2 + echo "Please manually reboot your system before using Distrobox." + sleep 6 + clear && sh /usr/share/xerowelcome/scripts/dbox.sh + tput sgr0 + fi + + ;; + + d ) + echo + sleep 2 + echo "Opening Distrobox Documentation In Your Default Browser..." + echo + xdg-open 'https://github.com/89luca89/distrobox/tree/main/docs#quick-start' &>/dev/null; + sleep 6 + echo + clear && sh /usr/share/xerowelcome/scripts/dbox.sh + + ;; + + 1 ) + echo + sleep 2 + echo "Pulling Latest Debian Image with label XeroDeb, Please Wait..." + echo + distrobox create -i quay.io/toolbx-images/debian-toolbox:latest -n "XeroDeb" + sleep 10 + echo + clear && sh /usr/share/xerowelcome/scripts/dbox.sh + + ;; + + 2 ) + echo + sleep 2 + echo "Pulling Latest Fedora Image with label XeroDora, Please Wait..." + echo + distrobox create -i registry.fedoraproject.org/fedora-toolbox:latest -n "XeroDora" + sleep 10 + echo + clear && sh /usr/share/xerowelcome/scripts/dbox.sh + + ;; + + 3 ) + echo + sleep 2 + echo "Pulling Latest Void Linux Image with label XeroVoid, Please Wait..." + echo + distrobox create -i ghcr.io/void-linux/void-linux:latest-full-x86_64 -n "XeroVoid" + sleep 10 + echo + clear && sh /usr/share/xerowelcome/scripts/dbox.sh + + ;; + + 4 ) + echo + sleep 2 + echo "Pulling Latest OpenSuse Tumbleweed Image with label XeroSuse..." + echo + distrobox create -i registry.opensuse.org/opensuse/tumbleweed:latest -n "XeroSuse" + sleep 10 + echo + clear && sh /usr/share/xerowelcome/scripts/dbox.sh + + ;; + + 5 ) + echo + sleep 2 + echo "Pulling Latest Gentoo Linux Image with label XeroGen..." + echo + distrobox create -i docker.io/gentoo/stage3:latest -n "XeroGen" + sleep 10 + echo + clear && sh /usr/share/xerowelcome/scripts/dbox.sh + + ;; + + u ) + echo + sleep 2 + echo "Upgrading all Containers Please Wait..." + echo + distrobox-upgrade --all + sleep 3 + echo + clear && sh /usr/share/xerowelcome/scripts/dbox.sh + + ;; + + * ) + echo "#################################" + echo " Choose the correct number " + echo "#################################" + ;; +esac +done diff --git a/src/scripts/firewalled.sh b/src/scripts/firewalled.sh new file mode 100755 index 0000000..164b925 --- /dev/null +++ b/src/scripts/firewalled.sh @@ -0,0 +1,80 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 3 +echo "###############################################################################" +echo "# XeroLinux Firewall Enabler #" +echo "###############################################################################" +tput sgr0 +echo +echo "Hello $USER, which Edition are you using ?" +echo +echo "########## Edition Selection ##########" +echo +echo "1. XeroLinux KDE Plasma." +echo "2. XeroLinux GNOME (GUFW)." +echo "3. XeroLinux XFCE (FireJail)." +echo +echo "Type Your Selection. To Exit, just close Window." +echo + +while :; do + +read CHOICE + +case $CHOICE in + + 1 ) + echo + echo "###########################################" + echo " Adding/Enabling Firewalld " + echo "###########################################" + sleep 3 + sudo pacman -S --noconfirm plasma-firewall firewalld + sudo systemctl enable --now firewalld + sleep 3 + echo "###########################################" + echo " Done ! Check Status from KDE Settings " + echo "###########################################" + sleep 6 + ;; + + 2 ) + echo + echo "############################################" + echo " Installing Firewall for Gnome " + echo "############################################" + sleep 3 + sudo pacman -S --noconfirm gufw ufw + sleep 3 + echo "###############################################" + echo " Done ! Configure Firewall From The Gufw App " + echo "###############################################" + sleep 6 + ;; + + 3 ) + echo + echo "########################################" + echo " Installing Firewall for XFCE " + echo "########################################" + sleep 3 + sudo pacman -S --noconfirm firejail firetools + sleep 3 + echo "###############################################" + echo " Done ! Configure Firewall From FireJail App " + echo "###############################################" + sleep 6 + ;; + + * ) + echo "#################################" + echo " Choose the correct number " + echo "#################################" + ;; +esac +done diff --git a/src/scripts/fix_keys.sh b/src/scripts/fix_keys.sh new file mode 100755 index 0000000..6a58330 --- /dev/null +++ b/src/scripts/fix_keys.sh @@ -0,0 +1,51 @@ +#!/usr/bin/bash + +#set -e +echo "#################################" +echo "# Fixing Pacman Databases.. #" +echo "#################################" +sleep 2 +echo +echo "##################################" +echo "# Deleting Existing Keys.. #" +echo "##################################" + +sudo rm /var/lib/pacman/sync/* + +sleep 2 +echo +echo "#################################" +echo "# Deleting gnupg files.. #" +echo "#################################" + +sudo rm -r /etc/pacman.d/gnupg/* + +sleep 2 +echo +echo "#################################" +echo "# Populating Keys.. #" +echo "#################################" + +sudo pacman-key --init && sudo pacman-key --populate + +sleep 2 +echo +echo "#################################" +echo "# Adding Ubuntu keyserver.. #" +echo "#################################" + +echo "keyserver hkp://keyserver.ubuntu.com:80" | sudo tee --append /etc/pacman.d/gnupg/gpg.conf + +sleep 2 +echo +echo "##################################" +echo "# Updating ArchLinux Keyring.. #" +echo "##################################" + +sudo pacman -Sy --noconfirm archlinux-keyring + +sleep 2 +echo +echo "##################################" +echo "# Done ! Try Update now & Report #" +echo "##################################" diff --git a/src/scripts/hw_service.sh b/src/scripts/hw_service.sh new file mode 100755 index 0000000..b422b57 --- /dev/null +++ b/src/scripts/hw_service.sh @@ -0,0 +1,64 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 3 +echo "###############################################################################" +echo "# XeroLinux Hardware Service #" +echo "###############################################################################" +tput sgr0 +echo +echo "Hello $USER, What shall we do today ?" +echo +echo "1. List Hardware Config via inxi." +echo "2. Probe & Upload System Config for Sharing." +echo +echo "Type Your Selection. To Exit, just close Window." +echo + +while :; do + +read CHOICE + +case $CHOICE in + + 1 ) + echo + echo "###########################################" + echo " Check System Config via inxi " + echo "###########################################" + sleep 2 + inxi -b + sleep 2 + echo "###########################################" + echo " Share Screenshot for help " + echo "###########################################" + + ;; + + 2 ) + echo + echo "############################################" + echo " Probing config & Uploading " + echo "############################################" + echo + sleep 2 + sudo -E hw-probe -all -upload + sleep 2 + echo + echo "###############################################" + echo " Ctrl+Click to open link for sharing " + echo "###############################################" + + ;; + + * ) + echo "#################################" + echo " Choose the correct number " + echo "#################################" + ;; +esac +done diff --git a/src/scripts/init_snapper.sh b/src/scripts/init_snapper.sh new file mode 100755 index 0000000..6af44da --- /dev/null +++ b/src/scripts/init_snapper.sh @@ -0,0 +1,47 @@ +#!/usr/bin/bash +#set -e + +RED='\033[0;31m' +GREEN='\033[0;32m' +BLUE='\033[0;34m' +NC='\033[0m' + +echo "#####################################" +echo " XeroLinux Snapper Setup " +echo "#####################################" +echo +# Get current user's username +username=$(whoami) + +# Welcome message +echo -e "${GREEN}Hi, $username! Checking for BTRFS, if so BTRFS Assistant & Snapper tools will be installed.${NC}" +echo +sleep 3 +# Check if the file system is BTRFS +if lsblk -f | grep -q "btrfs"; then + echo -e "${GREEN}BTRFS partitions found. Adding Necessary Modules, Installing Packages & Initializing Root/Home.r.${NC}" + echo + echo "Installing Packages & Updating mkinitcpio configuration" + sudo pacman -Sy --noconfirm btrfs-assistant btrfs-du snapper-support btrfsmaintenance + echo + sleep 3 + sudo sed -i 's/MODULES="\(.*\)"/MODULES="\1 btrfs"/; s/crc32c//g' /etc/mkinitcpio.conf + sudo mkinitcpio -P + sleep 3 + echo + echo "Initializing snapper for root subvolume" + sudo snapper -c root create-config / + sudo snapper -c root create + echo + sleep 3 + echo "Initializing snapper for home subvolume" + sudo snapper -c home create-config /home + sudo snapper -c home create + echo + sleep 3 + echo -e "${BLUE}Snapper installed and initialized. Reboot required.${NC}" + echo +else + echo -e "${RED}No BTRFS Partitions found. Exiting...${NC}" + exit 1 +fi diff --git a/src/scripts/iso_builder.sh b/src/scripts/iso_builder.sh new file mode 100755 index 0000000..72f6a2b --- /dev/null +++ b/src/scripts/iso_builder.sh @@ -0,0 +1,107 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 3 +echo "###############################################################################" +echo "# XeroLinux ISO Builder #" +echo "###############################################################################" +tput sgr0 +echo +echo "Hello $USER, which ISO would you like to build today ?" +echo +#echo "Please close this window, thanks..." +echo "########## Edition Selection ##########" +echo +echo "1. XeroLinux KDE Plasma." +echo "2. XeroLinux GNOME Spin." +echo "3. XeroLinux XFCE Spin." +echo +echo "Type Your Selection. To Exit, just close Window." +echo + +while :; do + +read CHOICE + +case $CHOICE in + + 1 ) + echo +# echo "Option currently unavailable. Will be back once optimized for Gnome 45..." + echo "###########################################" + echo " Building XeroLinux KDE Flagship " + echo "###########################################" + echo + sleep 3 + cd ~ && git clone https://github.com/xerolinux/xero_iso.git + sleep 3 + echo + cd ~/xero_iso/ && ./build.sh + sleep 3 + echo + cd ~ && rm -rf ~/xero_iso/ + echo "###########################################" + echo " Done ! Check Home Folder for ISO " + echo "###########################################" + sleep 3 + clear && sh /usr/share/xerowelcome/scripts/iso_builder.sh + + ;; + + 2 ) + echo +# echo "Option currently unavailable. Will be back once optimized for Gnome 45..." + echo "###########################################" + echo " Building XeroLinux Gnome Spin " + echo "###########################################" + echo + sleep 3 + cd ~ && git clone https://github.com/xerolinux/xero_g_iso.git + sleep 3 + echo + cd ~/xero_g_iso/ && ./build.sh + sleep 3 + echo + cd ~ && rm -rf ~/xero_g_iso/ + echo "###########################################" + echo " Done ! Check Home Folder for ISO " + echo "###########################################" + sleep 3 + clear && sh /usr/share/xerowelcome/scripts/iso_builder.sh + + ;; + + 3 ) + echo +# echo "Option currently unavailable. Will be back once optimized for Gnome 45..." + echo "###########################################" + echo " Building XeroLinux XFCE Spin " + echo "###########################################" + echo + sleep 3 + cd ~ && git clone https://github.com/xerolinux/xero_xfce_iso.git + sleep 3 + echo + cd ~/xero_xfce_iso/ && ./build.sh + sleep 3 + echo + cd ~ && rm -rf ~/xero_xfce_iso/ + echo "###########################################" + echo " Done ! Check Home Folder for ISO " + echo "###########################################" + sleep 3 + clear && sh /usr/share/xerowelcome/scripts/iso_builder.sh + + ;; + + * ) + echo "#################################" + echo " Choose the correct number " + echo "#################################" + ;; +esac +done diff --git a/src/scripts/nVidia_drivers.sh b/src/scripts/nVidia_drivers.sh new file mode 100755 index 0000000..f2966f6 --- /dev/null +++ b/src/scripts/nVidia_drivers.sh @@ -0,0 +1,377 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Extensive modifications by: vlk (https://github.com/REALERvolker1) +# Website : http://xerolinux.xyz +################################################################################################################## + +# Set the window title to something pleasant +echo -en "\033]2;XeroLinux Nvidia Setup\007" +# Attempt to fix on Konsole +echo -ne "\033]30;XeroLinux Nvidia Setup\007" + +# set to 1 to remove dxvk-bin in the driver uninstall function +XEROLINUX_REMOVE_DXVK_BIN=0 # 1 + +shopt -s checkwinsize +( + : # curse you, shfmt + : +) +# define some useful characters that are hard to type +BOLD="" +RESET="" +# TAB=$'\t' # make shellcheck happy +LF=$'\n' + +_print_header() { + local surround htx i surround fsur width_pad color + local vert_pad=$'\n' + local -i width + local -i halfwidth + local -i i_width + local -a prints=() + + for i in "$@"; do + i_val="${i#*=}" # preprocess + case "$i" in + '--width='*) + width="$i_val" + ;; + '--surround_char='*) + ((${#i_val} == 1)) && surround="$i_val" + ;; + '--full-surround') # if you want to have the text surrounded + fsur=true + ;; + '--no-vertical-pad') + vert_pad='' + ;; + '--color='*) + color="$i_val" + ;; + *) + prints+=("$i") + ;; + esac + done + + ((${#surround} == 1)) || surround='#' # if the surround character is not 1 character long, set it to default + ((width > 3)) || width="$COLUMNS" # make sure width is a number, and it is enough to do fun things with later + htx="$(printf "\e[1${color:+;$color}m%${width}s\e[0m" '')" + htx="${htx// /$surround}" # first print a bunch of spaces of the desired width, then replace those spaces with the surround character + if ((${#fsur})); then + fsur="\e[1;${color:+;$color}m${surround}" # fsur is dual-purpose. If it is set, then turn it from a bool into a fmt string + width="$((width - 2))" # make sure the width is small enough to be completely surrounded + fi + ((width % 2)) && width_pad=' ' # pad width with a space on one side if it is not an even number + halfwidth="$((width / 2))" # precompute half the width (as an integer) + + echo "${vert_pad:-}$htx" + for i in "${prints[@]}"; do + i_width="$((${#i} / 2))" # character count of $i, divided by two + # if fsur is not set, set it to an empty string. Pad the width in spaces to be centered + printf "${fsur:=}\e[${color:-0}m%$((i_width + halfwidth))s%$((halfwidth - i_width))s${width_pad:=}${fsur:-}\n" "$i" + done + echo "$htx${vert_pad:-}" +} + +_pause_for_readability() { + local delay="${1:?Error, a period of time to delay is required!}" + echo -en "\e[2m(Pausing $delay seconds for readability)\e[0m" + # [[ ${1:-} =~ ^([0-9]+)$ ]] && delay="${1:-}" + # read -r -t "$delay" -p "Press RETURN to skip the $delay-second delay..." delay + read -r -t "$delay" + echo -en "\e[2K\r" # Erase the text and return cursor position to normal +} + +_wayland_setup() { + local sudocmd prompt_str REBOOT_CHOICE dkms_pkg i + if [[ ${1:-} == '--open' ]]; then + dkms_pkg="nvidia-open-dkms" + _print_header \ + 'Installing Experimental Open-dkms Drivers' \ + '' \ + 'Provides Experimental Open-dkms Drivers' \ + 'Limited to Turing Series GPUs & Up' + + printf '%s\n' 'This option installs the latest open-source nVidia kernel modules.' \ + 'Recommended for tinkering and testing' \ + "${BOLD}Warning${RESET}: Only compatible with ${BOLD}Turing+${RESET} GPUs$RESET" + else + dkms_pkg="nvidia-dkms" + _print_header \ + 'Installing Clean Vanilla Drivers (NFB)' \ + '' \ + 'Provides Clean Vanilla Drivers' \ + 'Limiting you to only 900 Series & Up' + + printf '%s\n' 'This option installs the latest proprietary kernel modules.' \ + 'Recommended for most use cases' + fi + _pause_for_readability 5 + local should_install_cuda + _print_header --width=55 'Do you want to include CUDA for Machine Learning?' \ + "${BOLD}WARNING${RESET}: This takes ${BOLD}4.3${RESET} GiB of disk space!!!" + read -r -p "Do you want to install Cuda ? [y/N] > " should_install_cuda + + # if we do not have sudo perms, warn the user. Redirect all output (stdout, stderr, etc) to /dev/null + if ((${#DRY})); then + sudocmd='echo sudo' + # prompt_str="${BOLD}[Dry run]${RESET} " + else + sudocmd='sudo' + sudo -vn &>/dev/null || echo "${BOLD}[Sudo required]${RESET}" + fi + # read, unmangle backslashes, return false after 5 seconds, only read 1 character, prompt with string, no variable + # read -r -t 5 -n 1 -p "${prompt_str:-}Press Enter to continue, or wait 5 seconds...${LF}" + + local -a required_packages=( + "$dkms_pkg" + 'nvidia-utils' + 'libxnvctrl' + 'lib32-libxnvctrl' + 'dxvk-bin' + 'opencl-nvidia' + 'lib32-opencl-nvidia' + 'lib32-nvidia-utils' + 'nvidia-settings' + 'libvdpau' + 'lib32-libvdpau' + 'vulkan-icd-loader' + 'lib32-vulkan-icd-loader' + ) + [[ ${should_install_cuda:-} == y ]] && required_packages+=(cuda) + + # pacman sends currently installed packages to stdout, and not-installed packages to stderr. + # Take stderr and get only the package name. Disregard any colors. + local oldifs="$IFS" + local IFS=$'\n' + local -a needed_packages=($(pacman -Q "${required_packages[@]}" 2> >(grep -oP --color=never "^error:[^']*'\K[^']*") >/dev/null)) + IFS="$oldifs" + + if ((${#needed_packages[@]})); then + _print_header --width=35 "Installing packages" + printf '%s\n' "${needed_packages[@]}" + _pause_for_readability 5 + $sudocmd pacman -S --needed --noconfirm "${required_packages[@]}" # install everything though because you need to have it all + else + _print_header --width=35 "Drivers already installed. Skipping" + fi + + _print_header --width=35 'Applying Wayland Specific Stuff.' + _pause_for_readability 3 + + local -i no_force_powermgmt=1 + local wants_powermgmt + + local DESKTOP_ENVIRONMENT="${XDG_CURRENT_DESKTOP,,}" + if [[ "${DESKTOP_ENVIRONMENT:=}" == "kde" || "${DESKTOP_ENVIRONMENT:=}" == "gnome" ]]; then + echo "Step 1: Updating mkinitcpio configuration" + _pause_for_readability 2 + $sudocmd sed -i 's/MODULES="\(.*\)"/MODULES="nvidia nvidia_modeset nvidia_uvm nvidia_drm"/; s/crc32c//g' '/etc/mkinitcpio.conf' + + echo "${LF}Step 2: Creating a backup of Grub & adding necessary Kernel Flags" + _pause_for_readability 2 + $sudocmd cp '/etc/default/grub' '/etc/default/grub.xbk' + $sudocmd sed -i "s/\(GRUB_CMDLINE_LINUX_DEFAULT='[^']*\)'/\1 nvidia_drm.modeset=1'/" '/etc/default/grub' + $sudocmd update-grub + + if [[ "$DESKTOP_ENVIRONMENT" == "gnome" ]]; then + echo "Step 2a: Applying Extra Gnome Modifications..." + _pause_for_readability 2 + echo "options nvidia NVreg_PreserveVideoMemoryAllocations=1" | ( + # stdin is propagated to subprocesses of subshells + if ((${#DRY})); then + tee + else + $sudocmd tee '/etc/modprobe.d/nvidia-wayland-gnome.conf' >/dev/null + fi + ) + # $sudocmd ln -s '/dev/null' '/etc/udev/rules.d/61-gdm.rules' + $sudocmd mkinitcpio -P + fi + wants_powermgmt=y + no_force_powermgmt=0 + fi + + local -a services=(nvidia-{hibernate,resume,suspend}) + + # ((no_force_powermgmt)) && read -r -p "Do you want to enable Nvidia power services? [y/N] > " wants_powermgmt + + local needs_nvidia_powerd + read -r -p "Do you want to enable 'nvidia-powerd'? For Ampere (RTX 30 series+) laptop GPUs. [y/N] > " needs_nvidia_powerd + [[ ${needs_nvidia_powerd:-} == 'y' ]] && services+=('nvidia-powerd') + + _print_header --width=35 'Enabling power services' "${services[@]}" + _pause_for_readability 2 + + # if [[ ${wants_powermgmt:-} == y || no_force_powermgmt -eq 1 ]]; then + if :; then + $sudocmd systemctl enable "${services[@]}" # &>/dev/null # it's always good to just double check + if ((${#DRY})); then + echo "Dry run selected. Skipping reboot" + else + _print_header "Reboot required. Press Enter to reboot or any other key to exit." + read -r REBOOT_CHOICE + if [[ -z ${REBOOT_CHOICE:-} ]]; then + $sudocmd reboot + else + echo "${LF}Please reboot your system later to apply the changes." + fi + fi + else + echo "Skipping nvidia power services" + fi +} + +_check_gpu() { + _print_header 'Checking Installed GPU' + echo "${LF}Your system has the following GPU(s)${LF}" + + lspci -x | grep --color=always -P '[^A-Za-z]+VGA.*NVIDIA[^\[]+\[\K[^\]]+' + glxinfo | grep --color=always -P 'OpenGL\s*(vendor|renderer)[^:]*:\s*\K.*' + + nvurl='https://www.nvidia.com/download/index.aspx?lang=en-us' + skiptext="Skipping opening url '$nvurl'" + if ((${#DRY})); then + echo "$skiptext" + else + read -r -p "Want to open the nVidia drivers page?${LF}[y/N] > " ans + if [[ $ans == y ]]; then + _print_header --width=66 \ + 'Opening nVidia Drivers page...' \ + 'Check What Version Your GPU Needs Before Installing or Building.' + _pause_for_readability 2 + xdg-open "$nvurl" &>/dev/null + else + echo "$skiptext" + fi + fi +} + +_remove_everything() { + _print_header --width=66 'Uninstalling all nVidia Drivers' + + ((XEROLINUX_REMOVE_DXVK_BIN)) && packages+=("dxvk-bin") + + # See driver install function for code explanation + _print_header --width=35 "Removing packages" + # local -a removing_packages=($(pacman -Q "${packages[@]}" 2>/dev/null | cut -d ' ' -f 1)) + local -a removing_packages=($(pacman -Q | grep -oE '\S*(nv(idia|ctrl|api)|cuda|vdpau)\S*')) + ((${#removing_packages[@]})) && printf '%s\n' "${removing_packages[@]}" + + # If the user suddenly doesn't want to remove nvidia drivers, they have a second chance + local second_thoughts + read -r -p "Do you want to ${BOLD}REMOVE${RESET} these packages? [y/N] > " second_thoughts + [[ ${second_thoughts:-} == 'y' ]] || return + + if ((${#DRY})); then + # echo "Dry run -- skipping removal of ${packages[*]}" + sudocmd='echo sudo' + else + sudocmd='sudo' + fi + local package + for package in "${packages[@]}"; do + $sudocmd pacman -Rdd --noconfirm "$package" &>/dev/null + done + $sudocmd mkinitcpio -P +} + +__reset_everything() { + if [[ ${1:-} == '--header' ]]; then + _print_header --width=49 'Done!' 'Press ENTER to return to main screen' + fi + read -r + echo -en "${RESET}" # clear formatting + clear + # sh '/usr/share/xerowelcome/scripts/nVidia_drivers.sh' # DANGEROUS RECURSION!! +} + +DRY='' +# argument parsing +for i in "$@"; do + case "${i:-}" in + '--dry-run' | -d) + DRY=true + ;; + '-'*) + # ARGZERO (the script name), greedily matched until the last slash + # turns '/home/vlk/Downloads/nVidia_driversNov.sh' into 'nVidia_driversNov.sh' + echo "${0##*/} [--dry-run (-d)]" + echo "run ${0##*/} with no args to run the script as usual" + exit 1 + ;; + esac +done + +# save everything to a variable +header_text="$( + _print_header --color=91 --no-vertical-pad --full-surround \ + 'XeroLinux nVidia (Proprietary) Driver Installer' \ + 'Wayland Support Included. This Applies to KDE & Gnome NOT XFCE.' \ + "Note : nvidia-settings GUI isn't Yet Wayland Ready, Plz Use Terminal." \ + 'Normally This is Enough For Hybrid Setups, If Not, More Research is Needed.' + + cat < ${BOLD}" CHOICE + INVALID_OPTION_STR='' + echo "${RESET}" # user's answer is bolded. This is required to reset + case "${CHOICE:=}" in + 1) + _wayland_setup + ;; + 2) + _wayland_setup --open + ;; + c) + _check_gpu + # __reset_everything --header + ;; + r) + _remove_everything + ;; + q) + exit 0 + ;; + *) + # _print_header --width=33 'Choose a valid option!' # no one will see this + INVALID_OPTION_STR="Invalid option: '${CHOICE:-}' " + clear + continue # re-prompt + ;; + + esac + __reset_everything --header + +done diff --git a/src/scripts/rank_mirrors.sh b/src/scripts/rank_mirrors.sh new file mode 100755 index 0000000..59b0fbd --- /dev/null +++ b/src/scripts/rank_mirrors.sh @@ -0,0 +1,11 @@ +#!/usr/bin/bash +echo +echo "##########################################" +echo " Updating Mirrors To Fastest Ones " +echo "##########################################" +echo +sudo reflector --verbose -phttps -f10 -l10 --sort rate --save /etc/pacman.d/mirrorlist && sudo pacman -Syy +echo +echo "##################################" +echo " Done ! Updating should go faster " +echo "##################################" diff --git a/src/scripts/switch_dm.sh b/src/scripts/switch_dm.sh new file mode 100755 index 0000000..6f8ed5e --- /dev/null +++ b/src/scripts/switch_dm.sh @@ -0,0 +1,111 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 3 +echo "###############################################################################" +echo "# XeroLinux Display Manager Switcher #" +echo "###############################################################################" +tput sgr0 +echo +echo "Hello $USER, which Display Manager do you want to switch to ?" +echo +echo "########## DM Selector ##########" +echo +echo "1. LightDM." +echo "2. KDE SDDM (For KDE use only)." +echo "3. Gnome GDM (For Gnome use only)." +echo +echo "Type Your Selection. To Exit, just close Window." +echo + +while :; do + +read CHOICE + +case $CHOICE in + + 1 ) + echo + echo "###########################################" + echo " Switching to LightDM " + echo "###########################################" + sleep 2 + echo + echo "Removing Current Display Manager" + echo "################################" + sudo pacman -Rdd --noconfirm sddm &>/dev/null; sudo pacman -Rdd --noconfirm sddm-git &>/dev/null; sudo pacman -Rdd --noconfirm sddm-git &>/dev/null; sudo pacman -Rdd --noconfirm sddm-kcm &>/dev/null; sudo pacman -Rdd --noconfirm gdm &>/dev/null + sleep 2 + echo + echo "Installing & Enabling LightDM" + echo "#############################" + sudo pacman -S --needed --noconfirm lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings + sleep 2 + + sudo systemctl enable lightdm.service -f + echo + echo "###########################################" + echo " Done ! Please reboot to apply " + echo "###########################################" + sleep 3 + ;; + + 2 ) + echo + echo "###########################################" + echo " Switching to SDDM " + echo "###########################################" + sleep 2 + echo + echo "Removing Current Display Manager" + echo "################################" + sudo pacman -Rdd --noconfirm sddm &>/dev/null; sudo pacman -Rdd --noconfirm lightdm &>/dev/null; sudo pacman -Rdd --noconfirm lightdm-gtk-greeter &>/dev/null; sudo pacman -Rdd --noconfirm lightdm-gtk-greeter-settings &>/dev/null; sudo pacman -Rdd --noconfirm gdm &>/dev/null + sleep 2 + echo + echo "Installing & Enabling SDDM" + echo "##########################" + yay -S sddm-git --noconfirm + sudo pacman -S sddm-kcm --needed --noconfirm + sleep 2 + sudo systemctl enable sddm.service -f + echo + echo "###########################################" + echo " Done ! Please reboot to apply " + echo "###########################################" + sleep 3 + ;; + + 3 ) + echo + echo "###########################################" + echo " Switching to GDM " + echo "###########################################" + sleep 2 + echo + echo "Removing Current Display Manager" + echo "################################" + sudo pacman -Rdd --noconfirm sddm &>/dev/null; sudo pacman -Rdd --noconfirm sddm-git &>/dev/null; sudo pacman -Rdd --noconfirm sddm-kcm &>/dev/null; sudo pacman -Rdd --noconfirm lightdm &>/dev/null; sudo pacman -Rdd --noconfirm lightdm-gtk-greeter &>/dev/null; sudo pacman -Rdd --noconfirm lightdm-gtk-greeter-settings &>/dev/null + sleep 2 + echo + echo "Installing & Enabling GDM" + echo "#########################" + sudo pacman -S --needed --noconfirm gdm + sleep 2 + sudo systemctl enable gdm.service -f + echo + echo "###########################################" + echo " Done ! Please reboot to apply " + echo "###########################################" + sleep 3 + ;; + + * ) + echo "#################################" + echo " Choose the correct number " + echo "#################################" + ;; +esac +done diff --git a/src/scripts/switch_to_zsh.sh b/src/scripts/switch_to_zsh.sh new file mode 100755 index 0000000..9d984e1 --- /dev/null +++ b/src/scripts/switch_to_zsh.sh @@ -0,0 +1,38 @@ +#!/bin/bash +#set -e +echo "######################################" +echo "Setting up ZSH With p10k & OMZ Plugins" +echo "######################################" +sleep 2 +echo "Step 1 - Grabing Necessary Fonts" +echo "################################" +sudo pacman -S --needed --noconfirm zsh grml-zsh-config +yay -S --noconfirm ttf-meslo-nerd siji-git ttf-unifont noto-color-emoji-fontconfig xorg-fonts-misc ttf-dejavu ttf-meslo-nerd-font-powerlevel10k noto-fonts-emoji powerline-fonts zsh-theme-powerlevel10k +sleep 2 +echo "Step 2 - Grabing OhMyZsh & Plugins" +echo "##################################" +sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended +git clone https://github.com/zsh-users/zsh-completions ${ZSH_CUSTOM:=~/.oh-my-zsh/custom}/plugins/zsh-completions +git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions +git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting +sleep 2 +echo "Step 3 - Grabing PowerLevel10k Theme" +echo "#####################################" +git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k +cd $HOME/ && wget https://raw.githubusercontent.com/xerolinux/xero-fixes/main/conf/.p10k.zsh +sleep 2 +echo "Step 4 - Setting Default Shell to ZSH" +echo "#####################################" +sudo chsh $USER -s /bin/zsh +cd $HOME/.local/share/konsole/ +sed -i 's|/bin/bash|/bin/zsh|g' XeroLinux.profile +sleep 2 +echo "Step 5 - Importing XeroLinux .zshrc" +echo "#####################################" +cd $HOME/ +rm .zshrc +wget https://raw.githubusercontent.com/xerolinux/xero-fixes/main/conf/.zshrc +sleep 2 +echo "#####################################" +echo " Done ! Now Logout & back in " +echo "#####################################" diff --git a/src/scripts/update_system.sh b/src/scripts/update_system.sh new file mode 100755 index 0000000..8d03e53 --- /dev/null +++ b/src/scripts/update_system.sh @@ -0,0 +1,103 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 5 +echo "###############################################################################" +echo "# XeroLinux System Updater #" +echo "# #" +echo "# !!! Please Note !!! #" +echo "# #" +echo "# AUR Packages Will Build Before Installing.. #" +echo "# Which might take some time depending on Package. In case it fails #" +echo "# #" +echo "# Please do NOT report to us, but to the package maintainer(s) upstream #" +echo "###############################################################################" +tput sgr0 +echo +echo "Hello $USER, Please Select Packages To Update." +echo +echo "########## Package Manager Selector ##########" +echo +echo "1. Update Arch Packages Only." +echo "2. Update Arch & A.U.R Packages." +echo "3. Update Flatpak Packages Only." +echo +echo "4. Update All in one go. (Not Topgrade)." +echo +echo "Type Your Selection. To Exit, just close Window." +echo + +while :; do + +read CHOICE + +case $CHOICE in + + 1 ) + echo + echo "##########################################" + echo " Updating Arch Packages " + echo "##########################################" + sleep 3 + sudo pacman -Syyu + sleep 3 + echo "#######################################" + echo " Done ! " + echo "#######################################" + clear && sh /usr/share/xerowelcome/scripts/update_system.sh + ;; + + + 2 ) + echo + echo "##########################################" + echo " Updating Arch & AUR Packages " + echo "##########################################" + sleep 3 + yay -Syyu + sleep 3 + echo "#######################################" + echo " Done ! " + echo "#######################################" + clear && sh /usr/share/xerowelcome/scripts/update_system.sh + ;; + + 3 ) + echo + echo "##########################################" + echo " Updating Flatpak Packages " + echo "##########################################" + sleep 3 + flatpak update + sleep 3 + echo "#######################################" + echo " Done ! " + echo "#######################################" + clear && sh /usr/share/xerowelcome/scripts/update_system.sh + ;; + + 4 ) + echo + echo "##########################################" + echo " Updating Everything in One Go " + echo "##########################################" + sleep 3 + yay -Syyu && flatpak update + sleep 3 + echo "#######################################" + echo " Done ! " + echo "#######################################" + clear && sh /usr/share/xerowelcome/scripts/update_system.sh + ;; + + * ) + echo "#################################" + echo " Choose the correct number " + echo "#################################" + ;; +esac +done diff --git a/src/scripts/xero_rices.sh b/src/scripts/xero_rices.sh new file mode 100755 index 0000000..f45762b --- /dev/null +++ b/src/scripts/xero_rices.sh @@ -0,0 +1,206 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 3 + +echo "#################################################" +echo "# The XeroLinux Rice Installer #" +echo "# The Following Script is for KDE Only #" +echo "#################################################" +tput sgr0 +echo +echo "Hello $USER, which rice would you like to apply today ?" +echo +echo "################# Rice Selector #################" +echo +echo "1. The Catppuccin Rice (Teddy)." +echo "2. The Dunes Rice (GamerKing)." +echo "3. The Nord Rice (DarkXero)." +echo "4. The Sweet Rice (Teddy)." +echo +echo "################# Ricing Tweaks #################" +echo +echo "5. Reset config back to Pure Vanilla KDE." +echo "6. Activate Flatpak Theming (Required If used)." +echo "7. Update Default System Theme (Layan KDE/GTK)." +echo +echo "Type Your Selection. To Exit, just close Window." +echo + +while :; do + +read CHOICE + +case $CHOICE in + + 1 ) + echo + echo "#################################################" + echo "# Applying Selected Rice #" + echo "#################################################" + echo + sleep 2 + cd ~ && git clone https://github.com/xerolinux/xero-catppuccin-git && cd ~/xero-catppuccin-git/ && ./install.sh + sleep 3 + # Prompt the user to reboot + tput setaf 4 + read -p "Customization Restored. Reboot recommended. Reboot now? (y/n): " reboot_response + tput setaf 0 + echo + # Check the user's response + if [[ $reboot_response == "y" || $reboot_response == "yes" ]]; then + sudo reboot + else + echo + tput setaf 4 + echo "Please manually reboot your system to apply changes." + tput sgr0 + fi + exit 0 + + ;; + + 2 ) + echo + echo "#################################################" + echo "# Applying Selected Rice #" + echo "#################################################" + echo + sleep 2 + cd ~ && git clone https://github.com/xerolinux/xero-dunes-git.git && cd ~/xero-dunes-git/ && ./install.sh + sleep 3 + echo + # Prompt the user to reboot + tput setaf 4 + read -p "Customization Restored. Reboot recommended. Reboot now? (y/n): " reboot_response + tput sgr0 + echo + # Check the user's response + if [[ $reboot_response == "y" || $reboot_response == "yes" ]]; then + sudo reboot + else + echo + echo "Please manually reboot your system to apply changes." + fi + exit 0 + + ;; + + 3 ) + echo + echo "#################################################" + echo "# Applying Selected Rice #" + echo "#################################################" + echo + sleep 2 + cd ~ && git clone https://github.com/xerolinux/xero-nord-git.git && cd ~/xero-nord-git/ && ./install.sh + sleep 3 + echo + # Prompt the user to reboot + tput setaf 4 + read -p "Customization Restored. Reboot recommended. Reboot now? (y/n): " reboot_response + tput setaf 0 + echo + # Check the user's response + if [[ $reboot_response == "y" || $reboot_response == "yes" ]]; then + sudo reboot + else + echo + tput setaf 4 + echo "Please manually reboot your system to apply changes." + tput sgr0 + fi + exit 0 + + ;; + + 4 ) + echo + echo "#################################################" + echo "# Applying Selected Rice #" + echo "#################################################" + echo + sleep 2 + cd ~ && git clone https://github.com/xerolinux/xero-sweet-git.git && cd ~/xero-sweet-git/ && ./install.sh + sleep 3 + echo + # Prompt the user to reboot + tput setaf 4 + read -p "Customization Restored. Reboot recommended. Reboot now? (y/n): " reboot_response + tput setaf 0 + echo + # Check the user's response + if [[ $reboot_response == "y" || $reboot_response == "yes" ]]; then + sudo reboot + else + echo + tput setaf 4 + echo "Please manually reboot your system to apply changes." + tput sgr0 + fi + exit 0 + + ;; + + 5 ) + echo + echo "#################################################" + echo "# Resetting to Vanilla KDE #" + echo "# #" + echo "# Warning, will undo current settings ! #" + echo "# This will revert settings to Pure Vanilla KDE #" + echo "#################################################" + echo + sleep 6 + cp -Rf ~/.config ~/.config-backup-$(date +%Y.%m.%d-%H.%M.%S) && rm -Rf ~/.config/ + sudo sed -i "s/GRUB_THEME/#GRUB_THEME/g" /etc/default/grub + sudo grub-mkconfig -o /boot/grub/grub.cfg + sleep 3 + echo + # Prompt the user to reboot + tput setaf 4 + read -p "Customization Restored. Reboot recommended. Reboot now? (y/n): " reboot_response + tput setaf 0 + echo + # Check the user's response + if [[ $reboot_response == "y" || $reboot_response == "yes" ]]; then + sudo reboot + else + echo + tput setaf 4 + echo "Please manually reboot your system to apply changes." + tput sgr0 + fi + exit 0 + + ;; + + 6 ) + echo + sleep 2 + sh /usr/local/bin/flatfix + sleep 2 + clear && sh /usr/share/xerowelcome/scripts/xero_rices.sh + + ;; + + 7 ) + echo + sleep 2 + sh /usr/local/bin/stup + sleep 2 + clear && sh /usr/share/xerowelcome/scripts/xero_rices.sh + + ;; + + * ) + echo "#################################" + echo " Choose the correct number " + echo "#################################" + ;; +esac +done diff --git a/src/scripts/xerofix.sh b/src/scripts/xerofix.sh new file mode 100755 index 0000000..22962ba --- /dev/null +++ b/src/scripts/xerofix.sh @@ -0,0 +1,97 @@ +#!/bin/bash +#set -e +################################################################################################################## +# Written to be used on 64 bits computers +# Author : DarkXero +# Website : http://xerolinux.xyz +################################################################################################################## +tput setaf 3 +echo "#################################################" +echo "# XeroLinux Fixes/Tweaks #" +echo "#################################################" +tput sgr0 +echo +echo "Hello $USER, what would you like to do today ?" +echo +echo "################## Troubleshooting ##################" +echo +echo "1. Apply The Samba Share Fix." +echo "2. Clear Pacman Cache (Free Space)." +echo "3. Restart PipeWire/PipeWire-Pulse." +echo "4. Unlock Pacman DB (In case of error)." +echo "5. Enable The PipeWire Echo-Cancel Module." +echo "6. TKG Kernel/nVidia Scripts (Advanced use only)." +echo +echo "Type Your Selection. To Exit, just close Window." +echo + +while :; do + +read CHOICE + +case $CHOICE in + + 1 ) + echo + sleep 2 + sh /usr/local/bin/smbfix + sleep 2 + clear && sh /usr/share/xerowelcome/scripts/xerofix.sh + + ;; + + 2 ) + echo + sleep 2 + sudo pacman -Scc + sleep 2 + echo + clear && sh /usr/share/xerowelcome/scripts/xerofix.sh + + ;; + + + 3 ) + echo + sleep 2 + sh /usr/local/bin/rpipe + sleep 2 + clear && sh /usr/share/xerowelcome/scripts/xerofix.sh + + ;; + + 4 ) + echo + sleep 2 + sudo rm /var/lib/pacman/db.lck + sleep 2 + clear && sh /usr/share/xerowelcome/scripts/xerofix.sh + + ;; + + 5 ) + echo + sleep 2 + sh /usr/local/bin/pipecho + sleep 2 + clear && sh /usr/share/xerowelcome/scripts/xerofix.sh + + ;; + + 6 ) + echo + sleep 2 + sh /usr/local/bin/tkg + echo + sleep 3 + clear && sh /usr/share/xerowelcome/scripts/xerofix.sh + + ;; + + * ) + echo "#################################" + echo " Choose the correct number " + echo "#################################" + ;; +esac +done diff --git a/ui/drivers_page.glade b/ui/drivers_page.glade new file mode 100644 index 0000000..7ab3441 --- /dev/null +++ b/ui/drivers_page.glade @@ -0,0 +1,235 @@ + + + + + + + + + + True + False + vertical + + + gtk-go-back + faqBrowser + True + True + True + True + + + False + True + 0 + + + + + + True + False + 10 + 10 + 10 + 10 + 20 + 10 + True + + + True + False + + + 0 + 2 + 2 + + + + + True + False + This is where you will be able to select the Drivers to install. For nVidia, we only provide latest Official ones. For older ones either use " TKG Scripts" via our tool under "Troubleshooting" (Option 6) or do your own research, can't support all nVidia GPUs. + +If you encounter any issues, like for example Black Screen on startup, try switching to the LTS Kernel. We now also provide "initial" support for Wayland on nVidia GPUs. However your mileage may vary depending on your specific setup. No help will be provided, do your own research beyond that. + +If you own an ASUS Laptop, we included links to the ASUS-Linux web page as well as their Discord where you will be able to get the support you need. Please don't ask us as we only support the hardware we have access to. + fill + True + 1 + 1 + + + 0 + 4 + 2 + + + + + True + False + Drivers Installer + + + + + + + 0 + 1 + 2 + + + + + ASUS-Linux Laptop Tools + asus-rog-tools + True + True + True + Tools by the ASUS-Linux Team + right + True + + + 0 + 9 + + + + + ASUS-Linux Discord + optimus-discord + True + True + True + ASUS-Linux Team Discord + right + True + + + 1 + 9 + + + + + nVidia Proprietary Drivers + nonfree-drivers + True + True + True + nVidia Proprietary Driver Installer + + + 0 + 7 + + + + + ATI/AMD Open Source Drivers + free-drivers + True + True + True + ATI/AMD FOSS Driver Installer + + + 1 + 7 + + + + + Switch Display Manager + switch-dm + True + True + True + Display Manager Switcher + + + 0 + 8 + + + + + Hardware Service + hw-service + True + True + True + Hardware Config Prober + + + 1 + 8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + 1 + + + + diff --git a/ui/faq_page.glade b/ui/faq_page.glade new file mode 100644 index 0000000..8e37cf7 --- /dev/null +++ b/ui/faq_page.glade @@ -0,0 +1,251 @@ + + + + + + + + + + True + False + vertical + + + gtk-go-back + faqBrowser + True + True + True + True + + + False + True + 0 + + + + + + True + False + 10 + 10 + 10 + 10 + 20 + 10 + True + + + True + False + + + 0 + 1 + 2 + + + + + True + False + This is where you find the list of the Frequently Asked Questions, in case you are having issues. Answers are hosted on XeroLinux Forums. + fill + True + 1 + 1 + + + 0 + 3 + 2 + + + + + Issues updating due to failed mirrors (404)? + failed-mirrors + True + False + True + + + 1 + 5 + + + + + Issues with Pacman Backend ? + pacman-back + True + False + True + + + 1 + 6 + + + + + Want to build ISO from Source ? + build-iso + True + False + True + + + 0 + 5 + + + + + Want to auto mount drives on startup ? + auto-mount + True + False + True + + + 0 + 6 + + + + + Want to DualBoot with Windows ? + dualboot + True + False + True + + + 0 + 7 + + + + + Want To Downgrade A Package ? + downgrade + True + False + True + + + 1 + 7 + + + + + Want to learn how to Rice KDE Plasma ? + kde + True + False + True + + + 0 + 8 + + + + + Having Grub Issue? (Boot to Bios) + grub-issue + True + False + True + + + 1 + 8 + + + + + Want to enable Snap-Support ? + snap + True + False + True + + + 1 + 9 + + + + + Stuck with vmlinuz-linux not found ? + notfound-linux + True + False + True + + + 0 + 9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False + True + 1 + + + + diff --git a/ui/melawy-welcome.glade b/ui/melawy-welcome.glade index e2a5fa6..a42bb11 100644 --- a/ui/melawy-welcome.glade +++ b/ui/melawy-welcome.glade @@ -284,8 +284,6 @@ We, the Melawy Developers, hope that you will enjoy using Melawy as much as we e False English - German - Polish Russian @@ -413,6 +411,46 @@ We, the Melawy Developers, hope that you will enjoy using Melawy as much as we e center end 10 + + + website + True + False + + + + True + False + Website + + + + + False + True + 2 + + + + + youtube + True + False + + + + True + False + Youtube + + + + + False + True + 1 + + telegram @@ -455,22 +493,22 @@ We, the Melawy Developers, hope that you will enjoy using Melawy as much as we e - reddit + github True False - + - + True False - Reddit + Github False True - 2 + 5 + + + False + True + 1 + + + +