diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 0000000..73774f7 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1312 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "arc-swap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "base62" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f879ef8fc74665ed7f0e6127cb106315888fc2744f68e14b74f83edbb2a08992" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bstr" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8a0ea147c94108c9613235388f540e4d14c327f7081c9e471fc8ee8a2533e69" +dependencies = [ + "bitflags 2.6.0", + "cairo-sys-rs", + "glib 0.20.2", + "libc", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "428290f914b9b86089f60f5d8a9f6e440508e1bcff23b25afd51502b0a2da88f" +dependencies = [ + "glib-sys 0.20.2", + "libc", + "system-deps 7.0.2", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-expr" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345c78335be0624ed29012dc10c49102196c6882c12dde65d9f35b02da2aada8" +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 = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "fastrand" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" + +[[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 = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-macro", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8730751991b97419fc3f0c2dca2c9e45b48edf46e48e0f965964ecf33889812f" +dependencies = [ + "gdk-pixbuf-sys", + "gio 0.20.1", + "glib 0.20.2", + "libc", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffbf649fd5b1c8c0f0feeb015b7533c3ef92da2887fb95ddd338bc2b1644a7c" +dependencies = [ + "gio-sys 0.20.1", + "glib-sys 0.20.2", + "gobject-sys 0.20.1", + "libc", + "system-deps 7.0.2", +] + +[[package]] +name = "gdk4" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b7d7237c1487ed4b300aac7744efcbf1319e12d60d7afcd6f505414bd5b5dea" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk4-sys", + "gio 0.20.1", + "glib 0.20.2", + "libc", + "pango", +] + +[[package]] +name = "gdk4-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a67576c8ec012156d7f680e201a807b4432a77babb3157e0555e990ab6bcd878" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys 0.20.1", + "glib-sys 0.20.2", + "gobject-sys 0.20.1", + "libc", + "pango-sys", + "pkg-config", + "system-deps 7.0.2", +] + +[[package]] +name = "gio" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c49f117d373ffcc98a35d114db5478bc223341cff53e39a5d6feced9e2ddffe" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys 0.19.8", + "glib 0.19.9", + "libc", + "pin-project-lite", + "smallvec", + "thiserror", +] + +[[package]] +name = "gio" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcacaa37401cad0a95aadd266bc39c72a131d454fc012f6dfd217f891d76cc52" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys 0.20.1", + "glib 0.20.2", + "libc", + "pin-project-lite", + "smallvec", +] + +[[package]] +name = "gio-sys" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cd743ba4714d671ad6b6234e8ab2a13b42304d0e13ab7eba1dcdd78a7d6d4ef" +dependencies = [ + "glib-sys 0.19.8", + "gobject-sys 0.19.8", + "libc", + "system-deps 6.2.2", + "windows-sys 0.52.0", +] + +[[package]] +name = "gio-sys" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5237611e97e9b86ab5768adc3eef853ae713ea797aa3835404acdfacffc9fb38" +dependencies = [ + "glib-sys 0.20.2", + "gobject-sys 0.20.1", + "libc", + "system-deps 7.0.2", + "windows-sys 0.52.0", +] + +[[package]] +name = "glib" +version = "0.19.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39650279f135469465018daae0ba53357942a5212137515777d5fdca74984a44" +dependencies = [ + "bitflags 2.6.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys 0.19.8", + "glib-macros 0.19.9", + "glib-sys 0.19.8", + "gobject-sys 0.19.8", + "libc", + "memchr", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c1ea829497810f8e87f5ee6d05c4879af641704add879e6b6080607cceeefe4" +dependencies = [ + "bitflags 2.6.0", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys 0.20.1", + "glib-macros 0.20.2", + "glib-sys 0.20.2", + "gobject-sys 0.20.1", + "libc", + "memchr", + "smallvec", +] + +[[package]] +name = "glib-build-tools" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "108f374fff60efd14b0d70d8916e7213aed18d7dd071ba3e9334ed2dac1dc86a" +dependencies = [ + "gio 0.19.8", +] + +[[package]] +name = "glib-macros" +version = "0.19.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4429b0277a14ae9751350ad9b658b1be0abb5b54faa5bcdf6e74a3372582fad7" +dependencies = [ + "heck", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glib-macros" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "951aa19c5e89555c0ca5e94ee874b24b2594ece8412b387bd84ee3266b8a3ea0" +dependencies = [ + "heck", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glib-sys" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2dc18d3a82b0006d470b13304fbbb3e0a9bd4884cf985a60a7ed733ac2c4a5" +dependencies = [ + "libc", + "system-deps 6.2.2", +] + +[[package]] +name = "glib-sys" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92eee4531c1c9abba945d19378b205031b5890e1f99c319ba0503b6e0c06a163" +dependencies = [ + "libc", + "system-deps 7.0.2", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "globwalk" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93e3af942408868f6934a7b85134a3230832b9977cf66125df2f9edcfce4ddcc" +dependencies = [ + "bitflags 1.3.2", + "ignore", + "walkdir", +] + +[[package]] +name = "gobject-sys" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e697e252d6e0416fd1d9e169bda51c0f1c926026c39ca21fbe8b1bb5c3b8b9e" +dependencies = [ + "glib-sys 0.19.8", + "libc", + "system-deps 6.2.2", +] + +[[package]] +name = "gobject-sys" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa3d1dcd8a1eb2e7c22be3d5e792b14b186f3524f79b25631730f9a8c169d49a" +dependencies = [ + "glib-sys 0.20.2", + "libc", + "system-deps 7.0.2", +] + +[[package]] +name = "graphene-rs" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80aac87f74e81c0e13433e892a047237abdc37945c86887f5eed905038356e69" +dependencies = [ + "glib 0.20.2", + "graphene-sys", + "libc", +] + +[[package]] +name = "graphene-sys" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2f91ecd32989efad60326cc20a8fb252bd2852239a08e4e70cde8c100de9ca" +dependencies = [ + "glib-sys 0.20.2", + "libc", + "pkg-config", + "system-deps 7.0.2", +] + +[[package]] +name = "gsk4" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3cf2091e1af185b347b3450817d93dea6fe435df7abd4c2cd7fb5bcb4cfda8" +dependencies = [ + "cairo-rs", + "gdk4", + "glib 0.20.2", + "graphene-rs", + "gsk4-sys", + "libc", + "pango", +] + +[[package]] +name = "gsk4-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aa69614a26d8760c186c3690f1b0fbb917572ca23ef83137445770ceddf8cde" +dependencies = [ + "cairo-sys-rs", + "gdk4-sys", + "glib-sys 0.20.2", + "gobject-sys 0.20.1", + "graphene-sys", + "libc", + "pango-sys", + "system-deps 7.0.2", +] + +[[package]] +name = "gtk4" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fe572bf318e5dbc6f5a2f8a25d853f1ae3f42768c0b08af6ca20a18f4057e1" +dependencies = [ + "cairo-rs", + "field-offset", + "futures-channel", + "gdk-pixbuf", + "gdk4", + "gio 0.20.1", + "glib 0.20.2", + "graphene-rs", + "gsk4", + "gtk4-macros", + "gtk4-sys", + "libc", + "pango", +] + +[[package]] +name = "gtk4-macros" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9e7b362c8fccd2712297903717d65d30defdab2b509bc9d209cbe5ffb9fabaf" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "gtk4-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1114a207af8ada02cf4658a76692f4190f06f093380d5be07e3ca8b43aa7c666" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk4-sys", + "gio-sys 0.20.1", + "glib-sys 0.20.2", + "gobject-sys 0.20.1", + "graphene-sys", + "gsk4-sys", + "libc", + "pango-sys", + "system-deps 7.0.2", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "ignore" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "indexmap" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" +dependencies = [ + "equivalent", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libadwaita" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ff9c222b5c783729de45185f07b2fec2d43a7f9c63961e777d3667e20443878" +dependencies = [ + "gdk4", + "gio 0.20.1", + "glib 0.20.2", + "gtk4", + "libadwaita-sys", + "libc", + "pango", +] + +[[package]] +name = "libadwaita-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c44d8bdbad31d6639e1f20cc9c1424f1a8e02d751fc28d44659bf743fb9eca6" +dependencies = [ + "gdk4-sys", + "gio-sys 0.20.1", + "glib-sys 0.20.2", + "gobject-sys 0.20.1", + "gtk4-sys", + "libc", + "pango-sys", + "system-deps 7.0.2", +] + +[[package]] +name = "libc" +version = "0.2.158" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" + +[[package]] +name = "libyml" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64804cc6a5042d4f05379909ba25b503ec04e2c082151d62122d5dcaa274b961" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "normpath" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8911957c4b1549ac0dc74e30db9c8b0e66ddcd6d7acc33098f4c63a64a6d7ed" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "pango" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5764e5a174a5a0ec054fe5962ce6d4fc7052e2d0dcc23bbc77202b40a4a403d3" +dependencies = [ + "gio 0.20.1", + "glib 0.20.2", + "libc", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd317e1de76b14b3d3efe05518c08b360327f1ab7fec150473a89ffcad4b072d" +dependencies = [ + "glib-sys 0.20.2", + "gobject-sys 0.20.1", + "libc", + "system-deps 7.0.2", +] + +[[package]] +name = "pika-gnome-layouts" +version = "4.0.0" +dependencies = [ + "glib-build-tools", + "gtk4", + "libadwaita", + "rust-i18n", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[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.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit 0.22.20", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "rust-i18n" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "039f57d22229db401af3458ca939300178e99e88b938573cea12b7c2b0f09724" +dependencies = [ + "globwalk", + "once_cell", + "regex", + "rust-i18n-macro", + "rust-i18n-support", + "smallvec", +] + +[[package]] +name = "rust-i18n-macro" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dde5c022360a2e54477882843d56b6f9bcb4bc62f504b651a2f497f0028d174f" +dependencies = [ + "glob", + "once_cell", + "proc-macro2", + "quote", + "rust-i18n-support", + "serde", + "serde_json", + "serde_yml", + "syn", +] + +[[package]] +name = "rust-i18n-support" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75d2844d36f62b5d6b66f9cf8f8cbdbbbdcdb5fd37a473a9cc2fb45fdcf485d2" +dependencies = [ + "arc-swap", + "base62", + "globwalk", + "itertools", + "lazy_static", + "normpath", + "once_cell", + "proc-macro2", + "regex", + "serde", + "serde_json", + "serde_yml", + "siphasher", + "toml 0.7.8", + "triomphe", +] + +[[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.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[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 = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "serde" +version = "1.0.209" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99fce0ffe7310761ca6bf9faf5115afbc19688edd00171d81b1bb1b116c63e09" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.209" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5831b979fd7b5439637af1752d535ff49f4860c0f341d1baeb6faf0f4242170" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.127" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8043c06d9f82bd7271361ed64f415fe5e12a77fdb52e573e7f06a516dea329ad" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_yml" +version = "0.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e76bab63c3fd98d27c17f9cbce177f64a91f5e69ac04cafe04e1bb25d1dc3c" +dependencies = [ + "indexmap", + "itoa", + "libyml", + "log", + "memchr", + "ryu", + "serde", + "serde_json", + "tempfile", +] + +[[package]] +name = "siphasher" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[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.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "syn" +version = "2.0.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr 0.15.8", + "heck", + "pkg-config", + "toml 0.8.19", + "version-compare", +] + +[[package]] +name = "system-deps" +version = "7.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "070a0a5e7da2d24be457809c4b3baa57a835fd2829ad8b86f9a049052fe71031" +dependencies = [ + "cfg-expr 0.16.0", + "heck", + "pkg-config", + "toml 0.8.19", + "version-compare", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tempfile" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "thiserror" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "toml" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd79e69d3b627db300ff956027cc6c3798cef26d22526befdfcd12feeb6d2257" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.19.15", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.20", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.18", +] + +[[package]] +name = "triomphe" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6631e42e10b40c0690bf92f404ebcfe6e1fdb480391d15f17cc8e96eeed5369" +dependencies = [ + "arc-swap", + "serde", + "stable_deref_trait", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "version-compare" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..b1cf0e5 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "pika-gnome-layouts" +version = "4.0.0" +edition = "2021" + +[dependencies] +adw = { version = "0.7.0", package = "libadwaita", features = ["v1_5"] } +gtk = { version = "0.9.0", package = "gtk4", features = ["v4_14"] } +rust-i18n = "3.0.1" + +[build-dependencies] +glib-build-tools = "0.19.0" \ No newline at end of file diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..a8b3513 --- /dev/null +++ b/build.rs @@ -0,0 +1,9 @@ +// R1 + +fn main() { + glib_build_tools::compile_resources( + &["resources"], + "resources/resources.gresource.xml", + "resources.gresource", + ); +} diff --git a/usr/share/applications/pika-gnome-layouts.desktop b/data/com.github.pikaos-linux.pikagnomelayouts.desktop similarity index 100% rename from usr/share/applications/pika-gnome-layouts.desktop rename to data/com.github.pikaos-linux.pikagnomelayouts.desktop diff --git a/data/com.github.pikaos-linux.pikagnomelayouts.gschema.xml b/data/com.github.pikaos-linux.pikagnomelayouts.gschema.xml new file mode 100644 index 0000000..5b958d8 --- /dev/null +++ b/data/com.github.pikaos-linux.pikagnomelayouts.gschema.xml @@ -0,0 +1,24 @@ + + + + + 700 + Default window width + + + 500 + Default window height + + + false + Default window maximized behaviour + + + 0 + What layout is selected. + + What layout is selected. + + + + diff --git a/usr/lib/pika/gnome-layouts/layout-scripts/gnome2.sh b/data/layout-scripts/gnome2.sh similarity index 100% rename from usr/lib/pika/gnome-layouts/layout-scripts/gnome2.sh rename to data/layout-scripts/gnome2.sh diff --git a/usr/lib/pika/gnome-layouts/layout-scripts/macos.sh b/data/layout-scripts/macos.sh similarity index 100% rename from usr/lib/pika/gnome-layouts/layout-scripts/macos.sh rename to data/layout-scripts/macos.sh diff --git a/usr/lib/pika/gnome-layouts/layout-scripts/reset.sh b/data/layout-scripts/reset.sh similarity index 100% rename from usr/lib/pika/gnome-layouts/layout-scripts/reset.sh rename to data/layout-scripts/reset.sh diff --git a/usr/lib/pika/gnome-layouts/layout-scripts/unity.sh b/data/layout-scripts/unity.sh similarity index 100% rename from usr/lib/pika/gnome-layouts/layout-scripts/unity.sh rename to data/layout-scripts/unity.sh diff --git a/usr/lib/pika/gnome-layouts/layout-scripts/win10.sh b/data/layout-scripts/win10.sh similarity index 100% rename from usr/lib/pika/gnome-layouts/layout-scripts/win10.sh rename to data/layout-scripts/win10.sh diff --git a/usr/lib/pika/gnome-layouts/layout-scripts/win11.sh b/data/layout-scripts/win11.sh similarity index 100% rename from usr/lib/pika/gnome-layouts/layout-scripts/win11.sh rename to data/layout-scripts/win11.sh diff --git a/data/polkit-1/actions/fkm.change.scx.policy b/data/polkit-1/actions/fkm.change.scx.policy new file mode 100644 index 0000000..e8d1d49 --- /dev/null +++ b/data/polkit-1/actions/fkm.change.scx.policy @@ -0,0 +1,19 @@ + + + + + + Authentication is required to change the SCX Scheduler + com.github.cosmicfusion.fedora-kernel-manager + + auth_admin + auth_admin + auth_admin + + /usr/lib/fedora-kernel-manager/scripts/change_scx.sh + true + + + \ No newline at end of file diff --git a/data/polkit-1/actions/fkm.kernel.cachyos.init.policy b/data/polkit-1/actions/fkm.kernel.cachyos.init.policy new file mode 100644 index 0000000..a0d8b34 --- /dev/null +++ b/data/polkit-1/actions/fkm.kernel.cachyos.init.policy @@ -0,0 +1,19 @@ + + + + + + Authentication is required to initialize the Cachyos kernel repo + com.github.cosmicfusion.fedora-kernel-manager + + auth_admin + auth_admin + auth_admin + + /usr/lib/fedora-kernel-manager/scripts/kernel-cachyos-init.sh + true + + + \ No newline at end of file diff --git a/data/polkit-1/actions/fkm.modify.package.policy b/data/polkit-1/actions/fkm.modify.package.policy new file mode 100644 index 0000000..f40a4d8 --- /dev/null +++ b/data/polkit-1/actions/fkm.modify.package.policy @@ -0,0 +1,19 @@ + + + + + + Authentication is required to modify system packages + com.github.cosmicfusion.fedora-kernel-manager + + auth_admin + auth_admin + auth_admin + + /usr/lib/fedora-kernel-manager/scripts/modify_package.sh + true + + + \ No newline at end of file diff --git a/data/polkit-1/rules.d/99-fkm.kernel.cachyos.init.rules b/data/polkit-1/rules.d/99-fkm.kernel.cachyos.init.rules new file mode 100644 index 0000000..9d3ffe1 --- /dev/null +++ b/data/polkit-1/rules.d/99-fkm.kernel.cachyos.init.rules @@ -0,0 +1,6 @@ +/* Allow passwordless auth for fkm.kernel.cachyos.init +polkit.addRule(function(action, subject) { + if (action.id == "fkm.kernel.cachyos.init") { + return polkit.Result.YES; + } +}); \ No newline at end of file diff --git a/debian/changelog b/debian/changelog index 4d76b91..2ab1ff5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +pika-gnome-layouts (4.0.0-100pika1) pika; urgency=low + + * Port OS 4/Rust/GTK4/Libadwaita + + -- Ward Nakchbandi Sat, 01 Oct 2022 14:50:00 +0200 + pika-gnome-layouts (3.0-100pika2) pikauwu; urgency=low * Refine UI diff --git a/debian/control b/debian/control index b55bdc6..d3d4ba8 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,15 @@ Section: misc Priority: optional Maintainer: Ward Nakchbandi Standards-Version: 4.6.1 -Build-Depends: debhelper-compat (= 13) +Build-Depends: + debhelper-compat (= 13), + build-essential, + debhelper, +# cargo, + libadwaita-1-dev, + libgtk-4-dev, + desktop-file-utils, + make, Package: pika-gnome-layouts Architecture: all diff --git a/debian/pika-gnome-layouts.postinst b/debian/pika-gnome-layouts.postinst index 52075e6..aae74ef 100755 --- a/debian/pika-gnome-layouts.postinst +++ b/debian/pika-gnome-layouts.postinst @@ -1,2 +1,10 @@ -glib-compile-schemas /usr/share/glib-2.0/schemas/ +#!/bin/sh + + +set -e + + update-mime-database /usr/share/mime + update-desktop-database + glib-compile-schemas /usr/share/glib-2.0/schemas + diff --git a/debian/pika-gnome-layouts.postrm b/debian/pika-gnome-layouts.postrm index 52075e6..aae74ef 100755 --- a/debian/pika-gnome-layouts.postrm +++ b/debian/pika-gnome-layouts.postrm @@ -1,2 +1,10 @@ -glib-compile-schemas /usr/share/glib-2.0/schemas/ +#!/bin/sh + + +set -e + + update-mime-database /usr/share/mime + update-desktop-database + glib-compile-schemas /usr/share/glib-2.0/schemas + diff --git a/usr/lib/pika/gnome-layouts/accent-colors/blue.svg b/resources/accent-color-icons/blue.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/accent-colors/blue.svg rename to resources/accent-color-icons/blue.svg diff --git a/usr/lib/pika/gnome-layouts/accent-colors/gray.svg b/resources/accent-color-icons/gray.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/accent-colors/gray.svg rename to resources/accent-color-icons/gray.svg diff --git a/usr/lib/pika/gnome-layouts/accent-colors/green.svg b/resources/accent-color-icons/green.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/accent-colors/green.svg rename to resources/accent-color-icons/green.svg diff --git a/usr/lib/pika/gnome-layouts/accent-colors/orange.svg b/resources/accent-color-icons/orange.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/accent-colors/orange.svg rename to resources/accent-color-icons/orange.svg diff --git a/usr/lib/pika/gnome-layouts/accent-colors/pink.svg b/resources/accent-color-icons/pink.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/accent-colors/pink.svg rename to resources/accent-color-icons/pink.svg diff --git a/usr/lib/pika/gnome-layouts/accent-colors/purple.svg b/resources/accent-color-icons/purple.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/accent-colors/purple.svg rename to resources/accent-color-icons/purple.svg diff --git a/usr/lib/pika/gnome-layouts/accent-colors/red.svg b/resources/accent-color-icons/red.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/accent-colors/red.svg rename to resources/accent-color-icons/red.svg diff --git a/usr/lib/pika/gnome-layouts/accent-colors/teal.svg b/resources/accent-color-icons/teal.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/accent-colors/teal.svg rename to resources/accent-color-icons/teal.svg diff --git a/usr/lib/pika/gnome-layouts/accent-colors/yellow.svg b/resources/accent-color-icons/yellow.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/accent-colors/yellow.svg rename to resources/accent-color-icons/yellow.svg diff --git a/usr/lib/pika/gnome-layouts/previews/win11.svg b/resources/previews/eleven.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/previews/win11.svg rename to resources/previews/eleven.svg diff --git a/usr/lib/pika/gnome-layouts/previews/gnome.svg b/resources/previews/gnome.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/previews/gnome.svg rename to resources/previews/gnome.svg diff --git a/usr/lib/pika/gnome-layouts/previews/gnome2.svg b/resources/previews/gnome2.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/previews/gnome2.svg rename to resources/previews/gnome2.svg diff --git a/usr/lib/pika/gnome-layouts/previews/macos.svg b/resources/previews/pineapple.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/previews/macos.svg rename to resources/previews/pineapple.svg diff --git a/usr/lib/pika/gnome-layouts/previews/win10.svg b/resources/previews/traditional.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/previews/win10.svg rename to resources/previews/traditional.svg diff --git a/usr/lib/pika/gnome-layouts/previews/unity.svg b/resources/previews/unity.svg similarity index 100% rename from usr/lib/pika/gnome-layouts/previews/unity.svg rename to resources/previews/unity.svg diff --git a/resources/resources.gresource.xml b/resources/resources.gresource.xml new file mode 100644 index 0000000..ea73474 --- /dev/null +++ b/resources/resources.gresource.xml @@ -0,0 +1,20 @@ + + + + accent-color-icons/blue.svg + accent-color-icons/gray.svg + accent-color-icons/green.svg + accent-color-icons/orange.svg + accent-color-icons/pink.svg + accent-color-icons/purple.svg + accent-color-icons/red.svg + accent-color-icons/teal.svg + accent-color-icons/yellow.svg + previews/gnome.svg + previews/gnome2.svg + previews/pineapple.svg + previews/unity.svg + previews/traditional.svg + previews/eleven.svg + + diff --git a/src/build_ui.rs b/src/build_ui.rs new file mode 100644 index 0000000..bf7c70a --- /dev/null +++ b/src/build_ui.rs @@ -0,0 +1,81 @@ +use gtk::{gio as gio, glib as glib, prelude::*}; +use glib::clone; +use crate::{content, config::{APP_ID, APP_ICON, APP_GITHUB, VERSION}}; + +pub fn build_ui(app: &adw::Application) { + gtk::glib::set_prgname(Some(t!("app_name").to_string())); + glib::set_application_name(&t!("app_name").to_string()); + let glib_settings = gio::Settings::new(APP_ID); + + let window_headerbar = adw::HeaderBar::builder() + .title_widget( + &adw::WindowTitle::builder() + .title(t!("application_name")) + .build(), + ) + .build(); + + let content_stack = gtk::Stack::builder() + .build(); + + content::content(&content_stack); + + let window_toolbar = adw::ToolbarView::builder().content(&content_stack).build(); + + let window = adw::ApplicationWindow::builder() + .title(t!("app_name")) + .application(app) + .content(&window_toolbar) + .icon_name(APP_ICON) + .default_width(glib_settings.int("window-width")) + .default_height(glib_settings.int("window-height")) + .width_request(700) + .height_request(500) + .startup_id(APP_ID) + .build(); + + if glib_settings.boolean("is-maximized") == true { + window.maximize() + } + + window_toolbar.add_top_bar(&window_headerbar); + + window.connect_close_request(move |window| { + if let Some(application) = window.application() { + save_window_size(&window, &glib_settings); + application.remove_window(window); + } + glib::Propagation::Proceed + }); + + let credits_button = gtk::Button::builder() + .icon_name("dialog-information-symbolic") + .build(); + + let credits_window = adw::AboutWindow::builder() + .application_icon(APP_ICON) + .application_name(t!("application_name")) + .transient_for(&window) + .version(VERSION) + .hide_on_close(true) + .developer_name(t!("developer_name")) + .license_type(gtk::License::Mpl20) + .issue_url(APP_GITHUB.to_owned() + "/issues") + .build(); + + window_headerbar.pack_end(&credits_button); + credits_button.connect_clicked( + move |_| + credits_window.present() + ); + + window.present(); +} + +fn save_window_size(window: &adw::ApplicationWindow, glib_settings: &gio::Settings) { + let size = window.default_size(); + + let _ = glib_settings.set_int("window-width", size.0); + let _ = glib_settings.set_int("window-height", size.1); + let _ = glib_settings.set_boolean("is-maximized", window.is_maximized()); +} \ No newline at end of file diff --git a/src/config.rs b/src/config.rs new file mode 100644 index 0000000..a194a26 --- /dev/null +++ b/src/config.rs @@ -0,0 +1,4 @@ +pub const APP_ID: &str = "com.github.pikaos-linux.pikagnomelayouts"; +pub const VERSION: &str = env!("CARGO_PKG_VERSION"); +pub const APP_ICON: &str = "com.github.pikaos-linux.pikagnomelayouts"; +pub const APP_GITHUB: &str = "https://git.pika-os.com/gnome-packages/pika-gnome-layouts"; \ No newline at end of file diff --git a/src/content/mod.rs b/src/content/mod.rs new file mode 100644 index 0000000..c70477e --- /dev/null +++ b/src/content/mod.rs @@ -0,0 +1,64 @@ +use gtk::prelude::*; + +struct DesktopLayout { + name: String, + id: i32, +} + +pub fn content( + content_stack: >k::Stack, +) { + let content_box = gtk::Box::builder() + .orientation(gtk::Orientation::Vertical) + .vexpand(true) + .hexpand(true) + .build(); + + let desktop_layouts = [ + &DesktopLayout { + name: "gnome".to_string(), + id: 0 + }, + &DesktopLayout { + name: "traditional".to_string(), + id: 0 + }, + &DesktopLayout { + name: "eleven".to_string(), + id: 0 + }, + &DesktopLayout { + name: "pineapple".to_string(), + id: 0 + }, + &DesktopLayout { + name: "gnome2".to_string(), + id: 0 + }, + &DesktopLayout { + name: "unity".to_string(), + id: 0 + }, + ]; + + let null_checkbutton = gtk::CheckButton::builder() + .build(); + + for layout in desktop_layouts { + let layout_name = layout.name.clone(); + let layout_id = layout.id; + + let layout_box = gtk::Box::builder() + .orientation(gtk::Orientation::Horizontal) + .build(); + let layout_preview = gtk::Image::builder() + .resource(format!("/com/github/pikaos-linux/pikagnomelayouts/previews/{}.svg", &layout_name)) + .build(); + content_box.append(&layout_preview); + } + + content_stack.add_named( + &content_box, + Some("content_page"), + ); +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..fc24b6e --- /dev/null +++ b/src/main.rs @@ -0,0 +1,51 @@ +mod config; +mod build_ui; +mod content; + +use std::env; +use gtk::{gio,gdk,CssProvider,prelude::*, glib as glib}; +use config::APP_ID; + +use crate::gdk::Display; + +#[macro_use] +extern crate rust_i18n; +i18n!("locales", fallback = "en_US"); + +fn main() -> glib::ExitCode { + let current_locale = match env::var_os("LANG") { + Some(v) => v.into_string().unwrap().chars() + .take_while(|&ch| ch != '.') + .collect::(), + None => panic!("$LANG is not set"), + }; + rust_i18n::set_locale(¤t_locale); + + let app = adw::Application::builder().application_id(APP_ID).build(); + + app.connect_startup(|app| { + load_gresource(); + load_css(); + app.connect_activate(build_ui::build_ui); + }); + + // Run the application + app.run() +} + +fn load_gresource() { + gio::resources_register_include!("resources.gresource").expect("Failed to register resources."); +} + +fn load_css() { + // Load the CSS file and add it to the provider + /*let provider = CssProvider::new(); + provider.load_from_resource("/com/github/cosmicfusion/fedora-kernel-manager/css/style.css"); + + // Add the provider to the default screen + gtk::style_context_add_provider_for_display( + &Display::default().expect("Could not connect to a display."), + &provider, + gtk::STYLE_PROVIDER_PRIORITY_APPLICATION, + );*/ +} diff --git a/usr/bin/pika-gnome-layouts b/usr/bin/pika-gnome-layouts deleted file mode 100755 index 864a7ca..0000000 --- a/usr/bin/pika-gnome-layouts +++ /dev/null @@ -1,7 +0,0 @@ -#! /bin/bash -if echo $XDG_SESSION_DESKTOP | grep -i ubuntu -then - python3 /usr/lib/pika/gnome-layouts/main.py -else - zenity --error --text="current session isn't gnome" -fi diff --git a/usr/lib/pika/gnome-layouts/all.sh b/usr/lib/pika/gnome-layouts/all.sh deleted file mode 100755 index f1d1b38..0000000 --- a/usr/lib/pika/gnome-layouts/all.sh +++ /dev/null @@ -1,10 +0,0 @@ -#! /bin/bash -export ALL=True - -for f in /etc/nobara/scripts/nobara-layouts/settings-scripts/*.sh; do - bash "$f" enable -done - -export RELOG_NEEDED=1 - -/etc/nobara/scripts/nobara-layouts/reload.sh diff --git a/usr/lib/pika/gnome-layouts/dconf-accent.sh b/usr/lib/pika/gnome-layouts/dconf-accent.sh deleted file mode 100755 index 69d92cf..0000000 --- a/usr/lib/pika/gnome-layouts/dconf-accent.sh +++ /dev/null @@ -1,19 +0,0 @@ -#! /usr/bin/bash -gnome-extensions enable user-theme@gnome-shell-extensions.gcampax.github.com -if [[ $1 == Teal ]] -then - if dconf read /org/gnome/desktop/interface/color-scheme | grep dark - then - gdbus call --session --dest 'org.gnome.Shell' --object-path '/org/gnome/Shell' --method 'org.gnome.Shell.ScreenTransition' & gsettings set org.gnome.shell.extensions.user-theme name "Jasper-Dark" && gsettings set org.gnome.desktop.interface gtk-theme "Jasper-Dark" && cp -rfv "/usr/share/themes/Jasper-Dark"/gtk-4.0 "$HOME"/.config/ - - else - gdbus call --session --dest 'org.gnome.Shell' --object-path '/org/gnome/Shell' --method 'org.gnome.Shell.ScreenTransition' & gsettings set org.gnome.shell.extensions.user-theme name "Jasper-Light" && gsettings set org.gnome.desktop.interface gtk-theme "Jasper-Light" && cp -rfv "/usr/share/themes/Jasper-Light"/gtk-4.0 "$HOME"/.config/ - fi -else - if dconf read /org/gnome/desktop/interface/color-scheme | grep dark - then - gdbus call --session --dest 'org.gnome.Shell' --object-path '/org/gnome/Shell' --method 'org.gnome.Shell.ScreenTransition' & gsettings set org.gnome.shell.extensions.user-theme name "Jasper-$1-Dark" && gsettings set org.gnome.desktop.interface gtk-theme "Jasper-$1-Dark" && cp -rfv "/usr/share/themes/Jasper-$1-Dark"/gtk-4.0 "$HOME"/.config/ - else - gdbus call --session --dest 'org.gnome.Shell' --object-path '/org/gnome/Shell' --method 'org.gnome.Shell.ScreenTransition' & gsettings set org.gnome.shell.extensions.user-theme name "Jasper-$1-Light" && gsettings set org.gnome.desktop.interface gtk-theme "Jasper-$1-Light" && cp -rfv "/usr/share/themes/Jasper-$1-Light"/gtk-4.0 "$HOME"/.config/ - fi -fi diff --git a/usr/lib/pika/gnome-layouts/main.py b/usr/lib/pika/gnome-layouts/main.py deleted file mode 100644 index 6c2da44..0000000 --- a/usr/lib/pika/gnome-layouts/main.py +++ /dev/null @@ -1,150 +0,0 @@ -import gi -gi.require_version("Gtk", "3.0") -from gi.repository import Gtk, Gio -import subprocess -import os -import os.path -from pathlib import Path - -import time -import threading - -class Application: - - ### MAIN WINDOW ### - def __init__(self): - self.column_names = False - self.drop_nan = False - self.df = None - application_id="org.pika.layouts" - - self.builder = Gtk.Builder() - self.builder.add_from_file("/usr/lib/pika/gnome-layouts/main.ui") - self.builder.connect_signals(self) - win = self.builder.get_object("main_window") - - - ### Enable Extensions - - subprocess.run(["gsettings set org.gnome.shell disable-user-extensions false"], shell=True, stdout=subprocess.DEVNULL) - - accent_box = self.builder.get_object("accent_box") - - accent_output = subprocess.run(["dconf read /org/pika/layouts/pika-theme | grep 1"], shell=True) - - if (accent_output.returncode) != 0: - accent_box.hide() - - ### Window props ### - - win.connect("destroy", Gtk.main_quit) - - self.window = self.builder.get_object("main_window") - self.window.show() - - settings = Gio.Settings.new("org.pika.layouts") - - - ### Themes - def on_pika_theme_button_pressed(self, widget): - accent_box = self.builder.get_object("accent_box") - subprocess.run(["/usr/lib/pika/gnome-layouts/theme.sh pika"], shell=True) - accent_box.show() - def on_gnome_theme_button_pressed(self, widget): - accent_box = self.builder.get_object("accent_box") - subprocess.run(["/usr/lib/pika/gnome-layouts/theme.sh gnome"], shell=True) - accent_box.hide() - - - if settings.get_int("layout-num") == 1: - win10toggle = self.builder.get_object("win10_button") - win10toggle.set_active(True) - - if settings.get_int("layout-num") == 2: - win11toggle = self.builder.get_object("win11_button") - win11toggle.set_active(True) - - if settings.get_int("layout-num") == 3: - gnometoggle = self.builder.get_object("gnome_button") - gnometoggle.set_active(True) - - if settings.get_int("layout-num") == 4: - macostoggle = self.builder.get_object("macos_button") - macostoggle.set_active(True) - if settings.get_int("layout-num") == 5: - macostoggle = self.builder.get_object("gnome2_button") - macostoggle.set_active(True) - if settings.get_int("layout-num") == 6: - macostoggle = self.builder.get_object("unity_button") - macostoggle.set_active(True) - - ### Layouts ### - - def on_win10_button_pressed(self, widget): - settings = Gio.Settings.new("org.pika.layouts") - settings.set_int("layout-num", 1) - subprocess.run(["/usr/lib/pika/gnome-layouts/layout-scripts/win10.sh"], shell=True) - - def on_win11_button_pressed(self, widget): - settings = Gio.Settings.new("org.pika.layouts") - settings.set_int("layout-num", 2) - subprocess.run(["/usr/lib/pika/gnome-layouts/layout-scripts/win11.sh"], shell=True) - def on_gnome_button_pressed(self, widget): - settings = Gio.Settings.new("org.pika.layouts") - settings.set_int("layout-num", 3) - subprocess.run(["/usr/lib/pika/gnome-layouts/layout-scripts/reset.sh"], shell=True) - def on_macos_button_pressed(self, widget): - settings = Gio.Settings.new("org.pika.layouts") - settings.set_int("layout-num", 4) - subprocess.run(["/usr/lib/pika/gnome-layouts/layout-scripts/macos.sh"], shell=True) - def on_gnome2_button_pressed(self, widget): - settings = Gio.Settings.new("org.pika.layouts") - settings.set_int("layout-num", 5) - subprocess.run(["/usr/lib/pika/gnome-layouts/layout-scripts/gnome2.sh"], shell=True) - def on_unity_button_pressed(self, widget): - settings = Gio.Settings.new("org.pika.layouts") - settings.set_int("layout-num", 6) - subprocess.run(["/usr/lib/pika/gnome-layouts/layout-scripts/unity.sh"], shell=True) - ### Settings ### - - ### Accent Colors - - def blue_accent_button_pressed_cb (self, widget): - subprocess.run(["/usr/lib/pika/gnome-layouts/dconf-accent.sh Blue"], shell=True) - subprocess.run(["pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C blue"], shell=True) - subprocess.run(["echo 'theme change done!'"], shell=True) - def green_accent_button_pressed_cb (self, widget): - subprocess.run(["/usr/lib/pika/gnome-layouts/dconf-accent.sh Green"], shell=True) - subprocess.run(["pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C green"], shell=True) - subprocess.run(["echo 'theme change done!'"], shell=True) - def yellow_accent_button_pressed_cb (self, widget): - subprocess.run(["/usr/lib/pika/gnome-layouts/dconf-accent.sh Yellow"], shell=True) - subprocess.run(["pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C yellow"], shell=True) - subprocess.run(["echo 'theme change done!'"], shell=True) - def orange_accent_button_pressed_cb (self, widget): - subprocess.run(["/usr/lib/pika/gnome-layouts/dconf-accent.sh Orange"], shell=True) - subprocess.run(["pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C orange"], shell=True) - subprocess.run(["echo 'theme change done!'"], shell=True) - def red_accent_button_pressed_cb (self, widget): - subprocess.run(["/usr/lib/pika/gnome-layouts/dconf-accent.sh Red"], shell=True) - subprocess.run(["pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C red"], shell=True) - subprocess.run(["echo 'theme change done!'"], shell=True) - def pink_accent_button_pressed_cb (self, widget): - subprocess.run(["/usr/lib/pika/gnome-layouts/dconf-accent.sh Pink"], shell=True) - subprocess.run(["pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C pink"], shell=True) - subprocess.run(["echo 'theme change done!'"], shell=True) - def purple_accent_button_pressed_cb (self, widget): - subprocess.run(["/usr/lib/pika/gnome-layouts/dconf-accent.sh Purple"], shell=True) - subprocess.run(["pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C violet"], shell=True) - subprocess.run(["echo 'theme change done!'"], shell=True) - def teal_accent_button_pressed_cb (self, widget): - subprocess.run(["/usr/lib/pika/gnome-layouts/dconf-accent.sh Teal"], shell=True) - subprocess.run(["pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C teal"], shell=True) - subprocess.run(["echo 'theme change done!'"], shell=True) - def gray_accent_button_pressed_cb (self, widget): - subprocess.run(["/usr/lib/pika/gnome-layouts/dconf-accent.sh Grey"], shell=True) - subprocess.run(["pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C grey"], shell=True) - subprocess.run(["echo 'theme change done!'"], shell=True) - -Application() -Gtk.main() diff --git a/usr/lib/pika/gnome-layouts/main.ui b/usr/lib/pika/gnome-layouts/main.ui deleted file mode 100644 index 20e0cde..0000000 --- a/usr/lib/pika/gnome-layouts/main.ui +++ /dev/null @@ -1,835 +0,0 @@ - - - - - - radiobutton - True - True - False - True - True - - - 700 - 520 - False - 700 - 512 - False - - - True - False - vertical - - - True - False - crossfade - - - True - True - never - in - - - True - False - - - True - False - 5 - 5 - 5 - 5 - vertical - - - - True - False - 10 - 10 - True - - - True - False - vertical - 2 - - - True - False - center - center - 10 - 10 - 10 - 10 - 10 - 10 - ../../../../../../../../../usr/lib/pika/gnome-layouts/previews/win10.svg - - - False - True - 0 - - - - - Traditional - True - True - False - The good old michealsoft binbows layout: -* A Bottom taskbar. -* An Application Menu binded to the "Super Key". -* Desktop Icons. -* Full window controls on the right side of the window. - center - center - True - radiobutton1 - - - - True - True - 1 - - - - - 0 - 0 - - - - - True - False - vertical - 2 - - - True - False - center - center - 10 - 10 - 10 - 10 - 10 - 10 - ../../../../../../../../../usr/lib/pika/gnome-layouts/previews/win11.svg - - - False - True - 0 - - - - - Eleven - True - True - False - The michealsoft binbows layout but newer: -* A Bottom taskbar with centered icons. -* A More modern Application Menu binded to the "Super Key". -* Desktop Icons. -* Full window controls on the right side of the window. -* "Activities" button for wasy workspace management. - center - center - True - radiobutton1 - - - - True - True - 1 - - - - - 1 - 0 - - - - - True - False - vertical - 2 - - - True - False - center - center - 10 - 10 - 10 - 10 - 10 - 10 - ../../../../../../../../../usr/lib/pika/gnome-layouts/previews/macos.svg - - - False - True - 0 - - - - - Pineapple - True - True - False - The Ma....... i mean the PearOS layout: -* A Bottom Dock and a top panel. -* A Fullscreen Application grid. -* Desktop Icons. -* Full window controls on the left side of the window. -* "Activities" button for wasy workspace management. - center - center - True - radiobutton1 - - - - True - True - 1 - - - - - 2 - 0 - - - - - True - False - vertical - 2 - - - True - False - center - center - 10 - 10 - 10 - 10 - 10 - 10 - ../../../../../../../../../usr/lib/pika/gnome-layouts/previews/unity.svg - - - False - True - 0 - - - - - Unity - True - True - False - The Ubuntu Unity Experience: -* A Leftside Dock and a top panel. -* Desktop Icons. -* Full window controls on the left side of the window. - center - center - True - radiobutton1 - - - - True - True - 1 - - - - - 2 - 1 - - - - - True - False - vertical - 2 - - - True - False - center - center - 10 - 10 - 10 - 10 - 10 - 10 - ../../../../../../../../../usr/lib/pika/gnome-layouts/previews/gnome2.svg - - - False - True - 0 - - - - - GNOME 2 - True - True - False - The Old Gnome/Mate Experience. - center - center - True - radiobutton1 - - - - True - True - 1 - - - - - 1 - 1 - - - - - True - False - vertical - 2 - - - True - False - center - center - 10 - 10 - 10 - 10 - 10 - 10 - ../../../../../../../../../usr/lib/pika/gnome-layouts/previews/gnome.svg - - - False - True - 0 - - - - - GNOME - True - True - False - The Stock GNOME Experience. - center - center - True - radiobutton1 - - - - True - True - 1 - - - - - 0 - 1 - - - - - False - True - 1 - - - - - - - - - Layouts - Layouts - - - - - True - True - never - in - - - True - False - - - True - False - 5 - 5 - 5 - 5 - vertical - 10 - - - accent_box - True - False - center - start - - - True - True - True - center - center - none - - - - True - False - Blue - ../../../../../../../../../usr/lib/pika/gnome-layouts/accent-colors/blue.svg - - - - - False - True - 0 - - - - - True - True - True - center - center - none - - - - True - False - Green - ../../../../../../../../../usr/lib/pika/gnome-layouts/accent-colors/green.svg - - - - - False - True - 1 - - - - - True - True - True - center - center - none - - - - True - False - Yellow - ../../../../../../../../../usr/lib/pika/gnome-layouts/accent-colors/yellow.svg - - - - - False - True - 2 - - - - - True - True - True - center - center - none - - - - True - False - Orange - ../../../../../../../../../usr/lib/pika/gnome-layouts/accent-colors/orange.svg - - - - - False - True - 3 - - - - - True - True - True - center - center - none - - - - True - False - Red - ../../../../../../../../../usr/lib/pika/gnome-layouts/accent-colors/red.svg - - - - - False - True - 4 - - - - - True - True - True - center - center - none - - - - True - False - Pink - ../../../../../../../../../usr/lib/pika/gnome-layouts/accent-colors/pink.svg - - - - - False - True - 5 - - - - - True - True - True - center - center - none - - - - True - False - Purple - ../../../../../../../../../usr/lib/pika/gnome-layouts/accent-colors/purple.svg - - - - - False - True - 6 - - - - - True - True - True - center - center - none - - - - True - False - Teal - ../../../../../../../../../usr/lib/pika/gnome-layouts/accent-colors/teal.svg - - - - - False - True - 7 - - - - - True - True - True - center - center - none - - - - True - False - Gray - ../../../../../../../../../usr/lib/pika/gnome-layouts/accent-colors/gray.svg - - - - - False - True - 8 - - - - - False - True - 15 - 0 - - - - - - True - False - 5 - True - - - True - True - True - center - center - 5 - 5 - 15 - 5 - - - - True - False - vertical - - - True - False - 36 - pika-logo - - - False - True - 0 - - - - - True - False - PikaOS Theming - - - False - True - 1 - - - - - - - 0 - 1 - - - - - True - True - True - center - center - 5 - 5 - 15 - 5 - - - - True - False - vertical - - - True - False - 36 - gnome-foot - - - False - True - 0 - - - - - True - False - Gnome Theming - - - False - True - 1 - - - - - - - 1 - 1 - - - - - True - False - ../../../../../../../../../usr/lib/pika/gnome-layouts/previews/pika-theme.png - - - 0 - 0 - - - - - True - False - ../../../../../../../../../usr/lib/pika/gnome-layouts/previews/gnome-theme.png - 96 - - - 1 - 0 - - - - - False - True - 1 - - - - - - - - - themes - Themes & Colors - 1 - - - - - True - True - 1 - - - - - - - True - False - True - - - True - False - center - vertical - True - - - True - False - True - main_stack - - - False - True - 0 - - - - - - - - diff --git a/usr/lib/pika/gnome-layouts/papirus-folders b/usr/lib/pika/gnome-layouts/papirus-folders deleted file mode 100755 index 223babd..0000000 --- a/usr/lib/pika/gnome-layouts/papirus-folders +++ /dev/null @@ -1,533 +0,0 @@ -#!/usr/bin/env bash -# This script allows changing the color of folders in Papirus icon theme -# -# @author: Sergei Eremenko (https://github.com/SmartFinn) -# @license: MIT license (MIT) -# @link: https://github.com/PapirusDevelopmentTeam/papirus-folders - -if test -z "$BASH_VERSION"; then - printf "Error: this script only works in bash.\n" >&2 - exit 1 -fi - -if (( BASH_VERSINFO[0] * 10 + BASH_VERSINFO[1] < 40 )); then - printf "Error: this script requires bash version >= 4.0\n" >&2 - exit 1 -fi - -# set -x # Uncomment to debug this shell script -set -o errexit \ - -o noclobber \ - -o pipefail - -readonly THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" -readonly PROGNAME="$(basename "${BASH_SOURCE[0]}")" -readonly VERSION="1.12.0" -readonly -a ARGS=("$@") - -msg() { - printf "%s: %b\n" "$PROGNAME" "$*" -} - -verbose() { - [ -t 4 ] || return 0 - msg "$@" >&4 -} - -err() { - msg "Error:" "$*" >&2 -} - -_exit() { - msg "$*" "Exiting ..." - exit 0 -} - -fatal() { - err "$*" - exit 1 -} - -usage() { - cat <<- EOF - USAGE - $ $PROGNAME [options] -t {-C --color} - $ $PROGNAME [options] -t {-D --default} - $ $PROGNAME [options] -t {-R --restore} - OPERATIONS - -C --color change color of folders - -D --default back to the default color - -R --restore restore the last used color from the config file - OPTIONS - -l --list show available colors - -o --once do not save the changes to the config file - -t --theme make changes to the specified theme (Default: Papirus) - -u --update-caches update icon caches for Papirus and siblings - -V --version print $PROGNAME version and exit - -v --verbose be verbose - -h --help show this help - EOF - - exit "${1:-0}" -} - -_is_root_user() { - if [ "$(id -u)" -eq 0 ]; then - return 0 - fi - - return 1 -} - -_is_user_dir() { - [ -n "$USER_HOME" ] || return 1 - - # if $THEME_DIR is placed in home dir - if [ -z "${THEME_DIR##"$USER_HOME"/*}" ]; then - return 0 - fi - - return 1 -} - -_is_writable() { - if [ -w "$THEME_DIR/48x48/places/folder.svg" ]; then - return 0 - fi - - return 1 -} - -_is_valid_color() { - local color="$1" - - eval "$(declare_colors)" - - for i in "${colors[@]}"; do - [ "$i" == "$color" ] || continue - return 0 - done - - return 1 -} - -declare_colors() { - local color='' - local -a colors=() - local -a valid_colors=("adwaita" "black" "blue" "bluegrey" "breeze" "brown" - "carmine" "cyan" "darkcyan" "deeporange" "green" "grey" - "indigo" "magenta" "nordic" "orange" "palebrown" "paleorange" - "pink" "purple" "red" "teal" "violet" "white" "yaru" "yellow") - - for color in "${valid_colors[@]}"; do - if [ -e "$THEME_DIR/48x48/places/folder-$color.svg" ]; then - colors=( "${colors[@]}" "$color" ) - fi - done - - # return array of colors - declare -p colors -} - -declare_current_color() { - local icon_file icon_name current_color='' - - icon_file=$(readlink -f "$THEME_DIR/48x48/places/folder.svg") - icon_name=$(basename "$icon_file" .svg) - current_color="${icon_name##*-}" - - declare -p current_color -} - -get_theme_dir() { - local data_dir icons_dir - local -a data_dirs=() - local -a icons_dirs=( - "$USER_HOME/.icons" - "${XDG_DATA_HOME:-$USER_HOME/.local/share}/icons" - ) - - # Get data directories from XDG_DATA_DIRS variable and - # convert colon-separated list into bash array - IFS=: read -ra data_dirs <<< "${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" - - for data_dir in "${data_dirs[@]}"; do - [ -d "$data_dir/icons" ] || continue - icons_dirs=( "${icons_dirs[@]}" "${data_dir%/}/icons" ) - done - - for icons_dir in "${icons_dirs[@]}"; do - [ -f "$icons_dir/$THEME_NAME/index.theme" ] || continue - printf '%s' "$icons_dir/$THEME_NAME" - verbose "'$THEME_NAME' is found in '$icons_dir'." - return 0 - done - - return 1 -} - -get_real_user() { - # return name of the user that runs the script - local user='' - - if [ -n "$PKEXEC_UID" ]; then - user="$(id -nu "$PKEXEC_UID")" - elif [ -n "$SUDO_USER" ]; then - user="$SUDO_USER" - else - user="$(id -nu)" - fi - - printf '%s' "$user" -} - -get_user_home() { - local user="$1" - - getent passwd "$user" | awk -F: '{print $(NF-1)}' -} - -config() { - # usage: config [{-n --new}] {-s --set} key=value... | {-g --get} key... - local config_dir - local config_file - - if _is_user_dir; then - config_dir="${XDG_CONFIG_HOME:-$USER_HOME/.config}/$PROGNAME" - else - config_dir="/var/lib/$PROGNAME" - fi - - config_file="$config_dir/keep" - - while (( "$#" )); do - case "$1" in - -g|--get) shift; - [ -f "$config_file" ] || return 1 - - for key; do - [ -n "$key" ] || continue - awk -F= -v key="$key" ' - $1 == key { - print $2 - exit - } - ' "$config_file" - done - - break - ;; - -n|--new) shift; - rm -f "$config_file" - ;; - -e|--exists) shift; - # return 1 if test config_file not exist or empty - if [ -f "$config_file" ] && [ -s "$config_file" ]; then - return 0 - else - return 1 - fi - ;; - -s|--set) shift; - [ "$ONCE" -eq "1" ] && break - [ -d "$config_dir" ] || mkdir -p "$config_dir" - [ -f "$config_file" ] || touch "$config_file" - - verbose "Saving params to '$config_file' ..." - cat >> "$config_file" <<- EOF - $(for key_value; do echo "$key_value"; done) - EOF - - break - ;; - *) - err "illegal option -- '$1'" - return 1 - esac - done - - return 0 -} - -change_color() { - local color="${1:?${FUNCNAME[-1]}: color is not set}" - local size prefix file_path file_name symlink_path - local -a sizes=(22x22 24x24 32x32 48x48 64x64) - local -a prefixes=("folder-$color" "user-$color") - - for size in "${sizes[@]}"; do - for prefix in "${prefixes[@]}"; do - for file_path in "$THEME_DIR/$size/places/$prefix"{-*,}.svg; do - [ -f "$file_path" ] || continue # is a file - [ -L "$file_path" ] && continue # is not a symlink - - file_name="${file_path##*/}" - symlink_path="${file_path/-$color/}" # remove color suffix - - ln -sf "$file_name" "$symlink_path" || { - fatal "Fail to create '$symlink_path' symlink" - } - done - done - done -} - -list_colors() { - local color='' prefix='' - - eval "$(declare_colors)" - eval "$(declare_current_color)" - - for color in "${colors[@]}"; do - if [ "$current_color" == "$color" ]; then - prefix='>' - else - prefix='' - fi - - printf '%2s %s\n' "$prefix" "$color" - done -} - -do_change_color() { - _is_valid_color "$SELECTED_COLOR" || { - fatal "Unable to find '$SELECTED_COLOR' color in '$THEME_NAME'" - } - - verify_privileges - - msg "Changing color of folders to '$SELECTED_COLOR' for '$THEME_NAME' ..." - change_color "$SELECTED_COLOR" - config --new --set "theme=$THEME_NAME" "color=$SELECTED_COLOR" - update_icon_cache -} - -do_revert_default() { - verify_privileges - - msg "Restoring default folder color for '$THEME_NAME' ..." - change_color "${DEFAULT_COLORS[$THEME_NAME]:-blue}" - config --new - update_icon_cache -} - -do_restore_color() { - local saved_color='' - - if config --exists; then - THEME_NAME="$(config --get theme)" - saved_color="$(config --get color)" - else - _exit "Unable to find config file." - fi - - THEME_DIR="$(get_theme_dir)" || { - _exit "Unable to find '$THEME_NAME' icon theme." - } - - _is_valid_color "$saved_color" || { - _exit "Unable to find '$saved_color' color in '$THEME_NAME'." - } - - verify_privileges - - change_color "$saved_color" - msg "'$saved_color' color of the folders has been restored." -} - -delete_icon_caches() { - local icon_cache real_user='' real_home='' - - real_user="$(get_real_user)" - real_home="$(get_user_home "$real_user")" - - declare -a icon_caches=( - # KDE 5 icon caches - "$real_home/.cache/icon-cache.kcache" - "/var/tmp/kdecache-$real_user/icon-cache.kcache" - ) - - verbose "Deleting icon caches ..." - for icon_cache in "${icon_caches[@]}"; do - [ -e "$icon_cache" ] || continue - rm -f "$icon_cache" - done -} - -update_icon_cache() { - [ -z "$DISABLE_UPDATE_ICON_CACHE" ] || return 0 - - delete_icon_caches - - verbose "Rebuilding icon cache for '$THEME_NAME' ..." - gtk-update-icon-cache -qf "$THEME_DIR" || true -} - -update_icon_caches() { - local theme='' - - delete_icon_caches - - for theme in "${!DEFAULT_COLORS[@]}"; do - [ -f "$THEME_DIR/../$theme/index.theme" ] || continue - verbose "Rebuilding icon cache for '$theme' ..." - gtk-update-icon-cache -qf "$THEME_DIR/../$theme" || true - done -} - -verify_privileges() { - _is_root_user && return 0 - _is_user_dir && return 0 - _is_writable && return 0 - - verbose "This operation requires root privileges." - - if command -v sudo > /dev/null; then - exec sudo USER_HOME="$USER_HOME" XDG_DATA_DIRS="$XDG_DATA_DIRS" \ - "$THIS_SCRIPT" "${ARGS[@]}" - else - fatal "You need to be root to run this command." - fi -} - -parse_args() { - local arg='' opt='' - local -a args=() - - # Show help if no argument is passed - if [ -z "$1" ]; then - usage 2 - fi - - # Translate --gnu-long-options to -g (short options) - for arg; do - case "$arg" in - --help) args+=( -h ) ;; - --list) args+=( -l ) ;; - --once) args+=( -o ) ;; - --theme) args+=( -t ) ;; - --update-caches) args+=( -u ) ;; - --verbose) args+=( -v ) ;; - --color|--colour) args+=( -C ) ;; - --default) args+=( -D ) ;; - --restore) args+=( -R ) ;; - --version) args+=( -V ) ;; - --[0-9a-Z]*) - err "illegal option -- '$arg'" - usage 2 - ;; - *) args+=("$arg") - esac - done - - # Reset the positional parameters to the short options - set -- "${args[@]}" - - while getopts ":C:DRlot:uvVh" opt; do - case "$opt" in - C ) OPERATIONS+=("change-color") - SELECTED_COLOR="$OPTARG" - ;; - D ) OPERATIONS+=("revert-default") ;; - R ) OPERATIONS+=("restore-color") ;; - l ) OPERATIONS+=("list-colors") ;; - o ) ONCE=1 ;; - t ) THEME_NAME="$OPTARG" ;; - u ) OPERATIONS+=("update-icon-caches") ;; - v ) VERBOSE=1 ;; - V ) printf "%s %s\n" "$PROGNAME" "$VERSION" - exit 0 - ;; - h ) usage 0 ;; - : ) err "option requires an argument -- '-$OPTARG'" - usage 2 - ;; - \?) err "illegal option -- '-$OPTARG'" - usage 2 - ;; - esac - done - - shift $((OPTIND-1)) - - # Return an error if any positional parameters are found - if [ -n "$1" ]; then - err "illegal parameter -- '$1'" - usage 2 - fi -} - -main() { - # default values of options - declare THEME_NAME="${THEME_NAME:-Papirus}" - declare -i VERBOSE="${VERBOSE:-0}" - declare -i ONCE="${ONCE:-0}" - declare -A DEFAULT_COLORS=( - ['ePapirus']='blue' - ['Papirus']='blue' - ['Papirus-Dark']='blue' - ) - - declare SELECTED_COLOR='' - declare -a OPERATIONS=() - - parse_args "${ARGS[@]}" - - if [ "$VERBOSE" -eq "1" ]; then - # open a file descriptor for verbose messages - exec 4>&1 - # close the file descriptor before exiting - trap 'exec 4>&-' EXIT HUP INT TERM - fi - - # set USER_HOME variable instead HOME to prevent changing user's icons - # when running with sudo - [ -n "$USER_HOME" ] || USER_HOME="$(get_user_home "$(id -nu)")" - - if [ -f "$THEME_NAME/index.theme" ]; then - # THEME_NAME is a path to an icon theme - THEME_DIR="$(readlink -f "$THEME_NAME")" - THEME_NAME="$(basename "$THEME_DIR")" - verbose "The path to '$THEME_DIR' theme is specified." - else - THEME_DIR="$(get_theme_dir)" || { - fatal "Fail to find '$THEME_NAME' icon theme." - } - fi - - for operation in "${OPERATIONS[@]}"; do - case "$operation" in - change-color) - do_change_color - ;; - revert-default) - do_revert_default - ;; - restore-color) - do_restore_color - ;; - list-colors) - if [ -t 1 ]; then - cat <<- EOF - List of available colors: - $(list_colors) - EOF - else - list_colors - fi - ;; - update-icon-caches) - verify_privileges - update_icon_caches - ;; - esac - done - - verbose "Done!" - - exit 0 -} - -main - -exit 1 diff --git a/usr/lib/pika/gnome-layouts/previews/gnome-theme.png b/usr/lib/pika/gnome-layouts/previews/gnome-theme.png deleted file mode 100644 index 942732b..0000000 Binary files a/usr/lib/pika/gnome-layouts/previews/gnome-theme.png and /dev/null differ diff --git a/usr/lib/pika/gnome-layouts/previews/pika-theme.png b/usr/lib/pika/gnome-layouts/previews/pika-theme.png deleted file mode 100644 index 237a25e..0000000 Binary files a/usr/lib/pika/gnome-layouts/previews/pika-theme.png and /dev/null differ diff --git a/usr/lib/pika/gnome-layouts/reload.sh b/usr/lib/pika/gnome-layouts/reload.sh deleted file mode 100755 index bb04cb8..0000000 --- a/usr/lib/pika/gnome-layouts/reload.sh +++ /dev/null @@ -1,8 +0,0 @@ -#! /bin/bash - - if [[ "$RELOG_NEEDED" == 1 ]]; then - if zenity --question --text="New extensions have been installed!, reload required!" - then - gnome-session-quit --force --no-prompt - fi - fi diff --git a/usr/lib/pika/gnome-layouts/theme.sh b/usr/lib/pika/gnome-layouts/theme.sh deleted file mode 100755 index 6d6dc3d..0000000 --- a/usr/lib/pika/gnome-layouts/theme.sh +++ /dev/null @@ -1,56 +0,0 @@ -#! /bin/bash -rm -rfv $HOME/.config/gtk-4.0 - -if [[ $1 == pika ]] -then -dconf write /org/pika/layouts/pika-theme 1 -gnome-extensions enable user-theme@gnome-shell-extensions.gcampax.github.com -dconf write /org/gnome/desktop/wm/preferences/titlebar-font "'Ubuntu Bold 11'" -dconf write /org/gnome/desktop/sound/theme-name "'pika'" -dconf write /org/gnome/desktop/interface/icon-theme "'Papirus'" -dconf write /org/gnome/desktop/interface/monospace-font-name "'Ubuntu Mono 13'" -dconf write /org/gnome/desktop/interface/document-font-name "'Sans 11'" -dconf write /org/gnome/desktop/interface/font-name "'Ubuntu 11'" -dconf write /org/gnome/desktop/interface/gtk-theme "'Jasper-Yellow-Dark'" -dconf write /org/gnome/shell/extensions/user-theme/name "'Jasper-Yellow-Dark'" -echo '#! /bin/bash' > $HOME/.config/pika_theme || touch $HOME/.config/pika_theme && echo '#! /bin/bash' > $HOME/.config/pika_theme -echo 'KVANTUM_THEME_DARK=Orchis-dark#' >> $HOME/.config/pika_theme -echo 'KVANTUM_THEME_LIGHT=Orchis#' >> $HOME/.config/pika_theme -echo 'GTK_THEME_DARK=$(dconf read /org/gnome/desktop/interface/gtk-theme | 'sed \"s+\'++\"' | 'sed \"s+\'++\"' | 'sed \"s+-Dark++\"' | 'sed \"s+-Light++\"')'-Dark >> $HOME/.config/pika_theme -echo 'GTK_THEME_LIGHT=$(dconf read /org/gnome/desktop/interface/gtk-theme | 'sed \"s+\'++\"' | 'sed \"s+\'++\"' | 'sed \"s+-Dark++\"' | 'sed \"s+-Light++\"')'-Light >> $HOME/.config/pika_theme -echo 'GTK_THEME_PATH_DARK=/usr/share/themes/$GTK_THEME_DARK' >> $HOME/.config/pika_theme -echo 'GTK_THEME_PATH_LIGHT=/usr/share/themes/GTK_THEME_LIGHT' >> $HOME/.config/pika_theme -dconf write /org/gnome/desktop/interface/color-scheme "'prefer-dark'" -pika-gnome-theme dark -pkexec /usr/lib/pika/gnome-layouts/papirus-folders -u -C yellow - if dconf read /org/gnome/desktop/interface/color-scheme | grep dark - then - pika-gnome-theme dark - else - pika-gnome-theme - fi -fi - -if [[ $1 == gnome ]] -then -dconf write /org/pika/layouts/pika-theme 0 -dconf write /org/gnome/shell/extensions/user-theme/name "''" -dconf write /org/gnome/desktop/wm/preferences/titlebar-font "'Cantarell Bold 11'" -dconf write /org/gnome/desktop/sound/theme-name "'freedesktop'" -dconf write /org/gnome/desktop/interface/icon-theme "'Adwaita'" -dconf write /org/gnome/desktop/interface/monospace-font-name "'Monospace 11'" -dconf write /org/gnome/desktop/interface/document-font-name "'Sans 11'" -dconf write /org/gnome/desktop/interface/font-name "'Cantarell 11'" -dconf write /org/gnome/shell/extensions/nightthemeswitcher/commands/enabled false -dconf write /org/gnome/shell/extensions/nightthemeswitcher/gtk-variants/day "'adw-gtk3'" -dconf write /org/gnome/shell/extensions/nightthemeswitcher/gtk-variants/night "'adw-gtk3-dark'" -dconf write /org/gnome/shell/extensions/nightthemeswitcher/shell-variants/day "''" -dconf write /org/gnome/shell/extensions/nightthemeswitcher/shell-variants/night "''" -echo '#! /bin/bash' > $HOME/.config/pika_theme || touch $HOME/.config/pika_theme && echo '#! /bin/bash' > $HOME/.config/pika_theme -echo 'KVANTUM_THEME_DARK=' >> $HOME/.config/pika_theme -echo 'KVANTUM_THEME_LIGHT=' >> $HOME/.config/pika_theme -echo 'GTK_THEME_DARK=' >> $HOME/.config/pika_theme -echo 'GTK_THEME_LIGHT=' >> $HOME/.config/pika_theme -echo 'GTK_THEME_PATH_DARK=' >> $HOME/.config/pika_theme -echo 'GTK_THEME_PATH_LIGHT=' >> $HOME/.config/pika_theme -fi diff --git a/usr/share/glib-2.0/schemas/org.pika.layouts.gschema.xml b/usr/share/glib-2.0/schemas/org.pika.layouts.gschema.xml deleted file mode 100644 index 31d763b..0000000 --- a/usr/share/glib-2.0/schemas/org.pika.layouts.gschema.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - 3 - What layout is selected. - - What layout is selected. - - - - 1 - What Theme is being used. - - What Theme is being used. - - - -