This commit is contained in:
Dan Ponte 2023-01-15 11:30:19 -05:00
commit 9321188947
4 changed files with 120 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

72
Cargo.lock generated Normal file
View File

@ -0,0 +1,72 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "byteorder"
version = "1.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "i3ipc"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63f3dac00c473fae88cb3114f35312204469a32ffb20874264a5214d6c8c927e"
dependencies = [
"byteorder",
"log",
"serde",
"serde_json",
]
[[package]]
name = "itoa"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440"
[[package]]
name = "log"
version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
"cfg-if",
]
[[package]]
name = "ryu"
version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde"
[[package]]
name = "serde"
version = "1.0.152"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb"
[[package]]
name = "serde_json"
version = "1.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883"
dependencies = [
"itoa",
"ryu",
"serde",
]
[[package]]
name = "swarp-rs"
version = "0.1.0"
dependencies = [
"i3ipc",
]

9
Cargo.toml Normal file
View File

@ -0,0 +1,9 @@
[package]
name = "swarp-rs"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies.i3ipc]
version = "0.10.1"

38
src/main.rs Normal file
View File

@ -0,0 +1,38 @@
//! Swaps windows for i3
extern crate i3ipc;
use i3ipc::I3Connection;
fn run_or_log(conn: &mut I3Connection, cmd: &str) {
let outcomes = conn.run_command(cmd).expect("command fail").outcomes;
for outcome in outcomes {
if !outcome.success {
if let Some(e) = outcome.error.as_ref() {
println!("{}", e);
}
}
}
}
fn main() {
let mut conn = I3Connection::connect().expect("failed to connect");
let outputs = conn.get_outputs().expect("cannot get outputs");
let mut active_workspaces: Vec<&str> = Vec::new();
for output in &outputs.outputs {
if output.active {
if let Some(ws) = &output.current_workspace {
active_workspaces.push(&ws);
}
}
}
run_or_log(&mut conn, &("workspace ".to_owned() + active_workspaces[0]));
run_or_log(&mut conn, "move workspace to output right");
run_or_log(&mut conn, &("workspace ".to_owned() + active_workspaces[1]));
run_or_log(&mut conn, "move workspace to output right");
}