Add mode support and update dependencies
This commit is contained in:
		
							
								
								
									
										101
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										101
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -4,9 +4,9 @@ version = 3 | ||||
|  | ||||
| [[package]] | ||||
| name = "autocfg" | ||||
| version = "1.1.0" | ||||
| version = "1.2.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" | ||||
| checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" | ||||
|  | ||||
| [[package]] | ||||
| name = "bitflags" | ||||
| @ -14,12 +14,6 @@ version = "1.3.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" | ||||
|  | ||||
| [[package]] | ||||
| name = "cc" | ||||
| version = "1.0.73" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" | ||||
|  | ||||
| [[package]] | ||||
| name = "cfg-if" | ||||
| version = "1.0.0" | ||||
| @ -28,21 +22,21 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" | ||||
|  | ||||
| [[package]] | ||||
| name = "downcast-rs" | ||||
| version = "1.2.0" | ||||
| version = "1.2.1" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" | ||||
| checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" | ||||
|  | ||||
| [[package]] | ||||
| name = "itoa" | ||||
| version = "1.0.1" | ||||
| version = "1.0.11" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" | ||||
| checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" | ||||
|  | ||||
| [[package]] | ||||
| name = "libc" | ||||
| version = "0.2.125" | ||||
| version = "0.2.153" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b" | ||||
| checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" | ||||
|  | ||||
| [[package]] | ||||
| name = "memoffset" | ||||
| @ -55,12 +49,11 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "nix" | ||||
| version = "0.22.3" | ||||
| version = "0.24.3" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" | ||||
| checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" | ||||
| dependencies = [ | ||||
|  "bitflags", | ||||
|  "cc", | ||||
|  "cfg-if", | ||||
|  "libc", | ||||
|  "memoffset", | ||||
| @ -68,30 +61,30 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "once_cell" | ||||
| version = "1.10.0" | ||||
| version = "1.19.0" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" | ||||
| checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" | ||||
|  | ||||
| [[package]] | ||||
| name = "pkg-config" | ||||
| version = "0.3.25" | ||||
| version = "0.3.30" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" | ||||
| checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" | ||||
|  | ||||
| [[package]] | ||||
| name = "proc-macro2" | ||||
| version = "1.0.38" | ||||
| version = "1.0.81" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa" | ||||
| checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" | ||||
| dependencies = [ | ||||
|  "unicode-xid", | ||||
|  "unicode-ident", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "quote" | ||||
| version = "1.0.18" | ||||
| version = "1.0.36" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" | ||||
| checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
| ] | ||||
| @ -110,24 +103,24 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "ryu" | ||||
| version = "1.0.9" | ||||
| version = "1.0.17" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" | ||||
| checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" | ||||
|  | ||||
| [[package]] | ||||
| name = "serde" | ||||
| version = "1.0.137" | ||||
| version = "1.0.198" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1" | ||||
| checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" | ||||
| dependencies = [ | ||||
|  "serde_derive", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "serde_derive" | ||||
| version = "1.0.137" | ||||
| version = "1.0.198" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be" | ||||
| checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
| @ -136,9 +129,9 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "serde_json" | ||||
| version = "1.0.81" | ||||
| version = "1.0.116" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c" | ||||
| checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" | ||||
| dependencies = [ | ||||
|  "itoa", | ||||
|  "ryu", | ||||
| @ -147,32 +140,32 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "smallvec" | ||||
| version = "1.8.0" | ||||
| version = "1.13.2" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" | ||||
| checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" | ||||
|  | ||||
| [[package]] | ||||
| name = "syn" | ||||
| version = "1.0.92" | ||||
| version = "2.0.60" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52" | ||||
| checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
|  "unicode-xid", | ||||
|  "unicode-ident", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "unicode-xid" | ||||
| version = "0.2.3" | ||||
| name = "unicode-ident" | ||||
| version = "1.0.12" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" | ||||
| checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" | ||||
|  | ||||
| [[package]] | ||||
| name = "wayland-client" | ||||
| version = "0.29.4" | ||||
| version = "0.29.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "91223460e73257f697d9e23d401279123d36039a3f7a449e983f123292d4458f" | ||||
| checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" | ||||
| dependencies = [ | ||||
|  "bitflags", | ||||
|  "downcast-rs", | ||||
| @ -185,9 +178,9 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "wayland-commons" | ||||
| version = "0.29.4" | ||||
| version = "0.29.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "94f6e5e340d7c13490eca867898c4cec5af56c27a5ffe5c80c6fc4708e22d33e" | ||||
| checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" | ||||
| dependencies = [ | ||||
|  "nix", | ||||
|  "once_cell", | ||||
| @ -197,9 +190,9 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "wayland-protocols" | ||||
| version = "0.29.4" | ||||
| version = "0.29.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "60147ae23303402e41fe034f74fb2c35ad0780ee88a1c40ac09a3be1e7465741" | ||||
| checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" | ||||
| dependencies = [ | ||||
|  "bitflags", | ||||
|  "wayland-commons", | ||||
| @ -208,9 +201,9 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "wayland-scanner" | ||||
| version = "0.29.4" | ||||
| version = "0.29.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "39a1ed3143f7a143187156a2ab52742e89dac33245ba505c17224df48939f9e0" | ||||
| checksum = "8f4303d8fa22ab852f789e75a967f0a2cdc430a607751c0499bada3e451cbd53" | ||||
| dependencies = [ | ||||
|  "proc-macro2", | ||||
|  "quote", | ||||
| @ -219,15 +212,15 @@ dependencies = [ | ||||
|  | ||||
| [[package]] | ||||
| name = "wayland-sys" | ||||
| version = "0.29.4" | ||||
| version = "0.29.5" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d9341df79a8975679188e37dab3889bfa57c44ac2cb6da166f519a81cbe452d4" | ||||
| checksum = "be12ce1a3c39ec7dba25594b97b42cb3195d54953ddb9d3d95a7c3902bc6e9d4" | ||||
| dependencies = [ | ||||
|  "pkg-config", | ||||
| ] | ||||
|  | ||||
| [[package]] | ||||
| name = "xml-rs" | ||||
| version = "0.8.4" | ||||
| version = "0.8.20" | ||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | ||||
| checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" | ||||
| checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" | ||||
|  | ||||
							
								
								
									
										22
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								README.md
									
									
									
									
									
								
							| @ -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 | ||||
| - rust | ||||
|  | ||||
| ## Building | ||||
|  | ||||
| ```shell | ||||
| git clone https://gitlab.com/snakedye/ristate.git | ||||
| cd ristate | ||||
| cargo build --release | ||||
| ```sh | ||||
| cargo build | ||||
| ``` | ||||
|  | ||||
							
								
								
									
										21
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								src/main.rs
									
									
									
									
									
								
							| @ -16,6 +16,7 @@ struct Flags { | ||||
|     urgency: bool, | ||||
|     viewstag: bool, | ||||
|     layout: bool, | ||||
|     mode: bool, | ||||
|     output: Option<String>, | ||||
|     seat: Option<String>, | ||||
| } | ||||
| @ -28,6 +29,7 @@ impl Flags { | ||||
|             urgency: false, | ||||
|             viewstag: false, | ||||
|             layout: false, | ||||
|             mode: false, | ||||
|             output: None, | ||||
|             seat: None, | ||||
|         } | ||||
| @ -45,6 +47,8 @@ struct Env { | ||||
|     #[serde(skip_serializing_if = "Option::is_none")] | ||||
|     title: Option<String>, | ||||
|     #[serde(skip_serializing_if = "Option::is_none")] | ||||
|     mode: Option<String>, | ||||
|     #[serde(skip_serializing_if = "Option::is_none")] | ||||
|     tags: Option<BTreeMap<String, Tags>>, | ||||
|     #[serde(skip_serializing_if = "Option::is_none")] | ||||
|     urgency: Option<BTreeMap<String, Tags>>, | ||||
| @ -60,6 +64,7 @@ impl Env { | ||||
|         Env { | ||||
|             title: None, | ||||
|             layout: None, | ||||
|             mode: None, | ||||
|             tags: flags.tags.then(BTreeMap::new), | ||||
|             urgency: flags.urgency.then(BTreeMap::new), | ||||
|             viewstag: flags.viewstag.then(BTreeMap::new), | ||||
| @ -71,6 +76,7 @@ impl Env { | ||||
|     fn fmt(&self) { | ||||
|         if self.title.is_some() | ||||
|             || self.tags.is_some() | ||||
|             || self.mode.is_some() | ||||
|             || self.urgency.is_some() | ||||
|             || self.viewstag.is_some() | ||||
|             || self.layout.is_some() | ||||
| @ -103,7 +109,7 @@ fn main() { | ||||
|                 seat.quick_assign(move |seat, event, mut env| match event { | ||||
|                     wl_seat::Event::Name { name } => { | ||||
|                         if let Some(env) = env.get::<Env>() { | ||||
|                             if env.flags.title | ||||
|                             if (env.flags.title || env.flags.mode) | ||||
|                                 && (env.flags.seat.is_none() | ||||
|                                     || name.eq(env.flags.seat.as_ref().unwrap())) | ||||
|                             { | ||||
| @ -113,7 +119,16 @@ fn main() { | ||||
|                                         move |_, event, mut env| match event { | ||||
|                                             zriver_seat_status_v1::Event::FocusedView { title } => { | ||||
|                                                 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(), | ||||
|                 "--urgency" | "-u" => default.urgency = true, | ||||
|                 "--title" | "-w" => default.title = true, | ||||
|                 "--mode" | "-m" => default.mode = true, | ||||
|                 "--tags" | "-t" => default.tags = true, | ||||
|                 "--layout" | "-l" => default.layout = true, | ||||
|                 "--views-tag" | "-vt" => default.viewstag = true, | ||||
| @ -258,6 +274,7 @@ fn configuration() -> Flags { | ||||
|                     print!("Usage: ristate [option]\n\n"); | ||||
|                     print!("  --tag | -t 			the focused tag\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!("  --views-tag | -vt    		the tag of all views\n"); | ||||
|                     print!("  --seat | -s <string>  	select the seat\n"); | ||||
|  | ||||
		Reference in New Issue
	
	Block a user