Add mode support and update dependencies

This commit is contained in:
Alexander Rosenberg 2024-04-25 19:28:26 -07:00
parent 92e989f26c
commit 2731d486c7
Signed by: Zander671
GPG Key ID: 5FD0394ADBD72730
3 changed files with 81 additions and 63 deletions

101
Cargo.lock generated
View File

@ -4,9 +4,9 @@ version = 3
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.1.0" version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
@ -14,12 +14,6 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "cc"
version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
[[package]] [[package]]
name = "cfg-if" name = "cfg-if"
version = "1.0.0" version = "1.0.0"
@ -28,21 +22,21 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]] [[package]]
name = "downcast-rs" name = "downcast-rs"
version = "1.2.0" version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
[[package]] [[package]]
name = "itoa" name = "itoa"
version = "1.0.1" version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]] [[package]]
name = "libc" name = "libc"
version = "0.2.125" version = "0.2.153"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b" checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
[[package]] [[package]]
name = "memoffset" name = "memoffset"
@ -55,12 +49,11 @@ dependencies = [
[[package]] [[package]]
name = "nix" name = "nix"
version = "0.22.3" version = "0.24.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"cc",
"cfg-if", "cfg-if",
"libc", "libc",
"memoffset", "memoffset",
@ -68,30 +61,30 @@ dependencies = [
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.10.0" version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]] [[package]]
name = "pkg-config" name = "pkg-config"
version = "0.3.25" version = "0.3.30"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
[[package]] [[package]]
name = "proc-macro2" name = "proc-macro2"
version = "1.0.38" version = "1.0.81"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa" checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba"
dependencies = [ dependencies = [
"unicode-xid", "unicode-ident",
] ]
[[package]] [[package]]
name = "quote" name = "quote"
version = "1.0.18" version = "1.0.36"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
] ]
@ -110,24 +103,24 @@ dependencies = [
[[package]] [[package]]
name = "ryu" name = "ryu"
version = "1.0.9" version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1"
[[package]] [[package]]
name = "serde" name = "serde"
version = "1.0.137" version = "1.0.198"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc"
dependencies = [ dependencies = [
"serde_derive", "serde_derive",
] ]
[[package]] [[package]]
name = "serde_derive" name = "serde_derive"
version = "1.0.137" version = "1.0.198"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -136,9 +129,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.81" version = "1.0.116"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813"
dependencies = [ dependencies = [
"itoa", "itoa",
"ryu", "ryu",
@ -147,32 +140,32 @@ dependencies = [
[[package]] [[package]]
name = "smallvec" name = "smallvec"
version = "1.8.0" version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67"
[[package]] [[package]]
name = "syn" name = "syn"
version = "1.0.92" version = "2.0.60"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52" checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"unicode-xid", "unicode-ident",
] ]
[[package]] [[package]]
name = "unicode-xid" name = "unicode-ident"
version = "0.2.3" version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]] [[package]]
name = "wayland-client" name = "wayland-client"
version = "0.29.4" version = "0.29.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "91223460e73257f697d9e23d401279123d36039a3f7a449e983f123292d4458f" checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"downcast-rs", "downcast-rs",
@ -185,9 +178,9 @@ dependencies = [
[[package]] [[package]]
name = "wayland-commons" name = "wayland-commons"
version = "0.29.4" version = "0.29.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94f6e5e340d7c13490eca867898c4cec5af56c27a5ffe5c80c6fc4708e22d33e" checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902"
dependencies = [ dependencies = [
"nix", "nix",
"once_cell", "once_cell",
@ -197,9 +190,9 @@ dependencies = [
[[package]] [[package]]
name = "wayland-protocols" name = "wayland-protocols"
version = "0.29.4" version = "0.29.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60147ae23303402e41fe034f74fb2c35ad0780ee88a1c40ac09a3be1e7465741" checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"wayland-commons", "wayland-commons",
@ -208,9 +201,9 @@ dependencies = [
[[package]] [[package]]
name = "wayland-scanner" name = "wayland-scanner"
version = "0.29.4" version = "0.29.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39a1ed3143f7a143187156a2ab52742e89dac33245ba505c17224df48939f9e0" checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -219,15 +212,15 @@ dependencies = [
[[package]] [[package]]
name = "wayland-sys" name = "wayland-sys"
version = "0.29.4" version = "0.29.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9341df79a8975679188e37dab3889bfa57c44ac2cb6da166f519a81cbe452d4" checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4"
dependencies = [ dependencies = [
"pkg-config", "pkg-config",
] ]
[[package]] [[package]]
name = "xml-rs" name = "xml-rs"
version = "0.8.4" version = "0.8.20"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193"

View File

@ -1,13 +1,21 @@
# A [river-status](https://github.com/ifreund/river) client # A [river-status](https://codeberg.org/river/river) client
This client is useful if you want to have a module for somethig like [eww](https://github.com/elkowar/eww) or [waybar](https://github.com/Alexays/Waybar) with status information like the window title, the focused tag and the tag of views. ## Original credit to this program goes to [snakedye / Bryan][1] at [https://gitlab.com/snakedye/ristate][2]
[2]: https://gitlab.com/snakedye
[2]: https://gitlab.com/snakedye/ristate
This client is useful if you want to have a module for somethig like [eww][3] or
[waybar][4] with status information like the window title, the focused tag and
the tag of views.
[3]: https://github.com/elkowar/eww
[4]: https://github.com/Alexays/Waybar
### Dependencies ### Dependencies
- rust - rust
## Building ## Building
```sh
```shell cargo build
git clone https://gitlab.com/snakedye/ristate.git ```
cd ristate
cargo build --release

View File

@ -16,6 +16,7 @@ struct Flags {
urgency: bool, urgency: bool,
viewstag: bool, viewstag: bool,
layout: bool, layout: bool,
mode: bool,
output: Option<String>, output: Option<String>,
seat: Option<String>, seat: Option<String>,
} }
@ -28,6 +29,7 @@ impl Flags {
urgency: false, urgency: false,
viewstag: false, viewstag: false,
layout: false, layout: false,
mode: false,
output: None, output: None,
seat: None, seat: None,
} }
@ -45,6 +47,8 @@ struct Env {
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
title: Option<String>, title: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
mode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
tags: Option<BTreeMap<String, Tags>>, tags: Option<BTreeMap<String, Tags>>,
#[serde(skip_serializing_if = "Option::is_none")] #[serde(skip_serializing_if = "Option::is_none")]
urgency: Option<BTreeMap<String, Tags>>, urgency: Option<BTreeMap<String, Tags>>,
@ -60,6 +64,7 @@ impl Env {
Env { Env {
title: None, title: None,
layout: None, layout: None,
mode: None,
tags: flags.tags.then(BTreeMap::new), tags: flags.tags.then(BTreeMap::new),
urgency: flags.urgency.then(BTreeMap::new), urgency: flags.urgency.then(BTreeMap::new),
viewstag: flags.viewstag.then(BTreeMap::new), viewstag: flags.viewstag.then(BTreeMap::new),
@ -71,6 +76,7 @@ impl Env {
fn fmt(&self) { fn fmt(&self) {
if self.title.is_some() if self.title.is_some()
|| self.tags.is_some() || self.tags.is_some()
|| self.mode.is_some()
|| self.urgency.is_some() || self.urgency.is_some()
|| self.viewstag.is_some() || self.viewstag.is_some()
|| self.layout.is_some() || self.layout.is_some()
@ -103,7 +109,7 @@ fn main() {
seat.quick_assign(move |seat, event, mut env| match event { seat.quick_assign(move |seat, event, mut env| match event {
wl_seat::Event::Name { name } => { wl_seat::Event::Name { name } => {
if let Some(env) = env.get::<Env>() { if let Some(env) = env.get::<Env>() {
if env.flags.title if (env.flags.title || env.flags.mode)
&& (env.flags.seat.is_none() && (env.flags.seat.is_none()
|| name.eq(env.flags.seat.as_ref().unwrap())) || name.eq(env.flags.seat.as_ref().unwrap()))
{ {
@ -113,7 +119,16 @@ fn main() {
move |_, event, mut env| match event { move |_, event, mut env| match event {
zriver_seat_status_v1::Event::FocusedView { title } => { zriver_seat_status_v1::Event::FocusedView { title } => {
if let Some(env) = env.get::<Env>() { if let Some(env) = env.get::<Env>() {
env.title = Some(title); if env.flags.title {
env.title = Some(title);
}
}
}
zriver_seat_status_v1::Event::Mode { name } => {
if let Some(env) = env.get::<Env>() {
if env.flags.mode {
env.mode = Some(name);
}
} }
} }
_ => {} _ => {}
@ -251,6 +266,7 @@ fn configuration() -> Flags {
"--output" | "-o" => default.output = args.next(), "--output" | "-o" => default.output = args.next(),
"--urgency" | "-u" => default.urgency = true, "--urgency" | "-u" => default.urgency = true,
"--title" | "-w" => default.title = true, "--title" | "-w" => default.title = true,
"--mode" | "-m" => default.mode = true,
"--tags" | "-t" => default.tags = true, "--tags" | "-t" => default.tags = true,
"--layout" | "-l" => default.layout = true, "--layout" | "-l" => default.layout = true,
"--views-tag" | "-vt" => default.viewstag = true, "--views-tag" | "-vt" => default.viewstag = true,
@ -258,6 +274,7 @@ fn configuration() -> Flags {
print!("Usage: ristate [option]\n\n"); print!("Usage: ristate [option]\n\n");
print!(" --tag | -t the focused tag\n"); print!(" --tag | -t the focused tag\n");
print!(" --title | -w the title of the focused view\n"); print!(" --title | -w the title of the focused view\n");
print!(" --mode | -m the current input mode\n");
print!(" --urgency | -u urgent tag\n"); print!(" --urgency | -u urgent tag\n");
print!(" --views-tag | -vt the tag of all views\n"); print!(" --views-tag | -vt the tag of all views\n");
print!(" --seat | -s <string> select the seat\n"); print!(" --seat | -s <string> select the seat\n");