egui: add integration
This commit is contained in:
parent
85b9b7222d
commit
008e8a671a
49 changed files with 4110 additions and 149 deletions
304
Cargo.lock
generated
304
Cargo.lock
generated
|
|
@ -2,6 +2,22 @@
|
|||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "ab_glyph"
|
||||
version = "0.2.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2"
|
||||
dependencies = [
|
||||
"ab_glyph_rasterizer",
|
||||
"owned_ttf_parser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ab_glyph_rasterizer"
|
||||
version = "0.1.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618"
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
version = "0.25.1"
|
||||
|
|
@ -100,9 +116,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.101"
|
||||
version = "1.0.102"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea"
|
||||
checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
|
||||
|
||||
[[package]]
|
||||
name = "arrayref"
|
||||
|
|
@ -148,9 +164,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
version = "2.10.0"
|
||||
version = "2.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
|
||||
checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
|
||||
|
||||
[[package]]
|
||||
name = "blake3"
|
||||
|
|
@ -178,9 +194,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.19.1"
|
||||
version = "3.20.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
|
||||
checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
|
||||
|
||||
[[package]]
|
||||
name = "bytemuck"
|
||||
|
|
@ -196,9 +212,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
|
|||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.2.55"
|
||||
version = "1.2.56"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29"
|
||||
checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
|
||||
dependencies = [
|
||||
"find-msvc-tools",
|
||||
"shlex",
|
||||
|
|
@ -223,9 +239,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "chrono"
|
||||
version = "0.4.43"
|
||||
version = "0.4.44"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fac4744fb15ae8337dc853fee7fb3f4e48c0fbaa23d0afe49c447b4fab126118"
|
||||
checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0"
|
||||
dependencies = [
|
||||
"iana-time-zone",
|
||||
"js-sys",
|
||||
|
|
@ -236,9 +252,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap"
|
||||
version = "4.5.57"
|
||||
version = "4.5.60"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6899ea499e3fb9305a65d5ebf6e3d2248c5fab291f300ad0a704fbe142eae31a"
|
||||
checksum = "2797f34da339ce31042b27d23607e051786132987f595b02ba4f6a6dffb7030a"
|
||||
dependencies = [
|
||||
"clap_builder",
|
||||
"clap_derive",
|
||||
|
|
@ -246,9 +262,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap_builder"
|
||||
version = "4.5.57"
|
||||
version = "4.5.60"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b12c8b680195a62a8364d16b8447b01b6c2c8f9aaf68bee653be34d4245e238"
|
||||
checksum = "24a241312cea5059b13574bb9b3861cabf758b879c15190b37b6d6fd63ab6876"
|
||||
dependencies = [
|
||||
"anstream",
|
||||
"anstyle",
|
||||
|
|
@ -259,9 +275,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "clap_complete"
|
||||
version = "4.5.65"
|
||||
version = "4.5.66"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "430b4dc2b5e3861848de79627b2bedc9f3342c7da5173a14eaa5d0f8dc18ae5d"
|
||||
checksum = "c757a3b7e39161a4e56f9365141ada2a6c915a8622c408ab6bb4b5d047371031"
|
||||
dependencies = [
|
||||
"clap",
|
||||
]
|
||||
|
|
@ -275,14 +291,14 @@ dependencies = [
|
|||
"heck",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "clap_lex"
|
||||
version = "0.7.7"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c3e64b0cc0439b12df2fa678eae89a1c56a529fd067a9115f7827f1fffd22b32"
|
||||
checksum = "3a822ea5bc7590f9d40f1ba12c0dc3c2760f3482c6984db1573ad11031420831"
|
||||
|
||||
[[package]]
|
||||
name = "colorchoice"
|
||||
|
|
@ -337,9 +353,9 @@ checksum = "24efe21bd9a78102d1225f10f0a41d9d5b43f4df7ae8235f39a9c79e4d476c1e"
|
|||
|
||||
[[package]]
|
||||
name = "deranged"
|
||||
version = "0.5.5"
|
||||
version = "0.5.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
|
||||
checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c"
|
||||
dependencies = [
|
||||
"powerfmt",
|
||||
]
|
||||
|
|
@ -365,6 +381,54 @@ dependencies = [
|
|||
"windows-sys 0.61.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ecolor"
|
||||
version = "0.33.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "71ddb8ac7643d1dba1bb02110e804406dd459a838efcb14011ced10556711a8e"
|
||||
dependencies = [
|
||||
"emath",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "egui"
|
||||
version = "0.33.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6a9b567d356674e9a5121ed3fedfb0a7c31e059fe71f6972b691bcd0bfc284e3"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"bitflags",
|
||||
"emath",
|
||||
"epaint",
|
||||
"log",
|
||||
"nohash-hasher",
|
||||
"profiling",
|
||||
"smallvec",
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "emath"
|
||||
version = "0.33.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "491bdf728bf25ddd9ad60d4cf1c48588fa82c013a2440b91aa7fc43e34a07c32"
|
||||
|
||||
[[package]]
|
||||
name = "epaint"
|
||||
version = "0.33.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "009d0dd3c2163823a0abdb899451ecbc78798dec545ee91b43aff1fa790bab62"
|
||||
dependencies = [
|
||||
"ab_glyph",
|
||||
"ahash",
|
||||
"ecolor",
|
||||
"emath",
|
||||
"log",
|
||||
"nohash-hasher",
|
||||
"parking_lot",
|
||||
"profiling",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "equivalent"
|
||||
version = "1.0.2"
|
||||
|
|
@ -426,38 +490,38 @@ checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
|
|||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.31"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
|
||||
checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
|
||||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.31"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
|
||||
checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
|
||||
|
||||
[[package]]
|
||||
name = "futures-macro"
|
||||
version = "0.3.31"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
|
||||
checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.31"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
|
||||
checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.31"
|
||||
version = "0.3.32"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
|
||||
checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
|
|
@ -465,7 +529,6 @@ dependencies = [
|
|||
"futures-task",
|
||||
"memchr",
|
||||
"pin-project-lite",
|
||||
"pin-utils",
|
||||
"slab",
|
||||
]
|
||||
|
||||
|
|
@ -488,19 +551,19 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
|
|||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"r-efi",
|
||||
"r-efi 5.3.0",
|
||||
"wasip2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "getrandom"
|
||||
version = "0.4.1"
|
||||
version = "0.4.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
|
||||
checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"r-efi",
|
||||
"r-efi 6.0.0",
|
||||
"rand_core 0.10.0",
|
||||
"wasip2",
|
||||
"wasip3",
|
||||
|
|
@ -658,6 +721,7 @@ dependencies = [
|
|||
"clap",
|
||||
"clap_complete",
|
||||
"dirs",
|
||||
"egui",
|
||||
"futures-util",
|
||||
"gpu-alloc",
|
||||
"gpu-alloc-types",
|
||||
|
|
@ -734,9 +798,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.85"
|
||||
version = "0.3.91"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
|
||||
checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"wasm-bindgen",
|
||||
|
|
@ -773,7 +837,7 @@ checksum = "28067e7361c0069c3753795d131653f9ea5333aeb35a3855fb2de66447c48ac8"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -790,9 +854,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.181"
|
||||
version = "0.2.183"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "459427e2af2b9c839b132acb702a1c654d95e10f8c326bfc2ad11310e458b1c5"
|
||||
checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
|
||||
|
||||
[[package]]
|
||||
name = "libloading"
|
||||
|
|
@ -806,19 +870,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "libredox"
|
||||
version = "0.1.12"
|
||||
version = "0.1.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616"
|
||||
checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linearize"
|
||||
version = "0.1.5"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "53d5b35550da9461fb8d3acf71c9925afae570bfc45a11857b55138d25c8604d"
|
||||
checksum = "f6e1430c89633736996fd763822abd252e395dbccaaee33be601b4d59678a93e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"linearize-derive",
|
||||
|
|
@ -835,14 +898,14 @@ checksum = "f657db73fbcad5341c5991ddee6c464d4bfd521575c0dc1a47913e0f434defeb"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.11.0"
|
||||
version = "0.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
|
||||
checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
|
||||
|
||||
[[package]]
|
||||
name = "lock_api"
|
||||
|
|
@ -875,6 +938,12 @@ dependencies = [
|
|||
"simd-adler32",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nohash-hasher"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451"
|
||||
|
||||
[[package]]
|
||||
name = "num-conv"
|
||||
version = "0.2.0"
|
||||
|
|
@ -889,7 +958,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -943,6 +1012,15 @@ version = "0.2.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
|
||||
|
||||
[[package]]
|
||||
name = "owned_ttf_parser"
|
||||
version = "0.25.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b"
|
||||
dependencies = [
|
||||
"ttf-parser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.12.5"
|
||||
|
|
@ -997,7 +1075,7 @@ dependencies = [
|
|||
"phf_shared",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1011,35 +1089,29 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pin-project"
|
||||
version = "1.1.10"
|
||||
version = "1.1.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a"
|
||||
checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517"
|
||||
dependencies = [
|
||||
"pin-project-internal",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-internal"
|
||||
version = "1.1.10"
|
||||
version = "1.1.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861"
|
||||
checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.16"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
|
||||
|
||||
[[package]]
|
||||
name = "pin-utils"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||
checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
|
|
@ -1049,9 +1121,9 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
|
|||
|
||||
[[package]]
|
||||
name = "png"
|
||||
version = "0.18.0"
|
||||
version = "0.18.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "97baced388464909d42d89643fe4361939af9b7ce7a31ee32a168f832a70f2a0"
|
||||
checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"crc32fast",
|
||||
|
|
@ -1073,7 +1145,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1086,19 +1158,25 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "quick-xml"
|
||||
version = "0.39.0"
|
||||
name = "profiling"
|
||||
version = "1.0.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f2e3bf4aa9d243beeb01a7b3bc30b77cfe2c44e24ec02d751a7104a53c2c49a1"
|
||||
checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773"
|
||||
|
||||
[[package]]
|
||||
name = "quick-xml"
|
||||
version = "0.39.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "958f21e8e7ceb5a1aa7fa87fab28e7c75976e0bfe7e23ff069e0a260f894067d"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.44"
|
||||
version = "1.0.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
|
||||
checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
|
@ -1109,6 +1187,12 @@ version = "5.3.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
||||
|
||||
[[package]]
|
||||
name = "r-efi"
|
||||
version = "6.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
|
||||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.8.5"
|
||||
|
|
@ -1134,7 +1218,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8"
|
||||
dependencies = [
|
||||
"chacha20",
|
||||
"getrandom 0.4.1",
|
||||
"getrandom 0.4.2",
|
||||
"rand_core 0.10.0",
|
||||
]
|
||||
|
||||
|
|
@ -1201,9 +1285,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.8.9"
|
||||
version = "0.8.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c"
|
||||
checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
|
||||
|
||||
[[package]]
|
||||
name = "repc"
|
||||
|
|
@ -1234,9 +1318,9 @@ checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d"
|
|||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "1.1.3"
|
||||
version = "1.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34"
|
||||
checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"errno",
|
||||
|
|
@ -1314,7 +1398,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1410,9 +1494,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.114"
|
||||
version = "2.0.117"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
|
||||
checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -1455,7 +1539,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1538,6 +1622,12 @@ dependencies = [
|
|||
"windows-targets 0.52.6",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ttf-parser"
|
||||
version = "0.25.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"
|
||||
|
||||
[[package]]
|
||||
name = "uapi"
|
||||
version = "0.2.13"
|
||||
|
|
@ -1566,9 +1656,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.23"
|
||||
version = "1.0.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e"
|
||||
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-segmentation"
|
||||
version = "1.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-width"
|
||||
|
|
@ -1636,9 +1732,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.108"
|
||||
version = "0.2.114"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
|
||||
checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
|
|
@ -1649,9 +1745,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.108"
|
||||
version = "0.2.114"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
|
||||
checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
|
|
@ -1659,22 +1755,22 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.108"
|
||||
version = "0.2.114"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
|
||||
checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
"wasm-bindgen-shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.108"
|
||||
version = "0.2.114"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
|
||||
checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
|
@ -1743,7 +1839,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1754,7 +1850,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
|
|||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -1967,7 +2063,7 @@ dependencies = [
|
|||
"heck",
|
||||
"indexmap",
|
||||
"prettyplease",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
"wasm-metadata",
|
||||
"wit-bindgen-core",
|
||||
"wit-component",
|
||||
|
|
@ -1983,7 +2079,7 @@ dependencies = [
|
|||
"prettyplease",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
"wit-bindgen-core",
|
||||
"wit-bindgen-rust",
|
||||
]
|
||||
|
|
@ -2055,26 +2151,26 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.8.39"
|
||||
version = "0.8.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "db6d35d663eadb6c932438e763b262fe1a70987f9ae936e60158176d710cae4a"
|
||||
checksum = "f2578b716f8a7a858b7f02d5bd870c14bf4ddbbcf3a4c05414ba6503640505e3"
|
||||
dependencies = [
|
||||
"zerocopy-derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.8.39"
|
||||
version = "0.8.42"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4122cd3169e94605190e77839c9a40d40ed048d305bfdc146e7df40ab0f3e517"
|
||||
checksum = "7e6cc098ea4d3bd6246687de65af3f920c430e236bee1e3bf2e441463f08a02f"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"syn 2.0.117",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zmij"
|
||||
version = "1.0.20"
|
||||
version = "1.0.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4de98dfa5d5b7fef4ee834d0073d560c9ca7b6c46a71d058c48db7960f8cfaf7"
|
||||
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
|
||||
|
|
|
|||
33
Cargo.toml
33
Cargo.toml
|
|
@ -69,6 +69,7 @@ opera = "1.0.1"
|
|||
with_builtin_macros = "0.1.0"
|
||||
blake3 = "1.8.2"
|
||||
run-on-drop = "1.0.0"
|
||||
egui = { version = "0.33.3", default-features = false }
|
||||
|
||||
[build-dependencies]
|
||||
repc = "0.1.1"
|
||||
|
|
@ -87,6 +88,38 @@ opt-level = 3
|
|||
[profile.dev.package."smallvec"]
|
||||
opt-level = 3
|
||||
|
||||
[profile.dev.package."egui"]
|
||||
opt-level = 3
|
||||
debug = "line-tables-only"
|
||||
|
||||
[profile.dev.package."emath"]
|
||||
opt-level = 3
|
||||
debug = "line-tables-only"
|
||||
|
||||
[profile.dev.package."epaint"]
|
||||
opt-level = 3
|
||||
debug = "line-tables-only"
|
||||
|
||||
[profile.dev.package."ab_glyph"]
|
||||
opt-level = 3
|
||||
debug = "line-tables-only"
|
||||
|
||||
[profile.dev.package."ab_glyph_rasterizer"]
|
||||
opt-level = 3
|
||||
debug = "line-tables-only"
|
||||
|
||||
[profile.dev.package."owned_ttf_parser"]
|
||||
opt-level = 3
|
||||
debug = "line-tables-only"
|
||||
|
||||
[profile.dev.package."ttf-parser"]
|
||||
opt-level = 3
|
||||
debug = "line-tables-only"
|
||||
|
||||
[profile.dev.package."ecolor"]
|
||||
opt-level = 3
|
||||
debug = "line-tables-only"
|
||||
|
||||
[features]
|
||||
rc_tracking = []
|
||||
it = []
|
||||
|
|
|
|||
|
|
@ -8,23 +8,31 @@ pub struct Tree {
|
|||
pub shaders: &'static [&'static str],
|
||||
}
|
||||
|
||||
pub const TREES: &[Tree] = &[Tree {
|
||||
root: "src/gfx_apis/vulkan/shaders",
|
||||
hash: "src/gfx_apis/vulkan/shaders_hash.txt",
|
||||
bin: "src/gfx_apis/vulkan/shaders_bin",
|
||||
shaders: &[
|
||||
"fill.frag",
|
||||
"fill.vert",
|
||||
"tex.vert",
|
||||
"tex.frag",
|
||||
"out.vert",
|
||||
"out.frag",
|
||||
"legacy/fill.frag",
|
||||
"legacy/fill.vert",
|
||||
"legacy/tex.vert",
|
||||
"legacy/tex.frag",
|
||||
],
|
||||
}];
|
||||
pub const TREES: &[Tree] = &[
|
||||
Tree {
|
||||
root: "src/gfx_apis/vulkan/shaders",
|
||||
hash: "src/gfx_apis/vulkan/shaders_hash.txt",
|
||||
bin: "src/gfx_apis/vulkan/shaders_bin",
|
||||
shaders: &[
|
||||
"fill.frag",
|
||||
"fill.vert",
|
||||
"tex.vert",
|
||||
"tex.frag",
|
||||
"out.vert",
|
||||
"out.frag",
|
||||
"legacy/fill.frag",
|
||||
"legacy/fill.vert",
|
||||
"legacy/tex.vert",
|
||||
"legacy/tex.frag",
|
||||
],
|
||||
},
|
||||
Tree {
|
||||
root: "src/egui_adapter/shaders",
|
||||
hash: "src/egui_adapter/shaders_hash.txt",
|
||||
bin: "src/egui_adapter/shaders_bin",
|
||||
shaders: &["shader.vert", "shader.frag"],
|
||||
},
|
||||
];
|
||||
|
||||
fn calculate_hash(tree: &Tree) -> anyhow::Result<String> {
|
||||
let dir = WalkDir::new(tree.root);
|
||||
|
|
|
|||
|
|
@ -1035,6 +1035,13 @@ impl ConfigClient {
|
|||
position
|
||||
}
|
||||
|
||||
pub fn set_egui_fonts(&self, proportional: Option<Vec<&str>>, monospace: Option<Vec<&str>>) {
|
||||
self.send(&ClientMessage::SetEguiFonts {
|
||||
proportional,
|
||||
monospace,
|
||||
});
|
||||
}
|
||||
|
||||
pub fn set_middle_click_paste_enabled(&self, enabled: bool) {
|
||||
self.send(&ClientMessage::SetMiddleClickPasteEnabled { enabled });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -841,6 +841,10 @@ pub enum ClientMessage<'a> {
|
|||
fds: Vec<(i32, i32)>,
|
||||
tag: Option<&'a str>,
|
||||
},
|
||||
SetEguiFonts {
|
||||
proportional: Option<Vec<&'a str>>,
|
||||
monospace: Option<Vec<&'a str>>,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
|
|
|
|||
|
|
@ -197,6 +197,20 @@ pub fn get_bar_position() -> BarPosition {
|
|||
get!(BarPosition::Top).get_bar_position()
|
||||
}
|
||||
|
||||
/// Sets the proportional fonts used by egui windows.
|
||||
///
|
||||
/// The default is `["sans-serif", "Noto Sans", "Noto Color Emoji"]`.
|
||||
pub fn set_egui_proportional_fonts<'a>(fonts: impl IntoIterator<Item = &'a str>) {
|
||||
get!().set_egui_fonts(Some(fonts.into_iter().collect()), None);
|
||||
}
|
||||
|
||||
/// Sets the monospace fonts used by egui windows.
|
||||
///
|
||||
/// The default is `["monospace", "Noto Sans Mono", "Noto Color Emoji"]`.
|
||||
pub fn set_egui_monospace_fonts<'a>(fonts: impl IntoIterator<Item = &'a str>) {
|
||||
get!().set_egui_fonts(None, Some(fonts.into_iter().collect()));
|
||||
}
|
||||
|
||||
/// Elements of the compositor whose color can be changed.
|
||||
pub mod colors {
|
||||
use {
|
||||
|
|
|
|||
|
|
@ -392,6 +392,7 @@ fn start_compositor2(
|
|||
eventfd_cache,
|
||||
lazy_event_sources: Default::default(),
|
||||
bo_drop_queue: Rc::new(ObjectDropQueue::new(&ring)),
|
||||
egg_state: Default::default(),
|
||||
});
|
||||
state.tracker.register(ClientId::from_raw(0));
|
||||
create_dummy_output(&state);
|
||||
|
|
|
|||
|
|
@ -1807,6 +1807,10 @@ impl ConfigProxyHandler {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn handle_set_egui_fonts(&self, proportional: Option<Vec<&str>>, monospace: Option<Vec<&str>>) {
|
||||
self.state.set_egui_fonts(proportional, monospace);
|
||||
}
|
||||
|
||||
fn handle_set_log_level(&self, level: ConfigLogLevel) {
|
||||
self.state.set_log_level(level.into());
|
||||
}
|
||||
|
|
@ -3311,6 +3315,10 @@ impl ConfigProxyHandler {
|
|||
fds,
|
||||
tag,
|
||||
} => self.handle_run(prog, args, env, fds, tag).wrn("run")?,
|
||||
ClientMessage::SetEguiFonts {
|
||||
proportional,
|
||||
monospace,
|
||||
} => self.handle_set_egui_fonts(proportional, monospace),
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
3
src/egui_adapter.rs
Normal file
3
src/egui_adapter.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
pub mod egui_oklch;
|
||||
pub mod egui_platform;
|
||||
mod egui_vulkan;
|
||||
37
src/egui_adapter/egui_oklch.rs
Normal file
37
src/egui_adapter/egui_oklch.rs
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
use {
|
||||
crate::{
|
||||
cmm::cmm_eotf::Eotf,
|
||||
theme::{Color, Oklab, Oklch},
|
||||
},
|
||||
egui::{Color32, Rgba},
|
||||
};
|
||||
|
||||
#[expect(dead_code)]
|
||||
pub trait Color32Ext {
|
||||
fn to_oklab(self) -> Oklab;
|
||||
fn to_oklch(self) -> Oklch;
|
||||
}
|
||||
|
||||
impl Color32Ext for Color32 {
|
||||
fn to_oklab(self) -> Oklab {
|
||||
let [r, g, b, a] = self.to_array();
|
||||
Color::from_srgba_premultiplied(r, g, b, a).srgb_to_oklab()
|
||||
}
|
||||
|
||||
fn to_oklch(self) -> Oklch {
|
||||
self.to_oklab().to_oklch()
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<Color32> for Oklch {
|
||||
fn into(self) -> Color32 {
|
||||
self.to_oklab().into()
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<Color32> for Oklab {
|
||||
fn into(self) -> Color32 {
|
||||
let [r, g, b, a] = self.to_srgb().to_array(Eotf::Linear);
|
||||
Rgba::from_rgba_premultiplied(r, g, b, a).into()
|
||||
}
|
||||
}
|
||||
1456
src/egui_adapter/egui_platform.rs
Normal file
1456
src/egui_adapter/egui_platform.rs
Normal file
File diff suppressed because it is too large
Load diff
2055
src/egui_adapter/egui_vulkan.rs
Normal file
2055
src/egui_adapter/egui_vulkan.rs
Normal file
File diff suppressed because it is too large
Load diff
BIN
src/egui_adapter/icons.ttf
Normal file
BIN
src/egui_adapter/icons.ttf
Normal file
Binary file not shown.
13
src/egui_adapter/shaders/shader.frag
Normal file
13
src/egui_adapter/shaders/shader.frag
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#version 450
|
||||
|
||||
layout(location = 0) in vec4 color;
|
||||
layout(location = 1) in vec2 pos;
|
||||
|
||||
layout(binding = 0, set = 0) uniform sampler2D tex;
|
||||
|
||||
layout(location = 0) out vec4 res;
|
||||
|
||||
void main() {
|
||||
vec4 src = texture(tex, pos);
|
||||
res = color * src;
|
||||
}
|
||||
19
src/egui_adapter/shaders/shader.vert
Normal file
19
src/egui_adapter/shaders/shader.vert
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#version 450
|
||||
|
||||
layout(location = 0) in vec2 if_pos;
|
||||
layout(location = 1) in vec2 it_pos;
|
||||
layout(location = 2) in vec4 i_color;
|
||||
|
||||
layout(location = 0) out vec4 o_color;
|
||||
layout(location = 1) out vec2 ot_pos;
|
||||
|
||||
void main() {
|
||||
o_color = i_color;
|
||||
o_color.rgb = mix(
|
||||
o_color.rgb / vec3(12.92),
|
||||
pow((o_color.rgb + vec3(0.055)) / vec3(1.055), vec3(2.4)),
|
||||
greaterThan(o_color.rgb, vec3(0.04045))
|
||||
);
|
||||
ot_pos = it_pos;
|
||||
gl_Position = vec4(if_pos.x, if_pos.y, 0.0, 1.0);
|
||||
}
|
||||
BIN
src/egui_adapter/shaders_bin/shader.frag.spv
Normal file
BIN
src/egui_adapter/shaders_bin/shader.frag.spv
Normal file
Binary file not shown.
BIN
src/egui_adapter/shaders_bin/shader.vert.spv
Normal file
BIN
src/egui_adapter/shaders_bin/shader.vert.spv
Normal file
Binary file not shown.
2
src/egui_adapter/shaders_hash.txt
Normal file
2
src/egui_adapter/shaders_hash.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
7eb8fae39ae513bc4f6973c12227aa4aa43734bdf34c90e1b3b69294ad98db87 src/egui_adapter/shaders/shader.frag
|
||||
501f4d0c5c5f10a371659b89f12d87abb03e5b57a31dbae5f3c6ca5726e4db01 src/egui_adapter/shaders/shader.vert
|
||||
|
|
@ -34,14 +34,12 @@ pub enum FontconfigError {
|
|||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
#[expect(dead_code)]
|
||||
pub struct Font {
|
||||
pub fullname: String,
|
||||
pub file: PathBuf,
|
||||
pub index: Option<i32>,
|
||||
}
|
||||
|
||||
#[expect(dead_code)]
|
||||
pub fn match_font(family: &str) -> Result<Font, FontconfigError> {
|
||||
thread_local! {
|
||||
static CONFIG: *mut FcConfig = FcConfigGetCurrent();
|
||||
|
|
|
|||
|
|
@ -256,7 +256,7 @@ pub struct Globals {
|
|||
removed: CopyHashMap<GlobalName, Rc<dyn Global>>,
|
||||
pub outputs: CopyHashMap<GlobalName, Rc<WlOutputGlobal>>,
|
||||
pub seats: CopyHashMap<GlobalName, Rc<WlSeatGlobal>>,
|
||||
singletons: StaticMap<Singleton, GlobalName>,
|
||||
pub singletons: StaticMap<Singleton, GlobalName>,
|
||||
exposed: StaticMap<Singleton, Cell<bool>>,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -138,6 +138,9 @@ const MISSING_CAPABILITY: u32 = 0;
|
|||
|
||||
pub const BTN_LEFT: u32 = 0x110;
|
||||
pub const BTN_RIGHT: u32 = 0x111;
|
||||
pub const BTN_MIDDLE: u32 = 0x112;
|
||||
pub const BTN_SIDE: u32 = 0x113;
|
||||
pub const BTN_EXTRA: u32 = 0x114;
|
||||
|
||||
pub const SEAT_NAME_SINCE: Version = Version(2);
|
||||
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ mod damage;
|
|||
mod dbus;
|
||||
mod drm_feedback;
|
||||
mod edid;
|
||||
mod egui_adapter;
|
||||
mod ei;
|
||||
mod eventfd_cache;
|
||||
mod fixed;
|
||||
|
|
|
|||
|
|
@ -42,6 +42,15 @@ pub struct AcceptorMetadata {
|
|||
pub tag: Option<String>,
|
||||
}
|
||||
|
||||
impl AcceptorMetadata {
|
||||
pub fn secure() -> Self {
|
||||
Self {
|
||||
secure: true,
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl SecurityContextAcceptors {
|
||||
pub fn clear(&self) {
|
||||
for acceptor in self.acceptors.lock().drain_values() {
|
||||
|
|
|
|||
17
src/state.rs
17
src/state.rs
|
|
@ -24,6 +24,7 @@ use {
|
|||
damage::DamageVisualizer,
|
||||
dbus::Dbus,
|
||||
drm_feedback::{DrmFeedback, DrmFeedbackIds},
|
||||
egui_adapter::egui_platform::EggState,
|
||||
ei::{
|
||||
ei_acceptor::EiAcceptor,
|
||||
ei_client::{EiClient, EiClients},
|
||||
|
|
@ -226,7 +227,7 @@ pub struct State {
|
|||
pub activation_tokens: CopyHashMap<ActivationToken, ()>,
|
||||
pub toplevel_lists:
|
||||
CopyHashMap<(ClientId, ExtForeignToplevelListV1Id), Rc<ExtForeignToplevelListV1>>,
|
||||
pub dma_buf_ids: DmaBufIds,
|
||||
pub dma_buf_ids: Rc<DmaBufIds>,
|
||||
pub drm_feedback_ids: DrmFeedbackIds,
|
||||
pub direct_scanout_enabled: Cell<bool>,
|
||||
pub persistent_output_states: CopyHashMap<Rc<OutputId>, Rc<PersistentOutputState>>,
|
||||
|
|
@ -295,6 +296,7 @@ pub struct State {
|
|||
pub eventfd_cache: Rc<EventfdCache>,
|
||||
pub lazy_event_sources: Rc<LazyEventSources>,
|
||||
pub bo_drop_queue: Rc<ObjectDropQueue<Rc<dyn BufferObject>>>,
|
||||
pub egg_state: EggState,
|
||||
}
|
||||
|
||||
// impl Drop for State {
|
||||
|
|
@ -645,6 +647,7 @@ impl State {
|
|||
}
|
||||
|
||||
pub fn set_render_ctx(&self, ctx: Option<Rc<dyn GfxContext>>) {
|
||||
self.egg_state.clear();
|
||||
self.explicit_sync_supported.set(false);
|
||||
self.render_ctx.set(ctx.clone());
|
||||
self.render_ctx_version.fetch_add(1);
|
||||
|
|
@ -1158,6 +1161,7 @@ impl State {
|
|||
self.xdg_surface_configure_events.clear();
|
||||
self.lazy_event_sources.clear();
|
||||
self.bo_drop_queue.kill();
|
||||
self.egg_state.clear();
|
||||
}
|
||||
|
||||
pub fn remove_toplevel_id(&self, id: ToplevelIdentifier) {
|
||||
|
|
@ -1876,6 +1880,7 @@ impl State {
|
|||
theme.font.set(self.theme.default_font.clone());
|
||||
theme.bar_font.set(None);
|
||||
theme.title_font.set(None);
|
||||
self.egg_state.reset_fonts();
|
||||
self.fonts_changed();
|
||||
}
|
||||
|
||||
|
|
@ -1896,6 +1901,16 @@ impl State {
|
|||
self.fonts_changed();
|
||||
}
|
||||
|
||||
pub fn set_egui_fonts(&self, proportional: Option<Vec<&str>>, monospace: Option<Vec<&str>>) {
|
||||
if let Some(fonts) = &proportional {
|
||||
self.egg_state.set_proportional_fonts(fonts);
|
||||
}
|
||||
if let Some(fonts) = &monospace {
|
||||
self.egg_state.set_monospace_fonts(fonts);
|
||||
}
|
||||
self.fonts_changed();
|
||||
}
|
||||
|
||||
pub fn set_bar_position(&self, p: BarPosition) {
|
||||
self.theme.bar_position.set(p);
|
||||
self.spaces_changed();
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@ impl<T> ObjectDropQueue<T> {
|
|||
}
|
||||
}
|
||||
|
||||
#[expect(dead_code)]
|
||||
pub fn push(self: &Rc<Self>, fd: &Rc<OwnedFd>, t: T)
|
||||
where
|
||||
T: 'static,
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ pub fn pipe() -> Result<Pipe<OwnedFd, OwnedFd>, OsError> {
|
|||
}
|
||||
|
||||
impl<L, R> Pipe<L, R> {
|
||||
#[expect(dead_code)]
|
||||
pub fn map_read<Lprime>(self, map: impl FnOnce(L) -> Lprime) -> Pipe<Lprime, R> {
|
||||
Pipe {
|
||||
read: map(self.read),
|
||||
|
|
@ -22,7 +21,6 @@ impl<L, R> Pipe<L, R> {
|
|||
}
|
||||
}
|
||||
|
||||
#[expect(dead_code)]
|
||||
pub fn map_write<Rprime>(self, map: impl FnOnce(R) -> Rprime) -> Pipe<L, Rprime> {
|
||||
Pipe {
|
||||
read: self.read,
|
||||
|
|
|
|||
|
|
@ -1,8 +1,12 @@
|
|||
use {
|
||||
crate::{
|
||||
format::Format,
|
||||
gfx_api::SyncFile,
|
||||
utils::{compat::IoctlNumber, oserror::OsError},
|
||||
video::{LINEAR_MODIFIER, Modifier},
|
||||
video::{
|
||||
LINEAR_MODIFIER, Modifier,
|
||||
drm::{DrmError, syncobj::merge_sync_files},
|
||||
},
|
||||
},
|
||||
arrayvec::ArrayVec,
|
||||
std::{cell::OnceCell, rc::Rc, sync::OnceLock},
|
||||
|
|
@ -113,6 +117,22 @@ impl DmaBuf {
|
|||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn export_sync_file(&self, flags: u32) -> Result<Option<SyncFile>, DrmError> {
|
||||
let mut sf = PlaneVec::new();
|
||||
for plane in &self.planes {
|
||||
sf.push(
|
||||
dma_buf_export_sync_file(&plane.fd, flags)
|
||||
.map(Rc::new)
|
||||
.map(SyncFile)
|
||||
.map_err(DrmError::ExportSyncFile)?,
|
||||
);
|
||||
if self.is_one_file() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
merge_sync_files(sf.iter())
|
||||
}
|
||||
}
|
||||
|
||||
const DMA_BUF_BASE: u64 = b'b' as _;
|
||||
|
|
|
|||
|
|
@ -189,7 +189,6 @@ impl UsrJayCompositor {
|
|||
obj
|
||||
}
|
||||
|
||||
#[expect(dead_code)]
|
||||
pub fn get_sync_file_surface(&self, surface: &UsrWlSurface) -> Rc<UsrJaySyncFileSurface> {
|
||||
let obj = Rc::new(UsrJaySyncFileSurface {
|
||||
id: self.con.id(),
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ pub struct UsrJaySyncFileSurface {
|
|||
}
|
||||
|
||||
impl UsrJaySyncFileSurface {
|
||||
#[expect(dead_code)]
|
||||
pub fn set_acquire(&self, sf: Option<&FdSync>) {
|
||||
match sf.and_then(|s| s.get_sync_file()) {
|
||||
None => {
|
||||
|
|
@ -33,7 +32,6 @@ impl UsrJaySyncFileSurface {
|
|||
}
|
||||
}
|
||||
|
||||
#[expect(dead_code)]
|
||||
pub fn get_release(&self) -> Rc<UsrJaySyncFileRelease> {
|
||||
let obj = Rc::new(UsrJaySyncFileRelease {
|
||||
id: self.con.id(),
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ pub struct UsrWlDataDevice {
|
|||
}
|
||||
|
||||
impl UsrWlDataDevice {
|
||||
#[expect(dead_code)]
|
||||
pub fn set_selection(&self, serial: u32, source: &UsrWlDataSource) {
|
||||
self.con.request(SetSelection {
|
||||
self_id: self.id,
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ pub struct UsrWlDataDeviceManager {
|
|||
}
|
||||
|
||||
impl UsrWlDataDeviceManager {
|
||||
#[expect(dead_code)]
|
||||
pub fn create_data_source(&self) -> Rc<UsrWlDataSource> {
|
||||
let obj = Rc::new(UsrWlDataSource {
|
||||
id: self.con.id(),
|
||||
|
|
@ -37,7 +36,6 @@ impl UsrWlDataDeviceManager {
|
|||
obj
|
||||
}
|
||||
|
||||
#[expect(dead_code)]
|
||||
pub fn get_data_device(&self, seat: &UsrWlSeat) -> Rc<UsrWlDataDevice> {
|
||||
let obj = Rc::new(UsrWlDataDevice {
|
||||
id: self.con.id(),
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ pub struct UsrWlDataOffer {
|
|||
}
|
||||
|
||||
impl UsrWlDataOffer {
|
||||
#[expect(dead_code)]
|
||||
pub fn receive(&self, mime_type: &str, fd: &Rc<OwnedFd>) {
|
||||
self.con.request(Receive {
|
||||
self_id: self.id,
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ pub trait UsrWlDataSourceOwner {
|
|||
}
|
||||
|
||||
impl UsrWlDataSource {
|
||||
#[expect(dead_code)]
|
||||
pub fn offer(&self, mime_type: &str) {
|
||||
self.con.request(Offer {
|
||||
self_id: self.id,
|
||||
|
|
|
|||
|
|
@ -41,7 +41,6 @@ pub trait UsrWlPointerOwner {
|
|||
}
|
||||
|
||||
impl UsrWlPointer {
|
||||
#[expect(dead_code)]
|
||||
pub fn set_cursor(&self, serial: u32, cursor: Option<&UsrWlSurface>, hot_x: i32, hot_y: i32) {
|
||||
self.con.request(SetCursor {
|
||||
self_id: self.id,
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ impl UsrWlSeat {
|
|||
ptr
|
||||
}
|
||||
|
||||
#[expect(dead_code)]
|
||||
pub fn get_keyboard(&self) -> Rc<UsrWlKeyboard> {
|
||||
let kb = Rc::new(UsrWlKeyboard {
|
||||
id: self.con.id(),
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ pub struct UsrWpCursorShapeDeviceV1 {
|
|||
}
|
||||
|
||||
impl UsrWpCursorShapeDeviceV1 {
|
||||
#[expect(dead_code)]
|
||||
pub fn set_shape(&self, serial: u32, cursor: KnownCursor) {
|
||||
self.con.request(SetShape {
|
||||
self_id: self.id,
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ pub struct UsrWpCursorShapeManagerV1 {
|
|||
}
|
||||
|
||||
impl UsrWpCursorShapeManagerV1 {
|
||||
#[expect(dead_code)]
|
||||
pub fn get_pointer(&self, pointer: &UsrWlPointer) -> Rc<UsrWpCursorShapeDeviceV1> {
|
||||
let obj = Rc::new(UsrWpCursorShapeDeviceV1 {
|
||||
id: self.con.id(),
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ pub trait UsrXdgSurfaceOwner {
|
|||
}
|
||||
|
||||
impl UsrXdgSurface {
|
||||
#[expect(dead_code)]
|
||||
pub fn get_toplevel(&self) -> Rc<UsrXdgToplevel> {
|
||||
let obj = Rc::new(UsrXdgToplevel {
|
||||
id: self.con.id(),
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ pub struct UsrXdgToplevel {
|
|||
}
|
||||
|
||||
impl UsrXdgToplevel {
|
||||
#[expect(dead_code)]
|
||||
pub fn set_title(&self, title: &str) {
|
||||
self.con.request(SetTitle {
|
||||
self_id: self.id,
|
||||
|
|
@ -24,7 +23,6 @@ impl UsrXdgToplevel {
|
|||
});
|
||||
}
|
||||
|
||||
#[expect(dead_code)]
|
||||
pub fn set_fullscreen(&self, fullscreen: bool) {
|
||||
match fullscreen {
|
||||
true => {
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ pub struct UsrXdgWmBase {
|
|||
}
|
||||
|
||||
impl UsrXdgWmBase {
|
||||
#[expect(dead_code)]
|
||||
pub fn get_xdg_surface(&self, surface: &UsrWlSurface) -> Rc<UsrXdgSurface> {
|
||||
let obj = Rc::new(UsrXdgSurface {
|
||||
id: self.con.id(),
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@ pub struct UsrZwpLinuxDmabufV1 {
|
|||
}
|
||||
|
||||
impl UsrZwpLinuxDmabufV1 {
|
||||
#[expect(dead_code)]
|
||||
pub fn create_buffer(&self, buffer: &DmaBuf) -> Rc<UsrWlBuffer> {
|
||||
let params = Rc::new(UsrZwpLinuxBufferParamsV1 {
|
||||
id: self.con.id(),
|
||||
|
|
|
|||
|
|
@ -211,6 +211,12 @@ pub struct Theme {
|
|||
pub bar_separator_width: Option<i32>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default)]
|
||||
pub struct Egui {
|
||||
pub proportional_fonts: Option<Vec<String>>,
|
||||
pub monospace_fonts: Option<Vec<String>>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Status {
|
||||
pub format: MessageFormat,
|
||||
|
|
@ -510,6 +516,7 @@ pub struct Config {
|
|||
pub auto_reload: Option<bool>,
|
||||
pub log_level: Option<LogLevel>,
|
||||
pub theme: Theme,
|
||||
pub egui: Egui,
|
||||
pub gfx_api: Option<GfxApi>,
|
||||
pub direct_scanout_enabled: Option<bool>,
|
||||
pub drm_devices: Vec<ConfigDrmDevice>,
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ mod connector_match;
|
|||
mod content_type;
|
||||
mod drm_device;
|
||||
mod drm_device_match;
|
||||
mod egui;
|
||||
mod env;
|
||||
pub mod exec;
|
||||
mod fallback_output_mode;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use {
|
||||
crate::{
|
||||
config::{
|
||||
Action, Config, Libei, Theme, UiDrag,
|
||||
Action, Config, Egui, Libei, Theme, UiDrag,
|
||||
context::Context,
|
||||
extractor::{Extractor, ExtractorError, arr, bol, int, opt, recover, str, val},
|
||||
parser::{DataType, ParseResult, Parser, UnexpectedDataType},
|
||||
|
|
@ -13,6 +13,7 @@ use {
|
|||
connector::ConnectorsParser,
|
||||
drm_device::DrmDevicesParser,
|
||||
drm_device_match::DrmDeviceMatchParser,
|
||||
egui::EguiParser,
|
||||
env::EnvParser,
|
||||
fallback_output_mode::FallbackOutputModeParser,
|
||||
float::FloatParser,
|
||||
|
|
@ -150,6 +151,7 @@ impl Parser for ConfigParser<'_> {
|
|||
simple_im_val,
|
||||
show_titles,
|
||||
fallback_output_mode_val,
|
||||
egui_val,
|
||||
),
|
||||
) = ext.extract((
|
||||
(
|
||||
|
|
@ -208,6 +210,7 @@ impl Parser for ConfigParser<'_> {
|
|||
opt(val("simple-im")),
|
||||
recover(opt(bol("show-titles"))),
|
||||
opt(val("fallback-output-mode")),
|
||||
opt(val("egui")),
|
||||
),
|
||||
))?;
|
||||
let mut keymap = None;
|
||||
|
|
@ -313,6 +316,15 @@ impl Parser for ConfigParser<'_> {
|
|||
}
|
||||
}
|
||||
}
|
||||
let mut egui = Egui::default();
|
||||
if let Some(value) = egui_val {
|
||||
match value.parse(&mut EguiParser(self.0)) {
|
||||
Ok(v) => egui = v,
|
||||
Err(e) => {
|
||||
log::warn!("Could not parse the egui settings: {}", self.0.error(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
let mut gfx_api = None;
|
||||
if let Some(value) = gfx_api_val {
|
||||
match value.parse(&mut GfxApiParser) {
|
||||
|
|
@ -556,6 +568,7 @@ impl Parser for ConfigParser<'_> {
|
|||
auto_reload: auto_reload.despan(),
|
||||
log_level,
|
||||
theme,
|
||||
egui,
|
||||
gfx_api,
|
||||
drm_devices,
|
||||
direct_scanout_enabled: direct_scanout.despan(),
|
||||
|
|
|
|||
63
toml-config/src/config/parsers/egui.rs
Normal file
63
toml-config/src/config/parsers/egui.rs
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
use {
|
||||
crate::{
|
||||
config::{
|
||||
Egui,
|
||||
context::Context,
|
||||
extractor::{Extractor, ExtractorError, arr, opt},
|
||||
parser::{DataType, ParseResult, Parser, UnexpectedDataType},
|
||||
},
|
||||
toml::{
|
||||
toml_span::{Span, Spanned},
|
||||
toml_value::Value,
|
||||
},
|
||||
},
|
||||
indexmap::IndexMap,
|
||||
thiserror::Error,
|
||||
};
|
||||
|
||||
pub struct EguiParser<'a>(pub &'a Context<'a>);
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
pub enum EguiParserError {
|
||||
#[error(transparent)]
|
||||
Expected(#[from] UnexpectedDataType),
|
||||
#[error(transparent)]
|
||||
Extractor(#[from] ExtractorError),
|
||||
}
|
||||
|
||||
impl Parser for EguiParser<'_> {
|
||||
type Value = Egui;
|
||||
type Error = EguiParserError;
|
||||
const EXPECTED: &'static [DataType] = &[DataType::Table];
|
||||
|
||||
fn parse_table(
|
||||
&mut self,
|
||||
span: Span,
|
||||
table: &IndexMap<Spanned<String>, Spanned<Value>>,
|
||||
) -> ParseResult<Self> {
|
||||
let mut ext = Extractor::new(self.0, span, table);
|
||||
let (proportional_fonts_arr, monospace_fonts_arr) =
|
||||
ext.extract((opt(arr("proportional-fonts")), opt(arr("monospace-fonts"))))?;
|
||||
let mut proportional_fonts = None;
|
||||
let mut monospace_fonts = None;
|
||||
for (out, f) in [
|
||||
(&mut proportional_fonts, proportional_fonts_arr),
|
||||
(&mut monospace_fonts, monospace_fonts_arr),
|
||||
] {
|
||||
if let Some(f) = f {
|
||||
let fonts = out.insert(vec![]);
|
||||
for f in f.value {
|
||||
let Value::String(s) = &f.value else {
|
||||
log::error!("Expected a string: {}", self.0.error3(f.span));
|
||||
continue;
|
||||
};
|
||||
fonts.push(s.clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(Egui {
|
||||
proportional_fonts,
|
||||
monospace_fonts,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -44,8 +44,8 @@ use {
|
|||
switch_to_vt,
|
||||
tasks::{self, JoinHandle},
|
||||
theme::{
|
||||
reset_colors, reset_font, reset_sizes, set_bar_font, set_bar_position, set_font,
|
||||
set_title_font,
|
||||
reset_colors, reset_font, reset_sizes, set_bar_font, set_bar_position,
|
||||
set_egui_monospace_fonts, set_egui_proportional_fonts, set_font, set_title_font,
|
||||
},
|
||||
toggle_float_above_fullscreen, toggle_show_bar, toggle_show_titles,
|
||||
video::{
|
||||
|
|
@ -1633,6 +1633,12 @@ fn load_config(initial_load: bool, auto_reload: bool, persistent: &Rc<Persistent
|
|||
if let Some(v) = config.fallback_output_mode {
|
||||
persistent.seat.set_fallback_output_mode(v);
|
||||
}
|
||||
if let Some(f) = &config.egui.proportional_fonts {
|
||||
set_egui_proportional_fonts(f.iter().map(|s| &**s));
|
||||
}
|
||||
if let Some(f) = &config.egui.monospace_fonts {
|
||||
set_egui_monospace_fonts(f.iter().map(|s| &**s));
|
||||
}
|
||||
}
|
||||
|
||||
fn create_command(exec: &Exec) -> Command {
|
||||
|
|
|
|||
|
|
@ -1081,6 +1081,10 @@
|
|||
"fallback-output-mode": {
|
||||
"description": "Sets the fallback output mode.\n\nThe default is `cursor`.\n\n- Example:\n\n ```toml\n fallback-output-mode = \"focus\"\n ```\n",
|
||||
"$ref": "#/$defs/FallbackOutputMode"
|
||||
},
|
||||
"egui": {
|
||||
"description": "Sets the egui settings of the compositor.\n",
|
||||
"$ref": "#/$defs/Egui"
|
||||
}
|
||||
},
|
||||
"required": []
|
||||
|
|
@ -1237,6 +1241,29 @@
|
|||
}
|
||||
]
|
||||
},
|
||||
"Egui": {
|
||||
"description": "The egui settings.\n",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"proportional-fonts": {
|
||||
"type": "array",
|
||||
"description": "The list of proportional fonts.\n\nThe default is `[\"sans-serif\", \"Noto Sans\", \"Noto Color Emoji\"]`.\n",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"description": ""
|
||||
}
|
||||
},
|
||||
"monospace-fonts": {
|
||||
"type": "array",
|
||||
"description": "The list of monospace fonts.\n\nThe default is `[\"monospace\", \"Noto Sans Mono\", \"Noto Color Emoji\"]`.\n",
|
||||
"items": {
|
||||
"type": "string",
|
||||
"description": ""
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": []
|
||||
},
|
||||
"Eotf": {
|
||||
"type": "string",
|
||||
"description": "The EOTF of an output.\n",
|
||||
|
|
|
|||
|
|
@ -2248,6 +2248,12 @@ The table has the following fields:
|
|||
|
||||
The value of this field should be a [FallbackOutputMode](#types-FallbackOutputMode).
|
||||
|
||||
- `egui` (optional):
|
||||
|
||||
Sets the egui settings of the compositor.
|
||||
|
||||
The value of this field should be a [Egui](#types-Egui).
|
||||
|
||||
|
||||
<a name="types-Connector"></a>
|
||||
### `Connector`
|
||||
|
|
@ -2588,6 +2594,32 @@ The table has the following fields:
|
|||
The numbers should be integers.
|
||||
|
||||
|
||||
<a name="types-Egui"></a>
|
||||
### `Egui`
|
||||
|
||||
The egui settings.
|
||||
|
||||
Values of this type should be tables.
|
||||
|
||||
The table has the following fields:
|
||||
|
||||
- `proportional-fonts` (optional):
|
||||
|
||||
The list of proportional fonts.
|
||||
|
||||
The default is `["sans-serif", "Noto Sans", "Noto Color Emoji"]`.
|
||||
|
||||
The value of this field should be an array of strings.
|
||||
|
||||
- `monospace-fonts` (optional):
|
||||
|
||||
The list of monospace fonts.
|
||||
|
||||
The default is `["monospace", "Noto Sans Mono", "Noto Color Emoji"]`.
|
||||
|
||||
The value of this field should be an array of strings.
|
||||
|
||||
|
||||
<a name="types-Eotf"></a>
|
||||
### `Eotf`
|
||||
|
||||
|
|
|
|||
|
|
@ -3004,6 +3004,11 @@ Config:
|
|||
```toml
|
||||
fallback-output-mode = "focus"
|
||||
```
|
||||
egui:
|
||||
ref: Egui
|
||||
required: false
|
||||
description: |
|
||||
Sets the egui settings of the compositor.
|
||||
|
||||
|
||||
Idle:
|
||||
|
|
@ -4426,3 +4431,28 @@ FallbackOutputMode:
|
|||
description: Use the output the cursor is on.
|
||||
- value: focus
|
||||
description: Use the output the focus is on (highlighted window).
|
||||
|
||||
|
||||
Egui:
|
||||
kind: table
|
||||
description: |
|
||||
The egui settings.
|
||||
fields:
|
||||
proportional-fonts:
|
||||
kind: array
|
||||
items:
|
||||
kind: string
|
||||
required: false
|
||||
description: |
|
||||
The list of proportional fonts.
|
||||
|
||||
The default is `["sans-serif", "Noto Sans", "Noto Color Emoji"]`.
|
||||
monospace-fonts:
|
||||
kind: array
|
||||
items:
|
||||
kind: string
|
||||
required: false
|
||||
description: |
|
||||
The list of monospace fonts.
|
||||
|
||||
The default is `["monospace", "Noto Sans Mono", "Noto Color Emoji"]`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue