diff --git a/Cargo.lock b/Cargo.lock index a232371..093b485 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -174,6 +174,12 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "as-raw-xcb-connection" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5f312b0a56c5cdf967c0aeb67f6289603354951683bc97ddc595ab974ba9aa" + [[package]] name = "async-broadcast" version = "0.5.1" @@ -364,11 +370,11 @@ checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" [[package]] name = "bindgen" -version = "0.65.1" +version = "0.66.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfdf7b466f9a4903edc73f95d6d2bcd5baf8ae620638762244d3f60143643cc5" +checksum = "f2b84e06fc203107bfbad243f4aba2af864eb7db3b1cf46ea0a023b0b433d2a7" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.3.3", "cexpr", "clang-sys", "lazy_static", @@ -469,6 +475,20 @@ name = "bytemuck" version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +dependencies = [ + "bytemuck_derive", +] + +[[package]] +name = "bytemuck_derive" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdde5c9cd29ebd706ce1b35600920a33550e402fc998a2e53ad3b42c3c47a192" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.28", +] [[package]] name = "byteorder" @@ -622,8 +642,7 @@ dependencies = [ [[package]] name = "const-field-offset" version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6304465f16f463cddc572b737c3df93576edd3a6b53f057bd8beeb29f4ef8dfd" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "const-field-offset-macro", "field-offset", @@ -632,8 +651,7 @@ dependencies = [ [[package]] name = "const-field-offset-macro" version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57aaaad9185d3bcb3afe63549d8ba60b2fb0ea8dc2da83f62dd56805edf56fd1" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "proc-macro2", "quote", @@ -961,6 +979,44 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +[[package]] +name = "drm" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edf9159ef4bcecd0c5e4cbeb573b8d0037493403d542780dba5d840bbf9df56f" +dependencies = [ + "bitflags 1.3.2", + "bytemuck", + "drm-ffi", + "drm-fourcc", + "nix 0.26.2", +] + +[[package]] +name = "drm-ffi" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1352481b7b90e27a8a1bf8ef6b33cf18b98dba7c410e75c24bb3eef2f0d8d525" +dependencies = [ + "drm-sys", + "nix 0.26.2", +] + +[[package]] +name = "drm-fourcc" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" + +[[package]] +name = "drm-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1369f1679d6b706d234c4c1e0613c415c2c74b598a09ad28080ba2474b72e42d" +dependencies = [ + "libc", +] + [[package]] name = "dunce" version = "1.0.4" @@ -1027,6 +1083,17 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + [[package]] name = "errno" version = "0.3.2" @@ -1293,6 +1360,28 @@ dependencies = [ "slab", ] +[[package]] +name = "gbm" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2ec389cda876966cf824111bf6e533fb934c711d473498279964a990853b3c6" +dependencies = [ + "bitflags 1.3.2", + "drm", + "drm-fourcc", + "gbm-sys", + "libc", +] + +[[package]] +name = "gbm-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b63eba9b9b7a231514482deb08759301c9f9f049ac6869403f381834ebfeaf67" +dependencies = [ + "libc", +] + [[package]] name = "generational-arena" version = "0.2.9" @@ -1322,6 +1411,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "gethostname" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb65d4ba3173c56a500b555b532f72c42e8d1fe64962b518897f8959fae2c177" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "getrandom" version = "0.2.10" @@ -1492,11 +1591,29 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +[[package]] +name = "i-slint-backend-linuxkms" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" +dependencies = [ + "calloop", + "drm", + "gbm", + "glutin", + "i-slint-common", + "i-slint-core", + "i-slint-renderer-femtovg", + "input", + "libseat", + "nix 0.26.2", + "raw-window-handle", + "xkbcommon", +] + [[package]] name = "i-slint-backend-qt" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60c60fec461b2a404aa931e7057c019d24dad0663c0847062f9a480dc03ce2d5" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "const-field-offset", "cpp", @@ -1514,11 +1631,11 @@ dependencies = [ [[package]] name = "i-slint-backend-selector" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67d5ea2053b057cc5a13e07882144ef0a8bf539e44e708dcf1b4cbe67dd910e9" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "cfg-if", + "i-slint-backend-linuxkms", "i-slint-backend-qt", "i-slint-backend-winit", "i-slint-core", @@ -1526,9 +1643,8 @@ dependencies = [ [[package]] name = "i-slint-backend-winit" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0279550c83e2a73ae7d5f737d5593c175793b3fcf6cd9a9bce8ffd127897e3da" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "accesskit", "accesskit_winit", @@ -1545,14 +1661,17 @@ dependencies = [ "i-slint-core-macros", "i-slint-renderer-femtovg", "i-slint-renderer-skia", + "imgref", "instant", "lyon_path", "once_cell", "pin-weak", "raw-window-handle", + "rgb", "scoped-tls-hkt", "scopeguard", "send_wrapper", + "softbuffer", "vtable", "wasm-bindgen", "web-sys", @@ -1561,9 +1680,8 @@ dependencies = [ [[package]] name = "i-slint-common" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d94c6046396a1ad1ecfab9d59e07b3e6691846f2f99e42effe99a74bfed877" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "cfg-if", "derive_more", @@ -1573,9 +1691,8 @@ dependencies = [ [[package]] name = "i-slint-compiler" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43986d2851beca3df33505b0ee4996feb54f058c611f4fadbcca4a0ffb2aa055" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "by_address", "codemap", @@ -1604,9 +1721,8 @@ dependencies = [ [[package]] name = "i-slint-core" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9c5d4796364f86c7524ae083225c56ef43fe3d367e4b6ee519e64271a7df8d7" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "atomic-polyfill", "auto_enums", @@ -1615,6 +1731,7 @@ dependencies = [ "const-field-offset", "derive_more", "euclid", + "fontdue", "i-slint-common", "i-slint-core-macros", "image", @@ -1630,6 +1747,7 @@ dependencies = [ "pin-weak", "resvg", "rgb", + "rustybuzz", "scoped-tls-hkt", "scopeguard", "slab", @@ -1645,9 +1763,8 @@ dependencies = [ [[package]] name = "i-slint-core-macros" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30c162fd90a8d6e5232ad1f5d21363cc4c5ec32df30260164c230af393699c13" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "quote", "syn 2.0.28", @@ -1655,9 +1772,8 @@ dependencies = [ [[package]] name = "i-slint-renderer-femtovg" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217d7a135b97769f00440e740b1b929cbc002952264511a74dc56a44308253a" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "cfg-if", "const-field-offset", @@ -1689,9 +1805,8 @@ dependencies = [ [[package]] name = "i-slint-renderer-skia" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11875f8b7dfd9066adc4026fa9303d585200ef530c36292d94b3be957b450193" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "cfg-if", "cfg_aliases", @@ -1773,6 +1888,29 @@ dependencies = [ "hashbrown 0.14.0", ] +[[package]] +name = "input" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e74cd82cedcd66db78742a8337bdc48f188c4d2c12742cbc5cd85113f0b059" +dependencies = [ + "bitflags 1.3.2", + "input-sys", + "io-lifetimes", + "libc", + "log", + "udev", +] + +[[package]] +name = "input-sys" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f6c2a17e8aba7217660e32863af87b0febad811d4b8620ef76b386603fddc2" +dependencies = [ + "libc", +] + [[package]] name = "instant" version = "0.1.12" @@ -1947,6 +2085,38 @@ version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +[[package]] +name = "libseat" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "845e5c255462c9bc7c71c17b996766b76e3c66f2ddd5846bfbc83f18382aa648" +dependencies = [ + "cc", + "errno 0.2.8", + "libseat-sys", + "pkg-config", + "slog", +] + +[[package]] +name = "libseat-sys" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3671cb5e03871f1d6bf0b3b5daa9275549e348fa6359e0f9adb910ca163d4c34" +dependencies = [ + "pkg-config", +] + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + [[package]] name = "linked-hash-map" version = "0.5.6" @@ -2069,6 +2239,15 @@ dependencies = [ "libc", ] +[[package]] +name = "memmap2" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" +dependencies = [ + "libc", +] + [[package]] name = "memoffset" version = "0.6.5" @@ -2220,6 +2399,7 @@ dependencies = [ "cfg-if", "libc", "memoffset 0.7.1", + "pin-utils", "static_assertions", ] @@ -2577,6 +2757,15 @@ dependencies = [ "semver", ] +[[package]] +name = "quick-xml" +version = "0.28.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce5e73202a820a31f8a0ee32ada5e21029c81fd9e3ebf668a40832e4219d9d1" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "1.0.32" @@ -2814,7 +3003,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" dependencies = [ "bitflags 1.3.2", - "errno", + "errno 0.3.2", "io-lifetimes", "libc", "linux-raw-sys 0.3.8", @@ -2828,7 +3017,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ee020b1716f0a80e2ace9b03441a749e402e86712f15f16fe8a8f75afac732f" dependencies = [ "bitflags 2.3.3", - "errno", + "errno 0.3.2", "libc", "linux-raw-sys 0.4.5", "windows-sys 0.48.0", @@ -3057,9 +3246,9 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "skia-bindings" -version = "0.63.0" +version = "0.64.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffc650a2d45d9acb7e251568dc6193d882cf66aeb78e5dcc08bc2b816ffbbd5" +checksum = "d7a30c13184ca65af3a989ea2efe8803335d011800c0c738ef89e003b69e08e6" dependencies = [ "bindgen", "cc", @@ -3075,9 +3264,9 @@ dependencies = [ [[package]] name = "skia-safe" -version = "0.63.0" +version = "0.64.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae6df6412e061d9792938efc923dc41236edf778058ecc63dc385cd5d5a9ac1" +checksum = "ace543b27749a9cade9fe57d0aadddd2fe1a99563f2976401966bda84b47284f" dependencies = [ "bitflags 2.3.3", "lazy_static", @@ -3097,9 +3286,8 @@ dependencies = [ [[package]] name = "slint" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03e9bdb79798c7fb20c20ec74cd1f230b96ac8832aeb49335c8e45dfb76a3161" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "const-field-offset", "i-slint-backend-selector", @@ -3113,9 +3301,8 @@ dependencies = [ [[package]] name = "slint-build" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aaa41e33ef48d7a98bf6bed33637556e5f818b2f9340ed44736c17d1cbe3417" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "i-slint-compiler", "spin_on", @@ -3125,9 +3312,8 @@ dependencies = [ [[package]] name = "slint-macros" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a7d5c7093cd7b1b750fecbfd94e896c05cde20d39a9d73a2a94ca1ba351263" +version = "1.2.0" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "i-slint-compiler", "proc-macro2", @@ -3135,6 +3321,12 @@ dependencies = [ "spin_on", ] +[[package]] +name = "slog" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" + [[package]] name = "slotmap" version = "1.0.6" @@ -3164,7 +3356,7 @@ dependencies = [ "memmap2 0.5.10", "nix 0.24.3", "pkg-config", - "wayland-client", + "wayland-client 0.29.5", "wayland-cursor", "wayland-protocols", ] @@ -3176,7 +3368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a345c870a1fae0b1b779085e81b51e614767c239e93503588e54c5b17f4b0e8" dependencies = [ "smithay-client-toolkit", - "wayland-client", + "wayland-client 0.29.5", ] [[package]] @@ -3198,6 +3390,35 @@ dependencies = [ "winapi", ] +[[package]] +name = "softbuffer" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cc7e34c6782f6fe16e384f25d009ed7b30f70e022d77966769a0366232c4dc4" +dependencies = [ + "bytemuck", + "cfg_aliases", + "cocoa", + "core-graphics", + "fastrand 1.9.0", + "foreign-types", + "js-sys", + "log", + "memmap2 0.6.2", + "nix 0.26.2", + "objc", + "raw-window-handle", + "redox_syscall 0.3.5", + "wasm-bindgen", + "wayland-backend", + "wayland-client 0.30.2", + "wayland-sys 0.30.1", + "web-sys", + "windows-sys 0.48.0", + "x11-dl", + "x11rb 0.12.0", +] + [[package]] name = "spin" version = "0.5.2" @@ -3523,6 +3744,17 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +[[package]] +name = "udev" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebdbbd670373442a12fe9ef7aeb53aec4147a5a27a00bbc3ab639f08f48191a" +dependencies = [ + "libc", + "libudev-sys", + "pkg-config", +] + [[package]] name = "uds_windows" version = "1.0.2" @@ -3711,8 +3943,7 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "vtable" version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eaffdd71dc6eae079fb88ff1d555cd442d25150c28b9fdc69b8af4a9720268" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "atomic-polyfill", "const-field-offset", @@ -3723,8 +3954,7 @@ dependencies = [ [[package]] name = "vtable-macro" version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b2b8eecdb8e4284adf5546fc518f048f6dc33e7203dbe36fa93a4add39b31f6" +source = "git+https://github.com/slint-ui/slint#f301e3d8c9dab91c6595b0a279d5b46839dbd1ce" dependencies = [ "proc-macro2", "quote", @@ -3797,6 +4027,21 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +[[package]] +name = "wayland-backend" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b48e27457e8da3b2260ac60d0a94512f5cba36448679f3747c0865b7893ed8" +dependencies = [ + "cc", + "downcast-rs", + "io-lifetimes", + "nix 0.26.2", + "scoped-tls", + "smallvec", + "wayland-sys 0.30.1", +] + [[package]] name = "wayland-client" version = "0.29.5" @@ -3809,10 +4054,22 @@ dependencies = [ "nix 0.24.3", "scoped-tls", "wayland-commons", - "wayland-scanner", + "wayland-scanner 0.29.5", "wayland-sys 0.29.5", ] +[[package]] +name = "wayland-client" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "489c9654770f674fc7e266b3c579f4053d7551df0ceb392f153adb1f9ed06ac8" +dependencies = [ + "bitflags 1.3.2", + "nix 0.26.2", + "wayland-backend", + "wayland-scanner 0.30.1", +] + [[package]] name = "wayland-commons" version = "0.29.5" @@ -3832,7 +4089,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" dependencies = [ "nix 0.24.3", - "wayland-client", + "wayland-client 0.29.5", "xcursor", ] @@ -3843,9 +4100,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" dependencies = [ "bitflags 1.3.2", - "wayland-client", + "wayland-client 0.29.5", "wayland-commons", - "wayland-scanner", + "wayland-scanner 0.29.5", ] [[package]] @@ -3859,6 +4116,17 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "wayland-scanner" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9b873b257fbc32ec909c0eb80dea312076a67014e65e245f5eb69a6b8ab330e" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + [[package]] name = "wayland-sys" version = "0.29.5" @@ -4149,10 +4417,10 @@ dependencies = [ "sctk-adwaita", "smithay-client-toolkit", "wasm-bindgen", - "wayland-client", + "wayland-client 0.29.5", "wayland-commons", "wayland-protocols", - "wayland-scanner", + "wayland-scanner 0.29.5", "web-sys", "windows-sys 0.45.0", "x11-dl", @@ -4182,7 +4450,7 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "980b9aa9226c3b7de8e2adb11bf20124327c054e0e5812d2aac0b5b5a87e7464" dependencies = [ - "x11rb", + "x11rb 0.10.1", ] [[package]] @@ -4202,11 +4470,28 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507" dependencies = [ - "gethostname", + "gethostname 0.2.3", "nix 0.24.3", "winapi", "winapi-wsapoll", - "x11rb-protocol", + "x11rb-protocol 0.10.0", +] + +[[package]] +name = "x11rb" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1641b26d4dec61337c35a1b1aaf9e3cba8f46f0b43636c609ab0291a648040a" +dependencies = [ + "as-raw-xcb-connection", + "gethostname 0.3.0", + "libc", + "libloading 0.7.4", + "nix 0.26.2", + "once_cell", + "winapi", + "winapi-wsapoll", + "x11rb-protocol 0.12.0", ] [[package]] @@ -4218,6 +4503,15 @@ dependencies = [ "nix 0.24.3", ] +[[package]] +name = "x11rb-protocol" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82d6c3f9a0fb6701fab8f6cea9b0c0bd5d6876f1f89f7fada07e558077c344bc" +dependencies = [ + "nix 0.26.2", +] + [[package]] name = "xattr" version = "0.2.3" @@ -4246,6 +4540,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "xkbcommon" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52db25b599e92bf6e3904134618728eeb7b49a5a4f38f107f92399bb9c496b88" +dependencies = [ + "libc", + "memmap2 0.7.1", +] + [[package]] name = "xml-rs" version = "0.8.16" diff --git a/remote/Cargo.toml b/remote/Cargo.toml index 78360b7..b753a56 100644 --- a/remote/Cargo.toml +++ b/remote/Cargo.toml @@ -17,8 +17,8 @@ anyhow = "1.0" log = "0.4" env_logger = "0.10" -slint = "1.1" +slint = { git = "https://github.com/slint-ui/slint" } [build-dependencies] -slint-build = "1.1" +slint-build = { git = "https://github.com/slint-ui/slint" } coop_widgets = { git = "https://codeberg.org/flovansl/co_sl" } diff --git a/remote/src/controller/media.rs b/remote/src/controller/media.rs index e66f299..ac88b71 100644 --- a/remote/src/controller/media.rs +++ b/remote/src/controller/media.rs @@ -6,24 +6,24 @@ use log::info; use slint::ComponentHandle; use crate::{App,MediaLogic}; -pub fn init(ui: &App, sender_co: MessageToServer, receiver_s: MessageFromServer) { +pub fn init(app: &App, sender_co: MessageToServer, receiver_s: MessageFromServer) { let sender_c = sender_co.clone(); - ui.global::().on_play_pause(move || { + app.global::().on_play_pause(move || { sender_c.send(ClientMessage::PlayPause).unwrap(); }); let sender_c = sender_co.clone(); - ui.global::().on_next(move || { + app.global::().on_next(move || { sender_c.send(ClientMessage::Next).unwrap(); }); let sender_c = sender_co.clone(); - ui.global::().on_previous(move || { + app.global::().on_previous(move || { sender_c.send(ClientMessage::Previous).unwrap(); }); - let ui_handle = ui.as_weak(); + let ui_handle = app.as_weak(); thread::spawn(move || loop { if receiver_s.is_empty() { thread::sleep(Duration::from_millis(200)); diff --git a/remote/src/main.rs b/remote/src/main.rs index b4e4a4d..1e464e1 100644 --- a/remote/src/main.rs +++ b/remote/src/main.rs @@ -14,10 +14,31 @@ fn main() -> Result<(), slint::PlatformError> { let (messages_to_server, message_from_server) = init_tcp(); - let ui = App::new()?; + let app = App::new()?; + + media::init(&app, messages_to_server, message_from_server); + + virtual_keyboard::init(&app); - media::init(&ui, messages_to_server, message_from_server); - info!("Launching UI"); - ui.run() + app.run() +} + +mod virtual_keyboard { + use super::*; + use slint::*; + + pub fn init(app: &App) { + let weak = app.as_weak(); + app.global::().on_key_pressed({ + move |key| { + weak.unwrap() + .window() + .dispatch_event(slint::platform::WindowEvent::KeyPressed { text: key.clone() }); + weak.unwrap() + .window() + .dispatch_event(slint::platform::WindowEvent::KeyReleased { text: key }); + } + }); + } } diff --git a/remote/ui/app-manager.slint b/remote/ui/app-manager.slint new file mode 100644 index 0000000..fe9b291 --- /dev/null +++ b/remote/ui/app-manager.slint @@ -0,0 +1,7 @@ +// SPDX-FileCopyrightText: 2022 Florian Blasius +// SPDX-License-Identifier: MIT + +export global AppManager { + in-out property keyboard-enabled: false; + in-out property widgets-enabled: true; +} \ No newline at end of file diff --git a/remote/ui/app.slint b/remote/ui/app.slint index 1731717..541afd1 100644 --- a/remote/ui/app.slint +++ b/remote/ui/app.slint @@ -1,8 +1,60 @@ +import { CoopWindow, VirtualKeyboard, VirtualKeyboardHandler, GroupListViewItem, Palette, Icons } from "_imports/coop-widgets.slint"; +import { MediaPage } from "pages/pages.slint"; +import { AppManager } from "app-manager.slint"; +import { SideBarView } from "side-bar-view.slint"; import { MediaControls, MediaLogic } from "widgets/mediacontrols.slint"; + +export { VirtualKeyboardHandler } +export { AppManager } export { MediaLogic } +export component App inherits CoopWindow { + // preferred-width: 600px; + // preferred-height: 400px; + title: "Deckui"; + + Rectangle { + background: Palette.background; + } + + Rectangle { + GridLayout { + Rectangle { + col: 1; + + if (i-side-bar.current-item.parent == 0 && i-side-bar.current-item.item == 0) : MediaPage {} + //if (i-side-bar.current-item.parent == 1 && i-side-bar.current-item.item == 0) : BrushesPage {} + } + + i-side-bar := SideBarView { + col: 0; + parent-width: root.width; + title: "Deckui"; + responsive: true; + + property widgets: { + text: "Widgets", + items: [ + { leading-icon: Icons.home, text: "Media" }, + ] + }; + + // property resources: { + // text: "Resources", + // items: [ + // { leading-icon: Icons.brush, text: "Brushes" }, + // { leading-icon: Icons.format-size, text: "Typography" }, + // ] + // }; + + navigation-items: [self.widgets]; + } + } + + if (AppManager.keyboard-enabled) : VirtualKeyboard { + y: TextInputInterface.text-input-focused ? parent.height - self.height : parent.height; + } + } -export component App inherits Window { - background: white; - MediaControls {} } + diff --git a/remote/ui/pages/media-page.slint b/remote/ui/pages/media-page.slint new file mode 100644 index 0000000..aa99cec --- /dev/null +++ b/remote/ui/pages/media-page.slint @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2022 Florian Blasius +// SPDX-License-Identifier: MIT + +import { Page } from "page.slint"; +import { MediaControls } from "../widgets/mediacontrols.slint"; + +export component MediaPage inherits Page { + title: "Media"; + + Flickable { + MediaControls { } + } +} diff --git a/remote/ui/pages/page.slint b/remote/ui/pages/page.slint new file mode 100644 index 0000000..162cd00 --- /dev/null +++ b/remote/ui/pages/page.slint @@ -0,0 +1,70 @@ +// SPDX-FileCopyrightText: 2022 Florian Blasius +// SPDX-License-Identifier: MIT + +import { AppManager } from "../app-manager.slint"; + +import { HeaderBar, OutlineButton, CheckBox, Switch, ScrollView, Icons, ComboBox, Palette, ColorTheme, ColorVariant } from "../_imports/coop-widgets.slint"; + +export component Page inherits GridLayout { + in-out property title <=> i_header_bar.title; + in-out property keyboard_check_box: true; + in-out property disabled_check_box: true; + + Row { + i_header_bar := HeaderBar { + if (root.keyboard_check_box) : CheckBox { + y: (parent.height - self.height) / 2; + text: "Keyboard enabled"; + checked <=> AppManager.keyboard_enabled; + } + + if (root.disabled_check_box) : CheckBox { + y: (parent.height - self.height) / 2; + text: "Widgets enabled"; + checked <=> AppManager.widgets_enabled; + } + + ComboBox { + width: 128px; + placeholder-text: @tr("Select theme:"); + current-index: Palette.current-color-theme == ColorTheme.Coop ? 0 : 1; + + model: [ + { text: "Coop" }, + { text: "Cosmic" }, + ]; + + selected (index) => { + if (index == 0) { + Palette.set-color-theme(ColorTheme.Coop); + return; + } + + if (index == 1) { + Palette.set-color-theme(ColorTheme.Cosmic); + } + } + } + + VerticalLayout { + alignment: center; + + Switch { + on_icon: Icons.mode-night; + off_icon: Icons.light-mode; + checked: !Palette.dark-color-scheme; + + toggled(checked) => { + Palette.set-color-variant(checked ? ColorVariant.Light : ColorVariant.Dark); + } + } + } + } + } + + Row { + ScrollView { + @children + } + } +} \ No newline at end of file diff --git a/remote/ui/pages/pages.slint b/remote/ui/pages/pages.slint new file mode 100644 index 0000000..0b8d4d1 --- /dev/null +++ b/remote/ui/pages/pages.slint @@ -0,0 +1,6 @@ +// SPDX-FileCopyrightText: 2022 Florian Blasius +// SPDX-License-Identifier: MIT + +import { MediaPage } from "media-page.slint"; + +export { MediaPage } diff --git a/remote/ui/pages/titles.slint b/remote/ui/pages/titles.slint new file mode 100644 index 0000000..3a6500d --- /dev/null +++ b/remote/ui/pages/titles.slint @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2022 Florian Blasius +// SPDX-License-Identifier: MIT + +import { MediumLabel, LargeLabel, Palette } from "../_imports/coop-widgets.slint"; + +export component RowTitle inherits LargeLabel { + height: 18px; +} + +export component ColumnTitle inherits MediumLabel { + height: 14px; + color: Palette.foreground_disabled; +} \ No newline at end of file diff --git a/remote/ui/side-bar-view.slint b/remote/ui/side-bar-view.slint new file mode 100644 index 0000000..f976da2 --- /dev/null +++ b/remote/ui/side-bar-view.slint @@ -0,0 +1,17 @@ +// SPDX-FileCopyrightText: 2022 Florian Blasius +// SPDX-License-Identifier: MIT + +import { SideBar, GroupListView, GroupListViewItem } from "_imports/coop-widgets.slint"; + +export component SideBarView inherits SideBar { + in-out property <[GroupListViewItem]> navigation-items <=> i-navigation.model; + in-out property <{ parent: int, item: int }> current-item <=> i-navigation.current-item; + + i-navigation := GroupListView { + vertical-stretch: 1; + + current-item-changed => { + root.expanded = false; + } + } +} \ No newline at end of file diff --git a/remote/ui/widgets/clickable.slint b/remote/ui/widgets/clickable.slint index 5c561c3..5d3af38 100644 --- a/remote/ui/widgets/clickable.slint +++ b/remote/ui/widgets/clickable.slint @@ -1,4 +1,4 @@ - +import { Palette } from "../_imports/coop-widgets.slint"; export component Clickable inherits TouchArea { in property icon; @@ -8,7 +8,7 @@ export component Clickable inherits TouchArea { Image { width: 128px; height: 128px; - colorize: root.pressed ? #4D4D4D: black; + colorize: root.pressed ? Palette.foreground-disabled: Palette.foreground; source: icon; } diff --git a/remote/ui/widgets/mediacontrols.slint b/remote/ui/widgets/mediacontrols.slint index b09304f..7a920ca 100644 --- a/remote/ui/widgets/mediacontrols.slint +++ b/remote/ui/widgets/mediacontrols.slint @@ -1,3 +1,4 @@ +import { Palette } from "../_imports/coop-widgets.slint"; import { Clickable } from "clickable.slint"; export global MediaLogic { @@ -43,7 +44,7 @@ export component MediaControls inherits Clickable { Buttons { } Text { horizontal-alignment: center; - color: black; + color: Palette.foreground; text: MediaLogic.now_playing; font-size:35px; font-weight: 600; diff --git a/rock64.sh b/rock64.sh index 5e836d3..9c8dee9 100644 --- a/rock64.sh +++ b/rock64.sh @@ -1,2 +1,2 @@ -cross build --release -p remote --target=aarch64-unknown-linux-gnu && scp -i ~/.ssh/onekey ./target/aarch64-unknown-linux-gnu/release/remote rockpro64:/home/jika/remote2 && echo "Uploaded" +cross build -p remote --target=aarch64-unknown-linux-gnu && scp -i ~/.ssh/onekey ./target/aarch64-unknown-linux-gnu/release/remote rockpro64:/home/jika/remote2 && echo "Uploaded" diff --git a/rock64.yml b/rock64.yml index 3c8902f..45cda47 100644 --- a/rock64.yml +++ b/rock64.yml @@ -2,7 +2,7 @@ commands: lib: | cargo watch -d 2 -w lib -x "build -p lib" remote: | - cargo watch -d 2 -w remote -- sh ./buildui.sh + cargo watch -d 2 -i "_imports" -w remote -- sh ./buildui.sh app: | - cargo watch -d 2 -w app -w lib -x "run --release -p app" + cargo watch -d 2 -w app -w lib -x "run -p app" diff --git a/runcc.yml b/runcc.yml index 07d33c5..40cc0e3 100644 --- a/runcc.yml +++ b/runcc.yml @@ -2,7 +2,7 @@ commands: lib: | cargo watch -d 2 -w lib -x "build -p lib" remote: | - cargo watch -d 2 -w remote -x "run --release -p remote" + cargo watch -d 2 -i "_imports" -w remote -x "run -p remote" app: | - cargo watch -d 2 -w app -w lib -x "run --release -p app" + cargo watch -d 2 -w app -w lib -x "run -p app"