From 35de500c0032b4c84ef58b5810068bfe749b1814 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Fri, 24 Feb 2023 17:41:52 +0100 Subject: [PATCH] chore: update smithay + switch to tracing --- Cargo.lock | 596 ++++++++----------- Cargo.toml | 23 +- src/backend/kms/mod.rs | 125 ++-- src/backend/kms/socket.rs | 14 +- src/backend/mod.rs | 5 +- src/backend/render/cursor.rs | 10 +- src/backend/render/element.rs | 29 +- src/backend/render/mod.rs | 7 +- src/backend/winit.rs | 13 +- src/backend/x11.rs | 37 +- src/config/mod.rs | 131 ++-- src/config/types.rs | 3 +- src/input/mod.rs | 24 +- src/logger/mod.rs | 87 +-- src/main.rs | 19 +- src/session.rs | 17 +- src/shell/element/mod.rs | 20 +- src/shell/focus/mod.rs | 9 +- src/shell/layout/floating/mod.rs | 10 +- src/shell/layout/tiling/mod.rs | 5 +- src/shell/mod.rs | 9 +- src/shell/workspace.rs | 22 +- src/state.rs | 22 +- src/systemd.rs | 14 +- src/utils/iced.rs | 1 - src/wayland/handlers/compositor.rs | 4 +- src/wayland/handlers/data_device.rs | 7 +- src/wayland/handlers/output_configuration.rs | 13 +- src/wayland/handlers/primary_selection.rs | 7 +- src/wayland/handlers/screencopy.rs | 23 +- src/wayland/handlers/xdg_shell/mod.rs | 7 +- src/wayland/handlers/xdg_shell/popup.rs | 13 +- src/wayland/protocols/drm.rs | 7 +- src/wayland/protocols/screencopy.rs | 5 +- src/xwayland.rs | 38 +- 35 files changed, 622 insertions(+), 754 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index de7b6e77..a2fe46b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "ab_glyph" -version = "0.2.19" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5568a4aa5ba8adf5175c5c460b030e27d8893412976cc37bef0e4fbc16cfbba" +checksum = "fe21446ad43aa56417a767f3e2f3d7c4ca522904de1dd640529a76e9c5c3b33c" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.68" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" +checksum = "224afbd727c3d6e4b90103ece64b8d1b67fbb1973b1046c2281eed3f3803f800" dependencies = [ "backtrace", ] @@ -124,12 +124,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "arc-swap" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" - [[package]] name = "arrayref" version = "0.3.6" @@ -163,17 +157,6 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "857253367827bd9d0fd973f0ef15506a96e79e41b0ad7aa691203a4e3214f6c8" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi 0.1.19", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.1.0" @@ -234,15 +217,6 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" -[[package]] -name = "block-buffer" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" -dependencies = [ - "generic-array", -] - [[package]] name = "block-buffer" version = "0.10.3" @@ -300,9 +274,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.78" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d" +checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" [[package]] name = "cfg-if" @@ -431,13 +405,13 @@ dependencies = [ "cosmic-protocols", "edid-rs", "egui", + "glow", "iced_softbuffer", "id_tree", "indexmap", "lazy_static", "libcosmic", - "libsystemd 0.5.0", - "log", + "libsystemd", "log-panics", "ordered-float", "png", @@ -447,15 +421,12 @@ dependencies = [ "sendfd", "serde", "serde_json", - "slog", - "slog-async", - "slog-journald", - "slog-scope", - "slog-stdlog", - "slog-term", "smithay", "smithay-egui", "thiserror", + "tracing", + "tracing-journald", + "tracing-subscriber", "wayland-backend", "wayland-scanner 0.30.0", "xcursor", @@ -466,7 +437,7 @@ dependencies = [ [[package]] name = "cosmic-protocols" version = "0.1.0" -source = "git+https://github.com/pop-os/cosmic-protocols?branch=main#1ebab50966cfa91afc988f6d8cf83307cbe30446" +source = "git+https://github.com/pop-os/cosmic-protocols?branch=main#7eac0d9e15b9dc4269ceb1ab7dd027b8589c601d" dependencies = [ "bitflags", "wayland-backend", @@ -586,16 +557,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "crypto-mac" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" -dependencies = [ - "generic-array", - "subtle", -] - [[package]] name = "csscolorparser" version = "0.6.2" @@ -714,22 +675,13 @@ dependencies = [ "syn", ] -[[package]] -name = "digest" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" -dependencies = [ - "generic-array", -] - [[package]] name = "digest" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" dependencies = [ - "block-buffer 0.10.3", + "block-buffer", "crypto-common", "subtle", ] @@ -752,16 +704,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.3.7" @@ -773,17 +715,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -1062,9 +993,9 @@ dependencies = [ [[package]] name = "exr" -version = "1.5.2" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb5f255b5980bb0c8cf676b675d1a99be40f316881444f44e0462eaf5df5ded" +checksum = "e8af5ef47e2ed89d23d0ecbc1b681b30390069de70260937877514377fc24feb" dependencies = [ "bit_field", "flume", @@ -1073,13 +1004,14 @@ dependencies = [ "miniz_oxide", "smallvec", "threadpool", + "zune-inflate", ] [[package]] name = "fastrand" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" dependencies = [ "instant", ] @@ -1139,11 +1071,11 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "fontconfig-parser" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2be17a530a842f8a7a60f4397a08e8f08872849a5e31b20c7bd7301dac483296" +checksum = "4ab2e12762761366dcb876ab8b6e0cfa4797ddcd890575919f008b5ba655672a" dependencies = [ - "roxmltree 0.15.1", + "roxmltree 0.18.0", ] [[package]] @@ -1210,9 +1142,9 @@ dependencies = [ [[package]] name = "futures" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38390104763dc37a5145a53c29c63c1290b5d316d6086ec32c293f6736051bb0" +checksum = "13e2792b0ff0340399d58445b88fd9770e3489eff258a4cbc1523418f12abf84" dependencies = [ "futures-channel", "futures-core", @@ -1225,9 +1157,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "2e5317663a9089767a1ec00a487df42e0ca174b61b4483213ac24448e4664df5" dependencies = [ "futures-core", "futures-sink", @@ -1235,15 +1167,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "ec90ff4d0fe1f57d600049061dc6bb68ed03c7d2fbd697274c41805dcb3f8608" [[package]] name = "futures-executor" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +checksum = "e8de0a35a6ab97ec8869e32a2473f4b1324459e14c29275d14b10cb1fd19b50e" dependencies = [ "futures-core", "futures-task", @@ -1253,15 +1185,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" +checksum = "bfb8371b6fb2aeb2d280374607aeabfc99d95c72edfe51692e42d3d7f0d08531" [[package]] name = "futures-macro" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" dependencies = [ "proc-macro2", "quote", @@ -1270,21 +1202,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" +checksum = "f310820bb3e8cfd46c80db4d7fb8353e15dfff853a127158425f31e0be6c8364" [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "dcf79a1bf610b10f42aea489289c5a2c478a786509693b80cd39c44ccd936366" [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "9c1d6de3acfef38d2be4b1f543f553131788603495be83da675e180c8d6b7bd1" dependencies = [ "futures-channel", "futures-core", @@ -1318,6 +1250,8 @@ dependencies = [ "drm-fourcc", "gbm-sys", "libc", + "wayland-backend", + "wayland-server", ] [[package]] @@ -1374,9 +1308,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.1" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "221996f774192f0f718773def8201c4ae31f02616a54ccfc2d358bb0e5cefdec" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" [[package]] name = "gl_generator" @@ -1421,13 +1355,12 @@ dependencies = [ [[package]] name = "glyph_brush" -version = "0.7.5" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac02497410cdb5062cc056a33f2e1e19ff69fbf26a4be9a02bf29d6e17ea105b" +checksum = "4b773a724cb29f6119043a46bd2fc6bfedce59ab9898a3c07df66082acbea0ca" dependencies = [ "glyph_brush_draw_cache", "glyph_brush_layout", - "log", "ordered-float", "rustc-hash", "twox-hash", @@ -1525,15 +1458,6 @@ dependencies = [ "ahash 0.7.6", ] -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hermit-abi" version = "0.2.6" @@ -1549,23 +1473,13 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" -[[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" -dependencies = [ - "crypto-mac", - "digest 0.9.0", -] - [[package]] name = "hmac" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" dependencies = [ - "digest 0.10.6", + "digest", ] [[package]] @@ -1787,12 +1701,12 @@ dependencies = [ [[package]] name = "io-lifetimes" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e" +checksum = "1abeb7a0dd0f8181267ff8adc397075586500b81b28a73e8a0208b00fc170fb3" dependencies = [ "libc", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -1830,9 +1744,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" dependencies = [ "wasm-bindgen", ] @@ -1932,10 +1846,8 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "845e5c255462c9bc7c71c17b996766b76e3c66f2ddd5846bfbc83f18382aa648" dependencies = [ - "cc", "errno", "libseat-sys", - "pkg-config", "slog", ] @@ -1948,37 +1860,20 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "libsystemd" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f4f0b5b062ba67aa075e331de778082c09e66b5ef32970ea5a1e9c37c9555d1" -dependencies = [ - "hmac 0.11.0", - "libc", - "log", - "nix 0.23.2", - "once_cell", - "serde", - "sha2 0.9.9", - "thiserror", - "uuid", -] - [[package]] name = "libsystemd" version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8144587c71c16756b1055d3dcb0c75cb605a10ecd6523cc33702d5f90902bf6d" dependencies = [ - "hmac 0.12.1", + "hmac", "libc", "log", "nix 0.23.2", "nom", "once_cell", "serde", - "sha2 0.10.6", + "sha2", "thiserror", "uuid", ] @@ -2048,6 +1943,15 @@ dependencies = [ "libc", ] +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + [[package]] name = "matches" version = "0.1.10" @@ -2127,14 +2031,14 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" dependencies = [ "libc", "log", "wasi", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -2307,6 +2211,16 @@ dependencies = [ "memchr", ] +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num-integer" version = "0.1.45" @@ -2343,7 +2257,7 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi", "libc", ] @@ -2368,15 +2282,6 @@ dependencies = [ "syn", ] -[[package]] -name = "num_threads" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" -dependencies = [ - "libc", -] - [[package]] name = "objc" version = "0.2.7" @@ -2407,15 +2312,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.17.0" +version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" - -[[package]] -name = "opaque-debug" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" [[package]] name = "ordered-float" @@ -2484,10 +2383,16 @@ dependencies = [ ] [[package]] -name = "owned_ttf_parser" -version = "0.18.0" +name = "overload" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a5f3c7ca08b6879e7965fb25e24d1f5eeb32ea73f9ad99b3854778a38c57e93" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "owned_ttf_parser" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25e9fb15717794fae58ab55c26e044103aad13186fbb625893f9a3bbcc24228" dependencies = [ "ttf-parser 0.18.1", ] @@ -2535,7 +2440,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.6", + "parking_lot_core 0.9.7", ] [[package]] @@ -2554,15 +2459,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.6" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" +checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" dependencies = [ "cfg-if", "libc", "redox_syscall 0.2.16", "smallvec", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -2717,9 +2622,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.50" +version = "1.0.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2" +checksum = "5d727cae5b39d21da60fa540906919ad737832fe0b1c165da3a34d6548c849d6" dependencies = [ "unicode-ident", ] @@ -2780,9 +2685,9 @@ dependencies = [ [[package]] name = "range-alloc" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" +checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" [[package]] name = "rangemap" @@ -2888,6 +2793,15 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + [[package]] name = "regex-syntax" version = "0.6.28" @@ -2960,9 +2874,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.34" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3603b7d71ca82644f79b5a06d1220e9a58ede60bd32255f698cb1af8838b8db3" +checksum = "7495acf66551cdb696b7711408144bcd3194fc78e32f3a09e809bfe7dd4a7ce3" dependencies = [ "bytemuck", ] @@ -3000,9 +2914,9 @@ dependencies = [ [[package]] name = "roxmltree" -version = "0.15.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b9de9831a129b122e7e61f242db509fa9d0838008bf0b29bb0624669edfe48a" +checksum = "d8f595a457b6b8c6cda66a48503e92ee8d19342f905948f29c383200ec9eb1d8" dependencies = [ "xmlparser", ] @@ -3029,12 +2943,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" -[[package]] -name = "rustversion" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5583e89e108996506031660fe09baa5011b9dd0341b89029313006d1fb508d70" - [[package]] name = "rustybuzz" version = "0.4.0" @@ -3154,28 +3062,15 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.91" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" +checksum = "cad406b69c91885b5107daf2c29572f6c8cdb3c66826821e286c533490c0bc76" dependencies = [ "itoa", "ryu", "serde", ] -[[package]] -name = "sha2" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "sha2" version = "0.10.6" @@ -3184,9 +3079,24 @@ checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" dependencies = [ "cfg-if", "cpufeatures", - "digest 0.10.6", + "digest", ] +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "simd-adler32" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14a5df39617d7c8558154693a1bb8157a4aab8179209540cc0b10e5dc24e0b18" + [[package]] name = "simplecss" version = "0.2.1" @@ -3217,63 +3127,6 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8347046d4ebd943127157b94d63abb990fcf729dc4e9978927fdf4ac3c998d06" -[[package]] -name = "slog-async" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "766c59b252e62a34651412870ff55d8c4e6d04df19b43eecb2703e417b097ffe" -dependencies = [ - "crossbeam-channel", - "slog", - "take_mut", - "thread_local", -] - -[[package]] -name = "slog-journald" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83e14eb8c2f5d0c8fc9fbac40e6391095e4dc5cb334f7dce99c75cb1919eb39c" -dependencies = [ - "libsystemd 0.4.1", - "slog", -] - -[[package]] -name = "slog-scope" -version = "4.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f95a4b4c3274cd2869549da82b57ccc930859bdbf5bcea0424bc5f140b3c786" -dependencies = [ - "arc-swap", - "lazy_static", - "slog", -] - -[[package]] -name = "slog-stdlog" -version = "4.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6706b2ace5bbae7291d3f8d2473e2bfab073ccd7d03670946197aec98471fa3e" -dependencies = [ - "log", - "slog", - "slog-scope", -] - -[[package]] -name = "slog-term" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87d29185c55b7b258b4f120eab00f48557d4d9bc814f41713f449d35b0f8977c" -dependencies = [ - "atty", - "slog", - "term", - "thread_local", - "time", -] - [[package]] name = "slotmap" version = "1.0.6" @@ -3292,7 +3145,7 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "smithay" version = "0.3.0" -source = "git+https://github.com/smithay//smithay?rev=09e29418e5#09e29418e5d973dd21fc636433cca0b4dc3a17b3" +source = "git+https://github.com/pop-os/smithay?rev=6276454e856#6276454e8565f386722da0a516c7a6e9e60ba3d7" dependencies = [ "appendlist", "ash", @@ -3320,10 +3173,9 @@ dependencies = [ "rand", "scan_fmt", "scopeguard", - "slog", - "slog-stdlog", "tempfile", "thiserror", + "tracing", "udev", "wayland-backend", "wayland-egl", @@ -3359,13 +3211,14 @@ dependencies = [ [[package]] name = "smithay-egui" version = "0.1.0" -source = "git+https://github.com/Smithay/smithay-egui.git?rev=610a7dbf80#610a7dbf80e7fdbaced9f6d72b58973cbe59a098" +source = "git+https://github.com/Smithay/smithay-egui.git?rev=1145f5ff91#1145f5ff911591b66410b03c6b796689c45162a5" dependencies = [ "cgmath", "egui", "egui_extras", "egui_glow", "image", + "log", "memoffset 0.6.5", "smithay", "xkbcommon 0.4.1", @@ -3397,7 +3250,7 @@ dependencies = [ "thiserror", "wasm-bindgen", "wayland-backend", - "wayland-client 0.30.0", + "wayland-client 0.30.1", "wayland-sys 0.30.1", "web-sys", "windows-sys 0.42.0", @@ -3407,9 +3260,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" +checksum = "7dccf47db1b41fa1573ed27ccf5e08e3ca771cb994f776668c5ebda893b248fc" dependencies = [ "lock_api", ] @@ -3519,12 +3372,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "take_mut" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f764005d11ee5f36500a149ace24e00e3da98b0158b3e2d53a7495660d3f4d60" - [[package]] name = "tempfile" version = "3.3.0" @@ -3539,17 +3386,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "term" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" -dependencies = [ - "dirs-next", - "rustversion", - "winapi", -] - [[package]] name = "termcolor" version = "1.2.0" @@ -3581,10 +3417,11 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.4" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ + "cfg-if", "once_cell", ] @@ -3608,35 +3445,6 @@ dependencies = [ "weezl", ] -[[package]] -name = "time" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" -dependencies = [ - "itoa", - "libc", - "num_threads", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" - -[[package]] -name = "time-macros" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" -dependencies = [ - "time-core", -] - [[package]] name = "tiny-skia" version = "0.6.6" @@ -3668,9 +3476,9 @@ checksum = "4553f467ac8e3d374bc9a177a26801e5d0f9b211aa1673fb137a403afd1c9cf5" [[package]] name = "toml_edit" -version = "0.18.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729bfd096e40da9c001f778f5cdecbd2957929a24e10e5883d9392220a751581" +checksum = "56c59d8dd7d0dcbc6428bf7aa2f0e823e26e43b3c9aca15bbc9475d23e5fa12b" dependencies = [ "indexmap", "nom8", @@ -3685,9 +3493,21 @@ checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tracing-core" version = "0.1.30" @@ -3695,6 +3515,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ "once_cell", + "valuable", +] + +[[package]] +name = "tracing-journald" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba316a74e8fc3c3896a850dba2375928a9fa171b085ecddfc7c054d39970f3fd" +dependencies = [ + "libc", + "tracing-core", + "tracing-subscriber", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", ] [[package]] @@ -3809,9 +3670,9 @@ checksum = "7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc" [[package]] name = "unicode-segmentation" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-vo" @@ -3894,6 +3755,12 @@ dependencies = [ "serde", ] +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + [[package]] name = "vec_map" version = "0.8.2" @@ -3914,9 +3781,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3924,9 +3791,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" dependencies = [ "bumpalo", "log", @@ -3939,9 +3806,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" dependencies = [ "cfg-if", "js-sys", @@ -3951,9 +3818,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3961,9 +3828,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" dependencies = [ "proc-macro2", "quote", @@ -3974,9 +3841,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" [[package]] name = "wasm-timer" @@ -4026,9 +3893,9 @@ dependencies = [ [[package]] name = "wayland-client" -version = "0.30.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a925bd68c8b652af4e6f11a32410bd31bf84061c5ef279ed081520c60f203b4" +checksum = "85bde68449abab1a808e5227b6e295f4ae3680911eb7711b4a2cb90141edb780" dependencies = [ "bitflags", "nix 0.26.2", @@ -4182,9 +4049,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" dependencies = [ "js-sys", "wasm-bindgen", @@ -4370,6 +4237,30 @@ dependencies = [ "windows_x86_64_msvc 0.42.1", ] +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.42.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.1", + "windows_i686_gnu 0.42.1", + "windows_i686_msvc 0.42.1", + "windows_x86_64_gnu 0.42.1", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.1", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.1" @@ -4591,3 +4482,12 @@ name = "zeno" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c110ba09c9b3a43edd4803d570df0da2414fed6e822e22b976a4e3ef50860701" + +[[package]] +name = "zune-inflate" +version = "0.2.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589245df6230839c305984dcc0a8385cc72af1fd223f360ffd5d65efa4216d40" +dependencies = [ + "simd-adler32", +] diff --git a/Cargo.toml b/Cargo.toml index 298172d6..4b0b7f27 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,13 +10,6 @@ anyhow = { version = "1.0.51", features = ["backtrace"] } bitflags = "1.3.2" bytemuck = "1.12" calloop = { version = "0.10.1", features = ["executor"] } -slog = { version = "2.7", features = ["release_max_level_info", "max_level_debug"] }#, features = [ "release_max_level_debug", "max_level_trace"] } -slog-term = "2.8" -slog-async = "2.7" -slog-journald = "2.2.0" -slog-scope = "4.4" -slog-stdlog = "4.1" -log = "0.4" serde = { version = "1", features = ["derive"] } serde_json = "1" sendfd = "0.4.1" @@ -41,23 +34,27 @@ cosmic-protocols = { git = "https://github.com/pop-os/cosmic-protocols", branch libcosmic = { git = "https://github.com/pop-os/libcosmic", rev = "abf8fc96c", default-features = false, features = ["softbuffer"] } iced_softbuffer = { git = "https://github.com/pop-os/libcosmic", rev = "abf8fc96c" } ordered-float = "3.0" +glow = "0.11.2" +tracing-subscriber = { version = "0.3.16", features = ["env-filter", "tracing-log"] } +tracing-journald = "0.3.0" +tracing = "0.1.37" [dependencies.smithay] version = "0.3" -git = "https://github.com/Smithay/smithay.git" -rev = "2de946cf9e" +git = "https://github.com/smithay/smithay.git" +branch = "30dc3abb57" default-features = false -features = ["backend_drm", "backend_gbm", "backend_egl", "backend_libinput", "backend_session_libseat", "backend_udev", "backend_winit", "backend_vulkan", "backend_x11", "desktop", "use_system_lib", "renderer_glow", "renderer_multi", "wayland_frontend", "slog-stdlog", "xwayland"] +features = ["backend_drm", "backend_gbm", "backend_egl", "backend_libinput", "backend_session_libseat", "backend_udev", "backend_winit", "backend_vulkan", "backend_x11", "desktop", "use_system_lib", "renderer_glow", "renderer_multi", "wayland_frontend", "xwayland"] [dependencies.smithay-egui] git = "https://github.com/Smithay/smithay-egui.git" -rev = "610a7dbf80" +rev = "1145f5ff91" features = ["svg"] optional = true [features] default = [] -debug = ["egui", "smithay-egui", "renderdoc"] +debug = ["egui", "smithay-egui", "renderdoc", "anyhow/backtrace"] [profile.dev] lto = "thin" @@ -70,4 +67,4 @@ debug = true lto = "fat" [patch."https://github.com/Smithay/smithay.git"] -smithay = { git = "https://github.com/smithay//smithay", rev = "09e29418e5" } +smithay = { git = "https://github.com/pop-os/smithay", rev = "6276454e856" } diff --git a/src/backend/kms/mod.rs b/src/backend/kms/mod.rs index 23f8cc29..dacb50e1 100644 --- a/src/backend/kms/mod.rs +++ b/src/backend/kms/mod.rs @@ -55,6 +55,7 @@ use smithay::{ wayland::{dmabuf::DmabufGlobal, seat::WaylandFocus}, xwayland::XWaylandClientData, }; +use tracing::{debug, error, info, warn}; use std::{ cell::RefCell, @@ -112,15 +113,15 @@ pub fn init_backend( event_loop: &mut EventLoop<'static, Data>, state: &mut State, ) -> Result<()> { - let (session, notifier) = LibSeatSession::new(None).context("Failed to acquire session")?; + let (session, notifier) = LibSeatSession::new().context("Failed to acquire session")?; - let udev_backend = UdevBackend::new(session.seat(), None)?; + let udev_backend = UdevBackend::new(session.seat())?; let mut libinput_context = Libinput::new_with_udev::>(session.clone().into()); libinput_context .udev_assign_seat(&session.seat()) .map_err(|_| anyhow::anyhow!("Failed to assign seat to libinput"))?; - let libinput_backend = LibinputInputBackend::new(libinput_context.clone(), None); + let libinput_backend = LibinputInputBackend::new(libinput_context.clone()); let libinput_event_source = event_loop .handle() @@ -136,17 +137,17 @@ pub fn init_backend( None, None, ) { - slog_scope::crit!( - "Error scheduling event loop for output {}: {:?}", + error!( + ?err, + "Error scheduling event loop for output {}.", output.name(), - err ); } } }) .map_err(|err| err.error) .context("Failed to initialize libinput event source")?; - let api = GpuManager::new(GbmGlesBackend::::default(), None) + let api = GpuManager::new(GbmGlesBackend::::default()) .context("Failed to initialize renderers")?; // TODO get this info from system76-power, if available and setup a watcher @@ -173,7 +174,7 @@ pub fn init_backend( panic!("Failed to initialize any GPU"); }) }; - slog_scope::info!("Using {} as primary gpu for rendering", primary); + info!("Using {} as primary gpu for rendering.", primary); let udev_dispatcher = Dispatcher::new(udev_backend, move |event, _, data: &mut Data| { match match event { @@ -191,10 +192,10 @@ pub fn init_backend( .with_context(|| format!("Failed to remove drm device: {}", device_id)), } { Ok(()) => { - slog_scope::debug!("Successfully handled udev event") + debug!("Successfully handled udev event.") } Err(err) => { - slog_scope::error!("Error while handling udev event: {}", err) + error!(?err, "Error while handling udev event.") } } }); @@ -211,7 +212,7 @@ pub fn init_backend( .insert_source(notifier, move |event, &mut (), data| match event { SessionEvent::ActivateSession => { if let Err(err) = libinput_context.resume() { - slog_scope::error!("Failed to resume libinput context: {:?}", err); + error!(?err, "Failed to resume libinput context."); } for device in data.state.backend.kms().devices.values() { device.drm.as_source_ref().activate(); @@ -222,21 +223,13 @@ pub fn init_backend( let drm_node = match DrmNode::from_dev_id(dev) { Ok(node) => node, Err(err) => { - slog_scope::error!( - "Failed to read drm device {}: {}", - path.display(), - err - ); + error!(?err, "Failed to read drm device {}.", path.display(),); continue; } }; if data.state.backend.kms().devices.contains_key(&drm_node) { if let Err(err) = data.state.device_changed(dev) { - slog_scope::error!( - "Failed to update drm device {}: {}", - path.display(), - err - ); + error!(?err, "Failed to update drm device {}.", path.display(),); } } else { if let Err(err) = data.state.device_added( @@ -245,11 +238,7 @@ pub fn init_backend( &data.display.handle(), true, ) { - slog_scope::error!( - "Failed to add drm device {}: {}", - path.display(), - err - ); + error!(?err, "Failed to add drm device {}.", path.display(),); } } } @@ -284,10 +273,10 @@ pub fn init_backend( None }, ) { - slog_scope::crit!( - "Error scheduling event loop for output {}: {:?}", + error!( + ?err, + "Error scheduling event loop for output {}.", output.name(), - err ); } } @@ -352,27 +341,24 @@ impl State { return Ok(()); } - let fd = DrmDeviceFd::new( - unsafe { - DeviceFd::from_raw_fd( - self.backend - .kms() - .session - .open( - &path, - OFlag::O_RDWR | OFlag::O_CLOEXEC | OFlag::O_NOCTTY | OFlag::O_NONBLOCK, + let fd = DrmDeviceFd::new(unsafe { + DeviceFd::from_raw_fd( + self.backend + .kms() + .session + .open( + &path, + OFlag::O_RDWR | OFlag::O_CLOEXEC | OFlag::O_NOCTTY | OFlag::O_NONBLOCK, + ) + .with_context(|| { + format!( + "Failed to optain file descriptor for drm device: {}", + path.display() ) - .with_context(|| { - format!( - "Failed to optain file descriptor for drm device: {}", - path.display() - ) - })?, - ) - }, - None, - ); - let drm = DrmDevice::new(fd.clone(), false, None) + })?, + ) + }); + let drm = DrmDevice::new(fd.clone(), false) .with_context(|| format!("Failed to initialize drm device for: {}", path.display()))?; let drm_node = DrmNode::from_dev_id(dev)?; let supports_atomic = drm.is_atomic(); @@ -380,7 +366,7 @@ impl State { let gbm = GbmDevice::new(fd) .with_context(|| format!("Failed to initialize GBM device for {}", path.display()))?; let (render_node, formats) = { - let egl_display = EGLDisplay::new(gbm.clone(), None).with_context(|| { + let egl_display = EGLDisplay::new(gbm.clone()).with_context(|| { format!("Failed to create EGLDisplay for device: {}", path.display()) })?; let egl_device = EGLDevice::device_for_display(&egl_display).with_context(|| { @@ -391,7 +377,7 @@ impl State { .ok() .and_then(std::convert::identity) .unwrap_or(drm_node); - let egl_context = EGLContext::new(&egl_display, None).with_context(|| { + let egl_context = EGLContext::new(&egl_display).with_context(|| { format!( "Failed to create EGLContext for device {:?}:{}", egl_device, @@ -458,7 +444,7 @@ impl State { }) } Some(Err(err)) => { - slog_scope::warn!("Failed to submit frame: {}", err); + warn!(?err, "Failed to submit frame."); None } _ => None, // got disabled @@ -487,12 +473,12 @@ impl State { Some(repaint_delay), scheduled_sessions, ) { - slog_scope::warn!("Failed to schedule render: {}", err); + warn!(?err, "Failed to schedule render."); } } } DrmEvent::Error(err) => { - slog_scope::warn!("Failed to read events of device {:?}: {}", dev, err); + warn!(?err, "Failed to read events of device {:?}.", dev); } }); let token = self @@ -504,10 +490,9 @@ impl State { let socket = match self.create_socket(dh, render_node, formats.clone().into_iter()) { Ok(socket) => Some(socket), Err(err) => { - slog_scope::warn!( - "Failed to initialize hardware-acceleration for clients on {}: {}", - render_node, - err + warn!( + ?err, + "Failed to initialize hardware-acceleration for clients on {}.", render_node, ); None } @@ -548,7 +533,7 @@ impl State { let mut renderer = match backend.api.single_renderer(&render_node) { Ok(renderer) => renderer, Err(err) => { - slog_scope::warn!("Failed to initialize output: {}", err); + warn!(?err, "Failed to initialize output."); continue; } }; @@ -563,7 +548,7 @@ impl State { .w; wl_outputs.push(output); } - Err(err) => slog_scope::warn!("Failed to initialize output: {}", err), + Err(err) => warn!(?err, "Failed to initialize output."), }; } backend.devices.insert(drm_node, device); @@ -589,7 +574,7 @@ impl State { } fn init_vulkan(&mut self, drm_node: DrmNode, render_node: DrmNode) { - if let Ok(instance) = Instance::new(Version::VERSION_1_2, None, None) { + if let Ok(instance) = Instance::new(Version::VERSION_1_2, None) { if let Some(physical_device) = PhysicalDevice::enumerate(&instance) .ok() @@ -621,7 +606,7 @@ impl State { .allocator = Box::new(DmabufAllocator(allocator)); } Err(err) => { - slog_scope::warn!("Failed to create vulkan allocator: {}", err); + warn!(?err, "Failed to create vulkan allocator."); } } } @@ -654,7 +639,7 @@ impl State { let mut renderer = match backend.api.single_renderer(&device.render_node) { Ok(renderer) => renderer, Err(err) => { - slog_scope::warn!("Failed to initialize output: {}", err); + warn!(?err, "Failed to initialize output."); continue; } }; @@ -669,7 +654,7 @@ impl State { .w; outputs_added.push(output); } - Err(err) => slog_scope::warn!("Failed to initialize output: {}", err), + Err(err) => warn!(?err, "Failed to initialize output."), }; } } @@ -826,7 +811,6 @@ impl Device { .map(|info| info.model.clone()) .unwrap_or_else(|_| String::from("Unknown")), }, - None, ); for mode in conn_info.modes() { let refresh_rate = drm_helpers::calculate_refresh_rate(*mode); @@ -1059,7 +1043,6 @@ impl KmsState { GbmBufferFlags::RENDERING | GbmBufferFlags::SCANOUT, ), device.formats.clone(), - None, ) .with_context(|| { format!( @@ -1094,10 +1077,10 @@ impl KmsState { None }, ) { - slog_scope::crit!( - "Error scheduling event loop for output {}: {:?}", + error!( + ?err, + "Error scheduling event loop for output {}.", output.name(), - err ); } } @@ -1135,7 +1118,7 @@ impl KmsState { render, surface, ) { - slog_scope::debug!("Early import failed: {}", err); + debug!(?err, "Early import failed."); } } @@ -1247,7 +1230,7 @@ impl KmsState { } Err(err) => { if backend.session.is_active() { - slog_scope::error!("Error rendering: {:?}", err); + error!(?err, "Error rendering."); return TimeoutAction::ToDuration(Duration::from_secs_f64( (1000.0 / surface.refresh_rate as f64) - 0.003, )); diff --git a/src/backend/kms/socket.rs b/src/backend/kms/socket.rs index f7143899..0a3822cd 100644 --- a/src/backend/kms/socket.rs +++ b/src/backend/kms/socket.rs @@ -14,6 +14,7 @@ use smithay::{ xwayland::XWaylandClientData, }; use std::sync::Arc; +use tracing::{info, warn}; use crate::{ state::{ClientState, Data}, @@ -61,7 +62,7 @@ impl State { let dmabuf_global = self .common .dmabuf_state - .create_global_with_filter::(dh, formats.clone(), filter, None); + .create_global_with_filter::(dh, formats.clone(), filter); let drm_global_id = self .common @@ -81,8 +82,9 @@ impl State { ); // add a special socket for the gpu - let listener = ListeningSocketSource::with_name(&socket_name, None) + let listener = ListeningSocketSource::with_name(&socket_name) .with_context(|| format!("Failed to bind socket to {}", socket_name))?; + let socket_name_clone = socket_name.clone(); let token = self .common .event_loop_handle @@ -91,12 +93,16 @@ impl State { client_stream, Arc::new(data.state.new_client_state_with_node(render_node)), ) { - slog_scope::warn!("Error adding wayland client ({}): {}", render_node, err); + warn!( + socket_name = socket_name_clone, + ?err, + "Error adding wayland client." + ); } }) .context("Failed to add gpu-wayland socket to the event loop")?; - slog_scope::info!("Added socket at {} for gpu {}", socket_name, render_node,); + info!(socket_name, ?render_node, "Added gpu-specific socket."); Ok(Socket { token, diff --git a/src/backend/mod.rs b/src/backend/mod.rs index b90ff5c5..940b6c42 100644 --- a/src/backend/mod.rs +++ b/src/backend/mod.rs @@ -3,6 +3,7 @@ use crate::state::{Data, State}; use anyhow::{Context, Result}; use smithay::reexports::{calloop::EventLoop, wayland_server::DisplayHandle}; +use tracing::{info, warn}; pub mod render; @@ -29,8 +30,8 @@ pub fn init_backend_auto( match x11::init_backend(dh, event_loop, state) { Ok(_) => Ok(()), Err(err) => { - slog_scope::warn!("X11 Backend failed with error: {}", err); - slog_scope::info!("Falling back to winit backend."); + warn!(?err, "Initializing X11 Backend failed."); + info!("Falling back to winit backend."); winit::init_backend(dh, event_loop, state) } } diff --git a/src/backend/render/cursor.rs b/src/backend/render/cursor.rs index 1e83b56d..606b5fbb 100644 --- a/src/backend/render/cursor.rs +++ b/src/backend/render/cursor.rs @@ -26,6 +26,7 @@ use std::{ sync::Mutex, time::Duration, }; +use tracing::warn; use xcursor::{ parser::{parse_xcursor, Image}, CursorTheme, @@ -51,9 +52,7 @@ impl Cursor { let theme = CursorTheme::load(&name); let icons = load_icon(&theme) - .map_err(|err| { - slog_scope::warn!("Unable to load xcursor: {}, using fallback cursor", err) - }) + .map_err(|err| warn!(?err, "Unable to load xcursor, using fallback cursor")) .unwrap_or_else(|_| { vec![Image { size: 32, @@ -160,7 +159,6 @@ where surface, position.to_physical_precise_round(scale), scale, - slog_scope::logger(), ) } @@ -175,7 +173,8 @@ where ::TextureId: 'static, { if get_role(&surface) != Some("dnd_icon") { - slog_scope::warn!( + warn!( + ?surface, "Trying to display as a dnd icon a surface that does not have the DndIcon role." ); } @@ -185,7 +184,6 @@ where surface, location.into().to_physical_precise_round(scale), scale, - slog_scope::logger(), ) } diff --git a/src/backend/render/element.rs b/src/backend/render/element.rs index fa230f39..181f1c53 100644 --- a/src/backend/render/element.rs +++ b/src/backend/render/element.rs @@ -127,23 +127,19 @@ impl RenderElement for CosmicElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], - log: &slog::Logger, ) -> Result<(), ::Error> { match self { - CosmicElement::Workspace(elem) => elem.draw(frame, src, dst, damage, log), - CosmicElement::Cursor(elem) => elem.draw(frame, src, dst, damage, log), - CosmicElement::MoveGrab(elem) => elem.draw(frame, src, dst, damage, log), + CosmicElement::Workspace(elem) => elem.draw(frame, src, dst, damage), + CosmicElement::Cursor(elem) => elem.draw(frame, src, dst, damage), + CosmicElement::MoveGrab(elem) => elem.draw(frame, src, dst, damage), #[cfg(feature = "debug")] CosmicElement::Egui(elem) => { - RenderElement::::draw(elem, frame, src, dst, damage, log) + RenderElement::::draw(elem, frame, src, dst, damage) } } } - fn underlying_storage( - &self, - renderer: &GlowRenderer, - ) -> Option> { + fn underlying_storage(&self, renderer: &mut GlowRenderer) -> Option { match self { CosmicElement::Workspace(elem) => elem.underlying_storage(renderer), CosmicElement::Cursor(elem) => elem.underlying_storage(renderer), @@ -161,17 +157,16 @@ impl<'a, 'b> RenderElement> for CosmicElement, dst: Rectangle, damage: &[Rectangle], - log: &slog::Logger, ) -> Result<(), as Renderer>::Error> { match self { - CosmicElement::Workspace(elem) => elem.draw(frame, src, dst, damage, log), - CosmicElement::Cursor(elem) => elem.draw(frame, src, dst, damage, log), - CosmicElement::MoveGrab(elem) => elem.draw(frame, src, dst, damage, log), + CosmicElement::Workspace(elem) => elem.draw(frame, src, dst, damage), + CosmicElement::Cursor(elem) => elem.draw(frame, src, dst, damage), + CosmicElement::MoveGrab(elem) => elem.draw(frame, src, dst, damage), #[cfg(feature = "debug")] CosmicElement::Egui(elem) => { let elem = { let glow_frame = frame.glow_frame_mut(); - RenderElement::::draw(elem, glow_frame, src, dst, damage, log) + RenderElement::::draw(elem, glow_frame, src, dst, damage) .map_err(|err| MultiError::Render(err)) }; elem @@ -181,15 +176,15 @@ impl<'a, 'b> RenderElement> for CosmicElement, - ) -> Option>> { + renderer: &mut GlMultiRenderer<'a, 'b>, + ) -> Option { match self { CosmicElement::Workspace(elem) => elem.underlying_storage(renderer), CosmicElement::Cursor(elem) => elem.underlying_storage(renderer), CosmicElement::MoveGrab(elem) => elem.underlying_storage(renderer), #[cfg(feature = "debug")] CosmicElement::Egui(elem) => { - let glow_renderer = renderer.glow_renderer(); + let glow_renderer = renderer.glow_renderer_mut(); match elem.underlying_storage(glow_renderer) { Some(UnderlyingStorage::Wayland(buffer)) => { Some(UnderlyingStorage::Wayland(buffer)) diff --git a/src/backend/render/mod.rs b/src/backend/render/mod.rs index f8f71afb..309f1b12 100644 --- a/src/backend/render/mod.rs +++ b/src/backend/render/mod.rs @@ -37,6 +37,7 @@ use smithay::{ utils::{Physical, Rectangle}, wayland::dmabuf::get_dmabuf, }; +use tracing::warn; pub mod cursor; use self::cursor::CursorRenderElement; @@ -268,7 +269,7 @@ where } renderer.bind(target).map_err(RenderError::Rendering)?; - let res = damage_tracker.render_output(renderer, age, &elements, CLEAR_COLOR, None); + let res = damage_tracker.render_output(renderer, age, &elements, CLEAR_COLOR); if let Some(fps) = fps.as_mut() { fps.render(); @@ -284,7 +285,7 @@ where params, output.current_transform(), |_node, buffer, renderer, dtr, age| { - let res = dtr.damage_output(age, &elements, slog_scope::logger())?; + let res = dtr.damage_output(age, &elements)?; if let (Some(ref damage), _) = &res { if let Ok(dmabuf) = get_dmabuf(buffer) { @@ -311,7 +312,7 @@ where Ok(true) => {} // success Ok(false) => state.still_pending(session.clone(), params.clone()), Err(err) => { - slog_scope::warn!("Error rendering to screencopy session: {}", err); + warn!(?err, "Error rendering to screencopy session."); session.failed(FailureReason::Unspec); } } diff --git a/src/backend/winit.rs b/src/backend/winit.rs index 92a000d9..d3281fdc 100644 --- a/src/backend/winit.rs +++ b/src/backend/winit.rs @@ -27,6 +27,7 @@ use smithay::{ utils::Transform, }; use std::cell::RefCell; +use tracing::{error, info, warn}; #[cfg(feature = "debug")] use crate::state::Fps; @@ -145,7 +146,7 @@ pub fn init_backend( state: &mut State, ) -> Result<()> { let (mut backend, mut input) = - winit::init(None).map_err(|_| anyhow!("Failed to initilize winit backend"))?; + winit::init().map_err(|_| anyhow!("Failed to initilize winit backend"))?; init_egl_client_side(dh, state, &mut backend)?; @@ -161,7 +162,7 @@ pub fn init_backend( size: (size.physical_size.w as i32, size.physical_size.h as i32).into(), refresh: 60_000, }; - let output = Output::new(name, props, None); + let output = Output::new(name, props); output.add_mode(mode); output.set_preferred(mode); output.change_current_state( @@ -197,7 +198,7 @@ pub fn init_backend( .winit() .render_output(&mut data.state.common) { - slog_scope::error!("Failed to render frame: {}", err); + error!(?err, "Failed to render frame."); render_ping.ping(); } }) @@ -269,7 +270,7 @@ fn init_egl_client_side( let bind_result = renderer.renderer().bind_wl_display(dh); match bind_result { Ok(_) => { - slog_scope::info!("EGL hardware-acceleration enabled"); + info!("EGL hardware-acceleration enabled."); let dmabuf_formats = renderer .renderer() .dmabuf_formats() @@ -278,9 +279,9 @@ fn init_egl_client_side( state .common .dmabuf_state - .create_global::(dh, dmabuf_formats, None); + .create_global::(dh, dmabuf_formats); } - Err(err) => slog_scope::warn!("Unable to initialize bind display to EGL: {}", err), + Err(err) => warn!(?err, "Unable to initialize bind display to EGL."), }; Ok(()) diff --git a/src/backend/x11.rs b/src/backend/x11.rs index a917ca44..8154e591 100644 --- a/src/backend/x11.rs +++ b/src/backend/x11.rs @@ -37,6 +37,7 @@ use smithay::{ utils::{DeviceFd, Transform}, }; use std::{cell::RefCell, os::unix::io::OwnedFd}; +use tracing::{debug, error, info, warn}; #[cfg(feature = "debug")] use crate::state::Fps; @@ -96,7 +97,7 @@ impl X11State { size: (size.w as i32, size.h as i32).into(), refresh: 60_000, }; - let output = Output::new(name, props, None); + let output = Output::new(name, props); output.add_mode(mode); output.set_preferred(mode); output.change_current_state( @@ -126,7 +127,7 @@ impl X11State { if let Err(err) = surface.render_output(&mut x11_state.renderer, &mut data.state.common) { - slog_scope::error!("Error rendering: {}", err); + error!(?err, "Error rendering."); } surface.dirty = false; surface.pending = true; @@ -272,12 +273,12 @@ impl Surface { } fn try_vulkan_allocator(node: &DrmNode) -> Option { - let instance = match Instance::new(Version::VERSION_1_2, None, None) { + let instance = match Instance::new(Version::VERSION_1_2, None) { Ok(instance) => instance, Err(err) => { - slog_scope::warn!( - "Failed to instanciate vulkan, falling back to gbm allocator: {}", - err + warn!( + ?err, + "Failed to instanciate vulkan, falling back to gbm allocator.", ); return None; } @@ -286,7 +287,7 @@ fn try_vulkan_allocator(node: &DrmNode) -> Option { let devices = match PhysicalDevice::enumerate(&instance) { Ok(devices) => devices, Err(err) => { - slog_scope::debug!("No vulkan devices, falling back to gbm: {}", err); + debug!(?err, "No vulkan devices, falling back to gbm."); return None; } }; @@ -299,7 +300,7 @@ fn try_vulkan_allocator(node: &DrmNode) -> Option { phd.primary_node().unwrap() == Some(*node) || phd.render_node().unwrap() == Some(*node) }) else { - slog_scope::debug!("No vulkan device for node {:?}, falling back to gbm", node); + debug!(?node, "No vulkan device for node, falling back to gbm."); return None; }; @@ -308,10 +309,10 @@ fn try_vulkan_allocator(node: &DrmNode) -> Option { fn try_gbm_allocator(fd: OwnedFd) -> Option { // Create the gbm device for buffer allocation. - let device = match GbmDevice::new(DrmDeviceFd::new(DeviceFd::from(fd), None)) { + let device = match GbmDevice::new(DrmDeviceFd::new(DeviceFd::from(fd))) { Ok(gbm) => gbm, Err(err) => { - slog_scope::error!("Failed to create GBM device: {}", err); + error!(?err, "Failed to create GBM device."); return None; } }; @@ -327,7 +328,7 @@ pub fn init_backend( event_loop: &mut EventLoop, state: &mut State, ) -> Result<()> { - let backend = X11Backend::new(None).with_context(|| "Failed to initilize X11 backend")?; + let backend = X11Backend::new().with_context(|| "Failed to initilize X11 backend")?; let handle = backend.handle(); // Obtain the DRM node the X server uses for direct rendering. @@ -340,12 +341,12 @@ pub fn init_backend( .find(|device| device.try_get_render_node().ok().flatten() == Some(drm_node)) .with_context(|| format!("Failed to find EGLDevice for node {}", drm_node))?; // Initialize EGL - let egl = EGLDisplay::new(device, None).with_context(|| "Failed to create EGL display")?; + let egl = EGLDisplay::new(device).with_context(|| "Failed to create EGL display")?; // Create the OpenGL context - let context = EGLContext::new(&egl, None).with_context(|| "Failed to create EGL context")?; + let context = EGLContext::new(&egl).with_context(|| "Failed to create EGL context")?; // Create a renderer - let mut renderer = unsafe { GlowRenderer::new(context, None) } - .with_context(|| "Failed to initialize renderer")?; + let mut renderer = + unsafe { GlowRenderer::new(context) }.with_context(|| "Failed to initialize renderer")?; init_egl_client_side(dh, state, &mut renderer)?; @@ -478,14 +479,14 @@ where let bind_result = renderer.bind_wl_display(dh); match bind_result { Ok(_) => { - slog_scope::info!("EGL hardware-acceleration enabled"); + info!("EGL hardware-acceleration enabled."); let dmabuf_formats = renderer.dmabuf_formats().cloned().collect::>(); state .common .dmabuf_state - .create_global::(dh, dmabuf_formats, None); + .create_global::(dh, dmabuf_formats); } - Err(err) => slog_scope::warn!("Unable to initialize bind display to EGL: {}", err), + Err(err) => warn!(?err, "Unable to initialize bind display to EGL."), }; Ok(()) diff --git a/src/config/mod.rs b/src/config/mod.rs index 5afe1d0e..c7107dc1 100644 --- a/src/config/mod.rs +++ b/src/config/mod.rs @@ -21,6 +21,7 @@ pub use smithay::{ utils::{Logical, Physical, Point, Size, Transform}, }; use std::{cell::RefCell, collections::HashMap, fs::OpenOptions, path::PathBuf}; +use tracing::{debug, error, info, warn}; mod types; pub use self::types::*; @@ -207,9 +208,9 @@ impl Config { locations.push(PathBuf::from("/etc/cosmic-comp.ron")); for path in locations { - slog_scope::debug!("Trying config location: {}", path.display()); + debug!("Trying config location: {}", path.display()); if path.exists() { - slog_scope::info!("Using config at {}", path.display()); + info!("Using config at {}", path.display()); return ron::de::from_reader(OpenOptions::new().read(true).open(path).unwrap()) .expect("Malformed config file"); } @@ -243,9 +244,9 @@ impl Config { match ron::de::from_reader(OpenOptions::new().read(true).open(path).unwrap()) { Ok(config) => return config, Err(err) => { - slog_scope::warn!("Failed to read output_config ({}), resetting..", err); + warn!(?err, "Failed to read output_config, resetting.."); if let Err(err) = std::fs::remove_file(path) { - slog_scope::error!("Failed to remove output_config {}", err); + error!(?err, "Failed to remove output_config."); } } }; @@ -263,9 +264,9 @@ impl Config { match ron::de::from_reader(OpenOptions::new().read(true).open(path).unwrap()) { Ok(config) => return config, Err(err) => { - slog_scope::warn!("Failed to read input_config ({}), resetting..", err); + warn!(?err, "Failed to read input_config, resetting.."); if let Err(err) = std::fs::remove_file(path) { - slog_scope::error!("Failed to remove input_config {}", err); + error!(?err, "Failed to remove input_config."); } } }; @@ -324,10 +325,10 @@ impl Config { seats.iter().cloned(), loop_handle, ) { - slog_scope::warn!( - "Failed to set new config for output {}: {}", + warn!( + ?err, + "Failed to set new config for output {}.", output.name(), - err ); reset = true; break; @@ -359,11 +360,7 @@ impl Config { seats.iter().cloned(), loop_handle, ) { - slog_scope::error!( - "Failed to reset config for output {}: {}", - output.name(), - err - ); + error!(?err, "Failed to reset config for output {}.", output.name()); } else { if enabled { output_state.enable_head(&output); @@ -385,10 +382,10 @@ impl Config { seats.iter().cloned(), loop_handle, ) { - slog_scope::warn!( - "Failed to set new config for output {}: {}", + warn!( + ?err, + "Failed to set new config for output {}.", output.name(), - err ); } else { if output @@ -456,158 +453,158 @@ impl Config { DeviceState::DisabledOnExternalMouse => device .config_send_events_set_mode(SendEventsMode::DISABLED_ON_EXTERNAL_MOUSE), } { - slog_scope::warn!( - "Failed to apply mode {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply mode {:?} for device {:?}.", config.state, device.name(), - err ); } if let Some(accel) = config.acceleration.as_ref() { if let Some(profile) = accel.profile { if let Err(err) = device.config_accel_set_profile(profile) { - slog_scope::warn!( - "Failed to apply acceleration profile {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply acceleration profile {:?} for device {:?}.", profile, device.name(), - err ); } } if let Err(err) = device.config_accel_set_speed(accel.speed) { - slog_scope::warn!( - "Failed to apply acceleration speed {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply acceleration speed {:?} for device {:?}.", accel.speed, device.name(), - err ); } } if let Some(matrix) = config.calibration { if let Err(err) = device.config_calibration_set_matrix(matrix) { - slog_scope::warn!( - "Failed to apply calibration matrix {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply calibration matrix {:?} for device {:?}.", matrix, device.name(), - err ); } } if let Some(method) = config.click_method { if let Err(err) = device.config_click_set_method(method) { - slog_scope::warn!( - "Failed to apply click method {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply click method {:?} for device {:?}.", method, device.name(), - err ); } } if let Some(dwt) = config.disable_while_typing { if let Err(err) = device.config_dwt_set_enabled(dwt) { - slog_scope::warn!( - "Failed to apply disable-while-typing {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply disable-while-typing {:?} for device {:?}.", dwt, device.name(), - err ); } } if let Some(left) = config.left_handed { if let Err(err) = device.config_left_handed_set(left) { - slog_scope::warn!( - "Failed to apply left-handed {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply left-handed {:?} for device {:?}.", left, device.name(), - err ); } } if let Some(middle) = config.middle_button_emulation { if let Err(err) = device.config_middle_emulation_set_enabled(middle) { - slog_scope::warn!( - "Failed to apply middle-button-emulation {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply middle-button-emulation {:?} for device {:?}.", middle, device.name(), - err ); } } if let Some(angle) = config.rotation_angle { if let Err(err) = device.config_rotation_set_angle(angle) { - slog_scope::warn!( - "Failed to apply rotation-angle {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply rotation-angle {:?} for device {:?}", angle, device.name(), - err ); } } if let Some(scroll) = config.scroll_config.as_ref() { if let Some(method) = scroll.method { if let Err(err) = device.config_scroll_set_method(method) { - slog_scope::warn!( - "Failed to apply scroll method {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply scroll method {:?} for device {:?}.", method, device.name(), - err ); } } if let Some(natural) = scroll.natural_scroll { if let Err(err) = device.config_scroll_set_natural_scroll_enabled(natural) { - slog_scope::warn!( - "Failed to apply natural scrolling {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply natural scrolling {:?} for device {:?}.", natural, device.name(), - err ); } } if let Some(button) = scroll.scroll_button { if let Err(err) = device.config_scroll_set_button(button) { - slog_scope::warn!( - "Failed to apply scroll button {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply scroll button {:?} for device {:?}.", button, device.name(), - err ); } } } if let Some(tap) = config.tap_config.as_ref() { if let Err(err) = device.config_tap_set_enabled(tap.enabled) { - slog_scope::warn!( - "Failed to apply tap-to-click {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply tap-to-click {:?} for device {:?}.", tap.enabled, device.name(), - err ); } if let Some(button_map) = tap.button_map { if let Err(err) = device.config_tap_set_button_map(button_map) { - slog_scope::warn!( - "Failed to apply button map {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply button map {:?} for device {:?}.", button_map, device.name(), - err ); } } if let Err(err) = device.config_tap_set_drag_enabled(tap.drag) { - slog_scope::warn!( - "Failed to apply tap-drag {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply tap-drag {:?} for device {:?}.", tap.drag, device.name(), - err ); } if let Err(err) = device.config_tap_set_drag_lock_enabled(tap.drag_lock) { - slog_scope::warn!( - "Failed to apply tap-drag-lock {:?} for device {:?}: {:?}", + warn!( + ?err, + "Failed to apply tap-drag-lock {:?} for device {:?}.", tap.drag_lock, device.name(), - err ); } } @@ -717,12 +714,12 @@ impl<'a, T: Serialize> Drop for PersistenceGuard<'a, T> { { Ok(writer) => writer, Err(err) => { - slog_scope::warn!("Failed to persist {}: {}", path.display(), err); + warn!(?err, "Failed to persist {}.", path.display()); return; } }; if let Err(err) = ron::ser::to_writer_pretty(writer, &self.1, Default::default()) { - slog_scope::warn!("Failed to persist {}: {}", path.display(), err); + warn!(?err, "Failed to persist {}", path.display()); } } } diff --git a/src/config/types.rs b/src/config/types.rs index 704e580b..584dd51c 100644 --- a/src/config/types.rs +++ b/src/config/types.rs @@ -10,6 +10,7 @@ pub use smithay::{ reexports::input::{AccelProfile, ClickMethod, ScrollMethod, TapButtonMap}, utils::{Logical, Physical, Point, Size, Transform}, }; +use tracing::warn; use xkbcommon::xkb; #[derive(Debug, Clone, Deserialize, Serialize)] @@ -247,7 +248,7 @@ where &"One of the keysym names of xkbcommon.h without the 'KEY_' prefix", )), x => { - slog_scope::warn!( + warn!( "Key-Binding '{}' only matched case insensitive for {:?}", name, xkb::keysym_get_name(x) diff --git a/src/input/mod.rs b/src/input/mod.rs index c87e135b..a5eaac4d 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -35,6 +35,9 @@ use smithay::{ }, xwayland::X11Surface, }; +#[cfg(not(feature = "debug"))] +use tracing::info; +use tracing::{error, trace, warn}; use std::{cell::RefCell, collections::HashMap}; use xkbcommon::xkb::KEY_XF86Switch_VT_12; @@ -117,7 +120,7 @@ pub fn add_seat( config: &Config, name: String, ) -> Seat { - let mut seat = seat_state.new_wl_seat(dh, name, None); + let mut seat = seat_state.new_wl_seat(dh, name); let userdata = seat.user_data(); userdata.insert_if_missing(SeatId::default); userdata.insert_if_missing(Devices::default); @@ -137,9 +140,9 @@ pub fn add_seat( // devices appear), we have to surrender to reality and just always expose a keyboard and pointer. let conf = config.xkb_config(); if let Err(err) = seat.add_keyboard((&conf).into(), 200, 25) { - slog_scope::warn!( - "Failed to load provided xkb config: {}. Trying default...", - err + warn!( + ?err, + "Failed to load provided xkb config. Trying default...", ); seat.add_keyboard(XkbConfig::default(), 200, 25) .expect("Failed to load xkb configuration files"); @@ -204,7 +207,7 @@ impl State { if devices.has_device(&device) { let keycode = event.key_code(); let state = event.state(); - slog_scope::trace!("key"; "keycode" => keycode, "state" => format!("{:?}", state)); + trace!(?keycode, ?state, "key"); let serial = SERIAL_COUNTER.next_serial(); let time = Event::time_msec(&event); @@ -233,10 +236,7 @@ impl State { + 1) as i32, ) { - slog_scope::error!( - "Failed switching virtual terminal: {}", - err - ); + error!(?err, "Failed switching virtual terminal."); } userdata.get::().unwrap().add(&handle); return FilterResult::Intercept(None); @@ -574,7 +574,7 @@ impl State { } #[cfg(not(feature = "debug"))] Action::Debug => { - slog_scope::info!("Debug overlay not included in this version") + info!("Debug overlay not included in this build.") } Action::Close => { let current_output = seat.active_output(); @@ -923,7 +923,7 @@ impl State { Action::Spawn(command) => { if let Err(err) = std::process::Command::new("/bin/sh") .arg("-c") - .arg(command) + .arg(command.clone()) .env("WAYLAND_DISPLAY", &self.common.socket) .env( "DISPLAY", @@ -938,7 +938,7 @@ impl State { .env_remove("COSMIC_SESSION_SOCK") .spawn() { - slog_scope::warn!("Failed to spawn: {}", err); + warn!(?err, "Failed to spawn \"{}\"", command); } } } diff --git a/src/logger/mod.rs b/src/logger/mod.rs index ddefa19f..f72331e4 100644 --- a/src/logger/mod.rs +++ b/src/logger/mod.rs @@ -1,59 +1,60 @@ // SPDX-License-Identifier: GPL-3.0-only +use std::str::FromStr; + use anyhow::Result; -use slog::{Drain, Level}; -pub struct LogState { - _guard: slog_scope::GlobalLoggerGuard, -} +use tracing::{debug, info, warn}; +use tracing_journald as journald; +use tracing_subscriber::{filter::Directive, fmt, prelude::*, EnvFilter}; -pub fn init_logger() -> Result { - let decorator = slog_term::TermDecorator::new().stderr().build(); - let term_drain = slog_term::CompactFormat::new(decorator) - .build() - .ignore_res(); - let journald_drain = slog_journald::JournaldDrain.ignore_res(); - let drain = slog::Duplicate::new(term_drain, journald_drain); - // usually we would not want to use a Mutex here, but this is usefull for a prototype, - // to make sure we do not miss any in-flight messages, when we crash. - let logger = slog::Logger::root( - std::sync::Mutex::new(drain.filter(|record| { - if record.module().starts_with("smithay") || record.module().starts_with("cosmic_comp") - { - return true; - } - - if record.module().contains("cosmic_text") { - // cosmic-text is very chatty - return record.level().is_at_least(Level::Error); - } - - if cfg!(debug_assertions) { - record.level().is_at_least(Level::Warning) +pub fn init_logger() -> Result<()> { + let filter = EnvFilter::try_from_default_env() + .unwrap_or_else(|_| { + EnvFilter::new(if cfg!(debug_assertions) { + "warning" } else { - record.level().is_at_least(Level::Error) - } - })) - .fuse(), - slog::o!(), - ); + "error" + }) + }) + .add_directive(Directive::from_str("cosmic_text=error").unwrap()) + .add_directive( + Directive::from_str(&format!( + "smithay={level},cosmic_comp={level}", + level = if cfg!(debug_assertions) { + "debug" + } else { + "info" + } + )) + .unwrap(), + ); - let _guard = slog_scope::set_global_logger(logger); - slog_stdlog::init_with_level(if cfg!(debug_assertions) { - log::Level::Debug - } else { - log::Level::Info - }) - .unwrap(); + let fmt_layer = fmt::layer().compact(); + + match journald::layer() { + Ok(journald_layer) => tracing_subscriber::registry() + .with(fmt_layer) + .with(journald_layer) + .with(filter) + .init(), + Err(err) => { + tracing_subscriber::registry() + .with(fmt_layer) + .with(filter) + .init(); + warn!(?err, "Failed to init journald logging."); + } + }; log_panics::init(); - slog_scope::info!("Version: {}", std::env!("CARGO_PKG_VERSION")); + info!("Version: {}", std::env!("CARGO_PKG_VERSION")); if cfg!(feature = "debug") { - slog_scope::debug!( + debug!( "Debug build ({})", std::option_env!("GIT_HASH").unwrap_or("Unknown") ); } - Ok(LogState { _guard }) + Ok(()) } diff --git a/src/main.rs b/src/main.rs index ecc7f2b4..4fbd957d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,6 +10,7 @@ use smithay::{ use anyhow::{Context, Result}; use std::{ffi::OsString, os::unix::prelude::AsRawFd, sync::Arc}; +use tracing::{error, info, warn}; pub mod backend; pub mod config; @@ -27,8 +28,8 @@ pub mod xwayland; fn main() -> Result<()> { // setup logger - let _log = logger::init_logger()?; - slog_scope::info!("Cosmic starting up!"); + logger::init_logger()?; + info!("Cosmic starting up!"); // init event loop let mut event_loop = @@ -56,7 +57,7 @@ fn main() -> Result<()> { event_loop.run(None, &mut data, |data| { // shall we shut down? if data.state.common.shell.outputs().next().is_none() || data.state.common.should_stop { - slog_scope::info!("Shutting down"); + info!("Shutting down"); data.state.common.event_loop_signal.stop(); data.state.common.event_loop_signal.wakeup(); return; @@ -82,9 +83,9 @@ fn init_wayland_display( ) -> Result<(Display, OsString)> { let mut display = Display::new().unwrap(); - let source = ListeningSocketSource::new_auto(None).unwrap(); + let source = ListeningSocketSource::new_auto().unwrap(); let socket_name = source.socket_name().to_os_string(); - slog_scope::info!("Listening on {:?}", socket_name); + info!("Listening on {:?}", socket_name); event_loop .handle() @@ -97,7 +98,7 @@ fn init_wayland_display( data.state.new_client_state() }), ) { - slog_scope::warn!("Error adding wayland client: {}", err); + warn!(?err, "Error adding wayland client"); }; }) .with_context(|| "Failed to init the wayland socket source.")?; @@ -112,10 +113,10 @@ fn init_wayland_display( move |_, _, data: &mut state::Data| match data.display.dispatch_clients(&mut data.state) { Ok(_) => Ok(PostAction::Continue), - Err(e) => { - slog_scope::error!("I/O error on the Wayland display: {}", e); + Err(err) => { + error!(?err, "I/O error on the Wayland display"); data.state.common.should_stop = true; - Err(e) + Err(err) } }, ) diff --git a/src/session.rs b/src/session.rs index af38a687..db1795fe 100644 --- a/src/session.rs +++ b/src/session.rs @@ -17,6 +17,7 @@ use std::{ }, sync::Arc, }; +use tracing::{error, warn}; use crate::state::{Data, State}; @@ -108,7 +109,7 @@ pub fn setup_socket(handle: LoopHandle, state: &State) -> Result<()> { stream.buffer = vec![0; stream.size as usize]; }, Err(err) => { - slog_scope::warn!("Error reading from session socket: {}", err); + warn!(?err, "Error reading from session socket"); return Ok(PostAction::Remove); } } @@ -117,7 +118,7 @@ pub fn setup_socket(handle: LoopHandle, state: &State) -> Result<()> { stream.read_bytes += match stream.stream.read(&mut stream.buffer) { Ok(size) => size, Err(err) => { - slog_scope::error!("Error reading from session socket: {}", err); + error!(?err, "Error reading from session socket"); return Ok(PostAction::Remove); } }; @@ -137,22 +138,22 @@ pub fn setup_socket(handle: LoopHandle, state: &State) -> Result<()> { for fd in fds.into_iter().take(received_count) { let stream = unsafe { UnixStream::from_raw_fd(fd) }; if let Err(err) = data.display.handle().insert_client(stream, Arc::new(data.state.new_privileged_client_state())) { - slog_scope::warn!("Failed to add privileged client to display: {}", err); + warn!(?err, "Failed to add privileged client to display"); } } }, Err(err) => { - slog_scope::warn!("Failed to read file descriptors from session sock: {}", err); + warn!(?err, "Failed to read file descriptors from session sock"); } } }, - Ok(Message::SetEnv { .. }) => slog_scope::warn!("Got SetEnv from session? What is this?"), - _ => slog_scope::warn!("Unknown session socket message, are you using incompatible cosmic-session and cosmic-comp versions?"), + Ok(Message::SetEnv { .. }) => warn!("Got SetEnv from session? What is this?"), + _ => warn!("Unknown session socket message, are you using incompatible cosmic-session and cosmic-comp versions?"), }; Ok(PostAction::Continue) }, Err(err) => { - slog_scope::warn!("Invalid message from session sock: {}", err); + warn!(?err, "Invalid message from session sock"); Ok(PostAction::Continue) } } @@ -162,7 +163,7 @@ pub fn setup_socket(handle: LoopHandle, state: &State) -> Result<()> { }, ).with_context(|| "Failed to init the cosmic session socket source")?; } else { - slog_scope::error!("COSMIC_SESSION_SOCK is no valid RawFd: {}", fd_num); + error!(socket = fd_num, "COSMIC_SESSION_SOCK is no valid RawFd."); } }; diff --git a/src/shell/element/mod.rs b/src/shell/element/mod.rs index 42352d66..06709daf 100644 --- a/src/shell/element/mod.rs +++ b/src/shell/element/mod.rs @@ -54,6 +54,8 @@ use egui::plot::{Corner, Legend, Plot, PlotPoints, Polygon}; use smithay::backend::renderer::{ element::texture::TextureRenderElement, gles2::Gles2Texture, multigpu::Error as MultiError, }; +#[cfg(feature = "debug")] +use tracing::debug; use super::{focus::FocusDirection, layout::floating::ResizeState}; @@ -750,14 +752,13 @@ impl RenderElement for CosmicMappedRenderElement { src: Rectangle, dst: Rectangle, damage: &[Rectangle], - log: &slog::Logger, ) -> Result<(), ::Error> { match self { - CosmicMappedRenderElement::Stack(elem) => elem.draw(frame, src, dst, damage, log), - CosmicMappedRenderElement::Window(elem) => elem.draw(frame, src, dst, damage, log), + CosmicMappedRenderElement::Stack(elem) => elem.draw(frame, src, dst, damage), + CosmicMappedRenderElement::Window(elem) => elem.draw(frame, src, dst, damage), #[cfg(feature = "debug")] CosmicMappedRenderElement::Egui(elem) => { - RenderElement::::draw(elem, frame, src, dst, damage, log) + RenderElement::::draw(elem, frame, src, dst, damage) } } } @@ -781,15 +782,14 @@ impl<'a, 'b> RenderElement> src: Rectangle, dst: Rectangle, damage: &[Rectangle], - log: &slog::Logger, ) -> Result<(), as Renderer>::Error> { match self { - CosmicMappedRenderElement::Stack(elem) => elem.draw(frame, src, dst, damage, log), - CosmicMappedRenderElement::Window(elem) => elem.draw(frame, src, dst, damage, log), + CosmicMappedRenderElement::Stack(elem) => elem.draw(frame, src, dst, damage), + CosmicMappedRenderElement::Window(elem) => elem.draw(frame, src, dst, damage), #[cfg(feature = "debug")] CosmicMappedRenderElement::Egui(elem) => { let glow_frame = frame.glow_frame_mut(); - RenderElement::::draw(elem, glow_frame, src, dst, damage, log) + RenderElement::::draw(elem, glow_frame, src, dst, damage) .map_err(|err| MultiError::Render(err)) } } @@ -804,7 +804,7 @@ impl<'a, 'b> RenderElement> CosmicMappedRenderElement::Window(elem) => elem.underlying_storage(renderer), #[cfg(feature = "debug")] CosmicMappedRenderElement::Egui(elem) => { - let glow_renderer = renderer.glow_renderer(); + let glow_renderer = renderer.glow_renderer_mut(); match elem.underlying_storage(glow_renderer) { Some(UnderlyingStorage::Wayland(buffer)) => { Some(UnderlyingStorage::Wayland(buffer)) @@ -1015,7 +1015,7 @@ where ) { Ok(element) => vec![element.into()], Err(err) => { - slog_scope::debug!("Error rendering debug overlay: {}", err); + debug!(?err, "Error rendering debug overlay."); Vec::new() } } diff --git a/src/shell/focus/mod.rs b/src/shell/focus/mod.rs index 3b4ef3c4..eb5c0774 100644 --- a/src/shell/focus/mod.rs +++ b/src/shell/focus/mod.rs @@ -12,6 +12,7 @@ use smithay::{ utils::{IsAlive, Serial, SERIAL_COUNTER}, }; use std::cell::RefCell; +use tracing::{debug, info}; use self::target::{KeyboardFocusTarget, WindowGroup}; @@ -100,7 +101,7 @@ impl Shell { if let Some(workspace) = state.common.shell.space_for_mut(mapped) { let mut focus_stack = workspace.focus_stack.get_mut(active_seat); if Some(mapped) != focus_stack.last() { - slog_scope::debug!("Focusing window: {:?}", mapped); + debug!(?mapped, "Focusing window."); focus_stack.append(mapped); // also remove popup grabs, if we are switching focus if let Some(mut popup_grab) = active_seat @@ -202,7 +203,7 @@ impl Common { { continue; // Focus is valid } else { - slog_scope::debug!("Wrong Window, focus fixup"); + debug!("Wrong Window, focus fixup"); } } KeyboardFocusTarget::LayerSurface(layer) => { @@ -223,7 +224,7 @@ impl Common { } // Focus is valid }; } else { - slog_scope::debug!("Surface dead, focus fixup"); + debug!("Surface dead, focus fixup"); } } else { continue; @@ -262,7 +263,7 @@ impl Common { .map(KeyboardFocusTarget::from) }); if let Some(keyboard) = seat.get_keyboard() { - slog_scope::info!("restoring focus to: {:?}", target.as_ref()); + info!("Restoring focus to {:?}", target.as_ref()); keyboard.set_focus(state, target.clone(), SERIAL_COUNTER.next_serial()); ActiveFocus::set(&seat, target); } diff --git a/src/shell/layout/floating/mod.rs b/src/shell/layout/floating/mod.rs index 976e46cf..4417478a 100644 --- a/src/shell/layout/floating/mod.rs +++ b/src/shell/layout/floating/mod.rs @@ -24,19 +24,11 @@ use crate::{ mod grabs; pub use self::grabs::*; -#[derive(Debug)] +#[derive(Debug, Default)] pub struct FloatingLayout { pub(in crate::shell) space: Space, } -impl Default for FloatingLayout { - fn default() -> Self { - FloatingLayout { - space: Space::new(None), - } - } -} - impl FloatingLayout { pub fn new() -> FloatingLayout { Default::default() diff --git a/src/shell/layout/tiling/mod.rs b/src/shell/layout/tiling/mod.rs index 90521aeb..ceb4f58e 100644 --- a/src/shell/layout/tiling/mod.rs +++ b/src/shell/layout/tiling/mod.rs @@ -31,6 +31,7 @@ use smithay::{ wayland::seat::WaylandFocus, }; use std::{borrow::Borrow, collections::HashMap, hash::Hash, sync::Arc}; +use tracing::debug; mod grabs; pub use self::grabs::*; @@ -420,7 +421,7 @@ impl TilingLayout { }); // remove self - slog_scope::debug!("Remove window {:?}", mapped); + debug!(?mapped, "Remove window."); let _ = tree.remove_node(node_id.clone(), RemoveBehavior::DropChildren); // fixup parent node @@ -433,7 +434,7 @@ impl TilingLayout { if group.len() > 2 { group.remove_window(position); } else { - slog_scope::debug!("Removing Group"); + debug!("Removing Group"); let other_child = tree.children_ids(&id).unwrap().cloned().next().unwrap(); let fork_pos = parent_parent_id.as_ref().and_then(|parent_id| { diff --git a/src/shell/mod.rs b/src/shell/mod.rs index 17fc79ca..aa906326 100644 --- a/src/shell/mod.rs +++ b/src/shell/mod.rs @@ -1,5 +1,6 @@ use serde::{Deserialize, Serialize}; use std::{cell::RefCell, collections::HashMap}; +use tracing::warn; use cosmic_protocols::workspace::v1::server::zcosmic_workspace_handle_v1::State as WState; use smithay::{ @@ -430,8 +431,8 @@ impl WorkspaceMode { impl Shell { pub fn new(config: &Config, dh: &DisplayHandle) -> Self { // TODO: Privileged protocols - let layer_shell_state = WlrLayerShellState::new::(dh, None); - let xdg_shell_state = XdgShellState::new::(dh, None); + let layer_shell_state = WlrLayerShellState::new::(dh); + let xdg_shell_state = XdgShellState::new::(dh); let toplevel_info_state = ToplevelInfoState::new( dh, //|client| client.get_data::().map_or(false, |s| s.privileged), @@ -461,7 +462,7 @@ impl Shell { ); Shell { - popups: PopupManager::new(None), + popups: PopupManager::default(), outputs: Vec::new(), workspaces: mode, tiling_enabled, @@ -1090,7 +1091,7 @@ impl Shell { .find(|xwm| Some(xwm.id()) == surface.xwm_id()) { if let Err(err) = xwm.update_stacking_order_downwards(workspace.mapped()) { - slog_scope::warn!("Failed to update Xwayland stacking order: {}", err); + warn!(?err, "Failed to update Xwayland stacking order."); } } } diff --git a/src/shell/workspace.rs b/src/shell/workspace.rs index 0bd43f36..fa807019 100644 --- a/src/shell/workspace.rs +++ b/src/shell/workspace.rs @@ -32,6 +32,7 @@ use smithay::{ xwayland::X11Surface, }; use std::collections::HashMap; +use tracing::warn; use super::{ element::CosmicMapped, @@ -498,10 +499,10 @@ impl Workspace { if let Err(err) = xwm.update_stacking_order_upwards(render_elements.iter().rev().map(|e| e.id())) { - slog_scope::warn!( - "Failed to update Xwm ({:?}) stacking order: {}", - xwm.id(), - err + warn!( + wm_id = ?xwm.id(), + ?err, + "Failed to update Xwm stacking order.", ); } } @@ -578,10 +579,10 @@ impl Workspace { if let Err(err) = xwm.update_stacking_order_upwards(render_elements.iter().rev().map(|e| e.id())) { - slog_scope::warn!( - "Failed to update Xwm ({:?}) stacking order: {}", - xwm.id(), - err + warn!( + wm_id = ?xwm.id(), + ?err, + "Failed to update Xwm stacking order.", ); } } @@ -711,11 +712,10 @@ where src: Rectangle, dst: Rectangle, damage: &[Rectangle], - log: &slog::Logger, ) -> Result<(), ::Error> { match self { - WorkspaceRenderElement::Wayland(elem) => elem.draw(frame, src, dst, damage, log), - WorkspaceRenderElement::Window(elem) => elem.draw(frame, src, dst, damage, log), + WorkspaceRenderElement::Wayland(elem) => elem.draw(frame, src, dst, damage), + WorkspaceRenderElement::Window(elem) => elem.draw(frame, src, dst, damage), } } diff --git a/src/state.rs b/src/state.rs index 00143eef..f8645453 100644 --- a/src/state.rs +++ b/src/state.rs @@ -53,6 +53,7 @@ use smithay::{ viewporter::ViewporterState, }, }; +use tracing::error; use std::{cell::RefCell, collections::HashMap, ffi::OsString, time::Duration}; use std::{collections::VecDeque, time::Instant}; @@ -206,7 +207,7 @@ impl BackendData { BackendData::X11(ref mut state) => state.schedule_render(output, screencopy), BackendData::Kms(ref mut state) => { if let Err(err) = state.schedule_render(loop_handle, output, None, screencopy) { - slog_scope::crit!("Failed to schedule event, are we shutting down? {:?}", err); + error!(?err, "Failed to schedule event, are we shutting down?"); } } _ => unreachable!("No backend was initialized"), @@ -223,29 +224,26 @@ impl State { ) -> State { let clock = Clock::new().expect("Failed to initialize clock"); let config = Config::load(); - let compositor_state = CompositorState::new::(dh, None); - let data_device_state = DataDeviceState::new::(dh, None); + let compositor_state = CompositorState::new::(dh); + let data_device_state = DataDeviceState::new::(dh); let dmabuf_state = DmabufState::new(); let keyboard_shortcuts_inhibit_state = KeyboardShortcutsInhibitState::new::(dh); let output_state = OutputManagerState::new_with_xdg_output::(dh); let output_configuration_state = OutputConfigurationState::new(dh, |_| true); let presentation_state = PresentationState::new::(dh, clock.id() as u32); - let primary_selection_state = PrimarySelectionState::new::(dh, None); + let primary_selection_state = PrimarySelectionState::new::(dh); let screencopy_state = ScreencopyState::new::( dh, vec![CursorMode::Embedded, CursorMode::Hidden], |_| true, ); // TODO: privileged - let shm_state = ShmState::new::( - dh, - vec![wl_shm::Format::Xbgr8888, wl_shm::Format::Abgr8888], - None, - ); + let shm_state = + ShmState::new::(dh, vec![wl_shm::Format::Xbgr8888, wl_shm::Format::Abgr8888]); let seat_state = SeatState::::new(); - let viewporter_state = ViewporterState::new::(dh, None); + let viewporter_state = ViewporterState::new::(dh); let wl_drm_state = WlDrmState; - let kde_decoration_state = KdeDecorationState::new::(&dh, Mode::Client, None); - let xdg_decoration_state = XdgDecorationState::new::(&dh, None); + let kde_decoration_state = KdeDecorationState::new::(&dh, Mode::Client); + let xdg_decoration_state = XdgDecorationState::new::(&dh); let shell = Shell::new(&config, dh); diff --git a/src/systemd.rs b/src/systemd.rs index 74328630..f7ae5b99 100644 --- a/src/systemd.rs +++ b/src/systemd.rs @@ -3,6 +3,7 @@ use crate::state::State; use libsystemd::daemon::{booted, notify, NotifyState}; use std::process::Command; +use tracing::{error, warn}; pub fn ready(state: &State) { if booted() { @@ -22,18 +23,15 @@ pub fn ready(state: &State) { .status() { Ok(x) if x.success() => {} - Ok(x) => slog_scope::warn!( - "Failed to import WAYLAND_DISPLAY/DISPLAY into systemd (exit code {:?})", - x.code() - ), - Err(err) => slog_scope::error!( - "Failed to run systemctl although booted with systemd: {}", - err + Ok(x) => warn!( + exit_code = ?x.code(), + "Failed to import WAYLAND_DISPLAY/DISPLAY into systemd", ), + Err(err) => error!(?err, "Failed to run systemctl although booted with systemd",), }; if let Err(err) = notify(false, &[NotifyState::Ready]) { - slog_scope::error!("Failed to notify systemd: {}", err); + error!(?err, "Failed to notify systemd"); } } } diff --git a/src/utils/iced.rs b/src/utils/iced.rs index b58e3ea7..4fd73f00 100644 --- a/src/utils/iced.rs +++ b/src/utils/iced.rs @@ -613,7 +613,6 @@ where size.to_f64().to_logical(1.0, Transform::Normal), )), Some(internal_ref.size), - slog_scope::logger(), ) { return vec![C::from(buffer)]; } diff --git a/src/wayland/handlers/compositor.rs b/src/wayland/handlers/compositor.rs index 28670ddf..f5e447fd 100644 --- a/src/wayland/handlers/compositor.rs +++ b/src/wayland/handlers/compositor.rs @@ -128,9 +128,7 @@ impl CompositorHandler for State { CosmicSurface::Wayland(ref wl_window) => { let toplevel = wl_window.toplevel(); if self.toplevel_ensure_initial_configure(&toplevel) - && with_renderer_surface_state(&surface, |state| { - state.wl_buffer().is_some() - }) + && with_renderer_surface_state(&surface, |state| state.buffer().is_some()) { let output = seat.active_output(); Shell::map_window(self, &window, &output); diff --git a/src/wayland/handlers/data_device.rs b/src/wayland/handlers/data_device.rs index d486091b..bab3a71f 100644 --- a/src/wayland/handlers/data_device.rs +++ b/src/wayland/handlers/data_device.rs @@ -13,6 +13,7 @@ use smithay::{ xwayland::xwm::{SelectionType, XwmId}, }; use std::{cell::RefCell, os::unix::io::OwnedFd}; +use tracing::warn; pub struct DnDIcon { surface: RefCell>, @@ -66,10 +67,10 @@ impl DataDeviceHandler for State { Some(metadata.mime_types.clone()), ) }) { - slog_scope::warn!("Failed to set Xwayland clipboard selection: {}", err); + warn!(?err, "Failed to set Xwayland clipboard selection."); } } else if let Err(err) = xwm.new_selection(SelectionType::Clipboard, None) { - slog_scope::warn!("Failed to clear Xwayland clipboard selection: {}", err); + warn!(?err, "Failed to clear Xwayland clipboard selection."); } } } @@ -94,7 +95,7 @@ impl DataDeviceHandler for State { fd, self.common.event_loop_handle.clone(), ) { - slog_scope::warn!("Failed to send clipboard (X11 -> Wayland): {}", err); + warn!(?err, "Failed to send clipboard (X11 -> Wayland)."); } } } diff --git a/src/wayland/handlers/output_configuration.rs b/src/wayland/handlers/output_configuration.rs index 92981de0..73b407db 100644 --- a/src/wayland/handlers/output_configuration.rs +++ b/src/wayland/handlers/output_configuration.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only use smithay::output::Output; +use tracing::{error, warn}; use crate::{ config::OutputConfig, @@ -89,10 +90,10 @@ impl State { seats.iter().cloned(), &self.common.event_loop_handle, ) { - slog_scope::warn!( - "Failed to apply config to {}: {}. Resetting", + warn!( + ?err, + "Failed to apply config to {}. Resetting", output.name(), - err ); for (output, backup) in backups { { @@ -111,11 +112,7 @@ impl State { seats.iter().cloned(), &self.common.event_loop_handle, ) { - slog_scope::error!( - "Failed to reset output config for {}: {}", - output.name(), - err - ); + error!(?err, "Failed to reset output config for {}.", output.name(),); } } } diff --git a/src/wayland/handlers/primary_selection.rs b/src/wayland/handlers/primary_selection.rs index e79c087d..bfa485cc 100644 --- a/src/wayland/handlers/primary_selection.rs +++ b/src/wayland/handlers/primary_selection.rs @@ -5,6 +5,7 @@ use smithay::{ delegate_primary_selection, wayland::primary_selection::{PrimarySelectionHandler, PrimarySelectionState, with_source_metadata}, xwayland::xwm::{XwmId, SelectionType}, reexports::wayland_protocols::wp::primary_selection::zv1::server::zwp_primary_selection_source_v1::ZwpPrimarySelectionSourceV1, }; +use tracing::warn; use std::os::unix::io::OwnedFd; @@ -22,10 +23,10 @@ impl PrimarySelectionHandler for State { if let Ok(Err(err)) = with_source_metadata(source, |metadata| { xwm.new_selection(SelectionType::Primary, Some(metadata.mime_types.clone())) }) { - slog_scope::warn!("Failed to set Xwayland primary selection: {}", err); + warn!(?err, "Failed to set Xwayland primary selection"); } } else if let Err(err) = xwm.new_selection(SelectionType::Primary, None) { - slog_scope::warn!("Failed to clear Xwayland primary selection: {}", err); + warn!(?err, "Failed to clear Xwayland primary selection"); } } } @@ -50,7 +51,7 @@ impl PrimarySelectionHandler for State { fd, self.common.event_loop_handle.clone(), ) { - slog_scope::warn!("Failed to send primary selection (X11 -> Wayland): {}", err); + warn!(?err, "Failed to send primary selection (X11 -> Wayland)."); } } } diff --git a/src/wayland/handlers/screencopy.rs b/src/wayland/handlers/screencopy.rs index be06b8db..af3ad175 100644 --- a/src/wayland/handlers/screencopy.rs +++ b/src/wayland/handlers/screencopy.rs @@ -39,6 +39,7 @@ use smithay::{ }, xwayland::XWaylandClientData, }; +use tracing::warn; use crate::{ backend::render::{ @@ -250,7 +251,7 @@ impl ScreencopyHandler for State { let buffer_size = match buffer_dimensions(¶ms.buffer) { Some(size) => size.to_logical(1, Transform::Normal), None => { - slog_scope::warn!("Error during screencopy session: Buffer has no size"); + warn!("Error during screencopy session: Buffer has no size"); session.failed(FailureReason::InvalidBuffer); return; } @@ -260,7 +261,7 @@ impl ScreencopyHandler for State { let mode = match output.current_mode() { Some(mode) => mode, None => { - slog_scope::warn!("Error during screencopy session: Output has no mode"); + warn!("Error during screencopy session: Output has no mode"); session.failed(FailureReason::InvalidOutput); return; } @@ -268,7 +269,7 @@ impl ScreencopyHandler for State { .size; if buffer_size.to_physical(1) != mode { - slog_scope::warn!("Error during screencopy session: Buffer size doesn't match"); + warn!("Error during screencopy session: Buffer size doesn't match"); session.failed(FailureReason::InvalidSize); return; } @@ -276,7 +277,7 @@ impl ScreencopyHandler for State { SessionType::Window(window) => { let geometry = window.geometry(); if buffer_size != geometry.size { - slog_scope::warn!("Error during screencopy session: Buffer size doesn't match"); + warn!("Error during screencopy session: Buffer size doesn't match"); session.failed(FailureReason::InvalidSize); return; } @@ -288,7 +289,7 @@ impl ScreencopyHandler for State { buffer_type(¶ms.buffer), Some(BufferType::Shm) | Some(BufferType::Dma) ) { - slog_scope::warn!("Error during screencopy session: Buffer is neither shm or dma"); + warn!("Error during screencopy session: Buffer is neither shm or dma"); session.failed(FailureReason::InvalidBuffer); return; } @@ -299,7 +300,7 @@ impl ScreencopyHandler for State { }) .unwrap() { - slog_scope::warn!("Error during screencopy session: Invalid shm buffer format"); + warn!("Error during screencopy session: Invalid shm buffer format"); session.failed(FailureReason::InvalidBuffer); return; } @@ -368,8 +369,8 @@ impl ScreencopyHandler for State { buffer.release(); } Ok(true) => {} // success - Err((reason, error)) => { - slog_scope::warn!("Error during screencopy session: {}", error); + Err((reason, err)) => { + warn!(?err, "Error during screencopy session"); session.failed(reason); } } @@ -955,7 +956,7 @@ pub fn render_window_to_buffer( .map_err(DamageTrackedRendererError::Rendering)?; } - dtr.render_output(renderer, age, &elements, CLEAR_COLOR, None) + dtr.render_output(renderer, age, &elements, CLEAR_COLOR) } let node = node_from_params(¶ms, &mut state.backend, None); @@ -1134,7 +1135,7 @@ impl State { Ok(false) => data.state.common.still_pending(session, params), Ok(true) => {} // success Err((reason, err)) => { - slog_scope::warn!("Screencopy session failed: {}", err); + warn!(?err, "Screencopy session failed"); session.failed(reason); } } @@ -1263,7 +1264,7 @@ pub fn schedule_offscreen_workspace_session( } Ok(true) => {} Err((reason, err)) => { - slog_scope::warn!("Screencopy session failed: {}", err); + warn!(?err, "Screencopy session failed."); session.failed(reason); } } diff --git a/src/wayland/handlers/xdg_shell/mod.rs b/src/wayland/handlers/xdg_shell/mod.rs index e09f567b..60b9db5c 100644 --- a/src/wayland/handlers/xdg_shell/mod.rs +++ b/src/wayland/handlers/xdg_shell/mod.rs @@ -22,6 +22,7 @@ use smithay::{ }, }; use std::cell::Cell; +use tracing::warn; use super::screencopy::PendingScreencopyBuffers; @@ -125,9 +126,9 @@ impl XdgShellHandler for State { self.common.shell.unconstrain_popup(&surface, &positioner); surface.send_repositioned(token); if let Err(err) = surface.send_configure() { - slog_scope::warn!( - "Client bug: Unable to re-configure repositioned popup: {}", - err + warn!( + ?err, + "Client bug: Unable to re-configure repositioned popup.", ); } } diff --git a/src/wayland/handlers/xdg_shell/popup.rs b/src/wayland/handlers/xdg_shell/popup.rs index 9776953d..2d50b5d3 100644 --- a/src/wayland/handlers/xdg_shell/popup.rs +++ b/src/wayland/handlers/xdg_shell/popup.rs @@ -24,6 +24,7 @@ use smithay::{ }, }; use std::sync::Mutex; +use tracing::{debug, warn}; impl Shell { pub fn unconstrain_popup(&self, surface: &PopupSurface, positioner: &PositionerState) { @@ -86,9 +87,9 @@ pub fn update_reactive_popups<'a>( { unconstrain_xdg_popup(&surface, loc, rect); if let Err(err) = surface.send_configure() { - slog_scope::warn!( - "Compositor bug: Unable to re-configure reactive popup: {}", - err + warn!( + ?err, + "Compositor bug: Unable to re-configure reactive popup", ); } } @@ -103,7 +104,7 @@ fn unconstrain_xdg_popup_tile(surface: &PopupSurface, rect: Rectangle Fn(&'a Client) -> bool + Send + Sync>, formats: Arc>, device_path: PathBuf, - _logger: slog::Logger, dmabuf_global: DmabufGlobal, } @@ -165,9 +165,7 @@ where Ok(_) => { // import was successful data_init.init(id, dmabuf); - slog_scope::trace!( - "Created a new validated dma wl_buffer via wl_drm." - ); + trace!("Created a new validated dma wl_buffer via wl_drm."); } Err(ImportError::InvalidFormat) => { @@ -246,7 +244,6 @@ impl WlDrmState { formats, device_path, dmabuf_global: dmabuf_global.clone(), - _logger: slog_scope::logger().new(slog::o!("cosmic_module" => "wayland_drm")), }; display.create_global::(2, data) diff --git a/src/wayland/protocols/screencopy.rs b/src/wayland/protocols/screencopy.rs index b560e8d6..d8fefa3d 100644 --- a/src/wayland/protocols/screencopy.rs +++ b/src/wayland/protocols/screencopy.rs @@ -24,6 +24,7 @@ use smithay::{ }, utils::{user_data::UserDataMap, Buffer, IsAlive, Physical, Point, Rectangle, Size, Transform}, }; +use tracing::warn; use wayland_backend::{ protocol::WEnum, server::{GlobalId, ObjectId}, @@ -540,7 +541,7 @@ fn check_cursor( match cursor.into_result() { Ok(mode) => { if !supported.contains(&mode) { - slog_scope::warn!("Client did send unsupported cursor mode: {:?}", mode); + warn!(?mode, "Client did send unsupported cursor mode"); resource.post_error( zcosmic_screencopy_manager_v1::Error::InvalidCursorMode, "Unsupported cursor mode", @@ -550,7 +551,7 @@ fn check_cursor( Some(mode) } Err(err) => { - slog_scope::warn!("Client did send unknown cursor mode: {}", err); + warn!(?err, "Client did send unknown cursor mode"); resource.post_error( zcosmic_screencopy_manager_v1::Error::InvalidCursorMode, "Unknown cursor mode, wrong protocol version?", diff --git a/src/xwayland.rs b/src/xwayland.rs index 35f097af..271cce3d 100644 --- a/src/xwayland.rs +++ b/src/xwayland.rs @@ -27,6 +27,7 @@ use smithay::{ X11Surface, X11Wm, XWayland, XWaylandEvent, XwmHandler, }, }; +use tracing::{error, info, warn}; pub struct XWaylandState { pub xwm: Option, @@ -41,7 +42,7 @@ impl State { return; } - let (xwayland, source) = XWayland::new(None, &self.common.display_handle); + let (xwayland, source) = XWayland::new(&self.common.display_handle); let token = match self .common @@ -58,11 +59,10 @@ impl State { data.state.common.display_handle.clone(), connection, client, - None, ) { Ok(wm) => wm, Err(err) => { - slog_scope::error!("Failed to start Xwayland WM: {}", err); + error!(?err, "Failed to start Xwayland WM"); return; } }; @@ -74,10 +74,10 @@ impl State { Size::from((image.width as u16, image.height as u16)), Point::from((image.xhot as u16, image.yhot as u16)), ) { - slog_scope::warn!( - "Failed to set default cursor for Xwayland WM ({:?}): {}", - wm.id(), - err + warn!( + id = ?wm.id(), + ?err, + "Failed to set default cursor for Xwayland WM", ); } @@ -95,7 +95,7 @@ impl State { }) { Ok(token) => token, Err(err) => { - slog_scope::error!("Failed to listen for Xwayland: {}", err); + error!(?err, "Failed to listen for Xwayland"); return; } }; @@ -122,7 +122,7 @@ impl State { ); } Err(err) => { - slog_scope::error!("Failed to start Xwayland: {}", err); + error!(?err, "Failed to start Xwayland."); self.common.event_loop_handle.remove(token); } } @@ -146,11 +146,7 @@ impl XwmHandler for Data { fn map_window_request(&mut self, _xwm: XwmId, window: X11Surface) { if let Err(err) = window.set_mapped(true) { - slog_scope::warn!( - "Failed to send Xwayland Mapped-Event (for window {:?}): {}", - window, - err - ); + warn!(?window, ?err, "Failed to send Xwayland Mapped-Event",); } let surface = CosmicSurface::X11(window.clone()); @@ -471,17 +467,17 @@ impl XwmHandler for Data { match selection { SelectionType::Clipboard => { if let Err(err) = request_data_device_client_selection(seat, mime_type, fd) { - slog_scope::error!( - "Failed to request current wayland clipboard for Xwayland: {}", - err + error!( + ?err, + "Failed to request current wayland clipboard for Xwayland.", ); } } SelectionType::Primary => { if let Err(err) = request_primary_client_selection(seat, mime_type, fd) { - slog_scope::error!( - "Failed to request current wayland primary selection for Xwayland: {}", - err + error!( + ?err, + "Failed to request current wayland primary selection for Xwayland.", ); } } @@ -493,7 +489,7 @@ impl XwmHandler for Data { } fn new_selection(&mut self, xwm: XwmId, selection: SelectionType, mime_types: Vec) { - slog_scope::info!("Got Selection {:?} from X11: {:?}", selection, mime_types); + info!(?selection, ?mime_types, "Got Selection from Xwayland",); if self.state.common.is_x_focused(xwm) { let seat = self.state.common.last_active_seat();