A small Rust library that lets you get position, size, title and a few other properties of the active window on Windows, MacOS and Linux
[dependencies]
active-win-pos-rs = "0.11"use active_win_pos_rs::get_active_window;
fn main() {
match get_active_window() {
Ok(active_window) => {
println!("active window: {:#?}", active_window);
},
Err(()) => {
println!("error occurred while getting the active window");
}
}
}Would give you an instance of ActiveWindow struct with unique window id, process id, window position and window title.
Or use active_win_pos_rs::get_position to get the WindowPosition only.
On MacOS title property will always return an empty string
unless you Enable Screen Recording permission for your app.
On Linux, the library now supports both X11 and Wayland. When running on Wayland (detected via the WAYLAND_DISPLAY environment variable), the library will attempt to get the active window information from the following compositors, in order:
- KDE Plasma (KWin) (via
kdotool) - Hyprland (via
hyprlandipc)
If all Wayland backends fail, or if WAYLAND_DISPLAY is not set, the library falls back to X11/XCB, maintaining full backward compatibility.
To build on Linux, install these system packages first:
libxcb-ewmh-devlibxcb-randr0-devlibdbus-1-devpkg-config
On Debian/Ubuntu:
sudo apt-get update
sudo apt-get install -y libxcb-ewmh-dev libxcb-randr0-dev libdbus-1-dev pkg-config% git clone https://github.com/dimusic/active-win-pos-rs.git
% cd active-win-pos-rs
% cargo build% cargo run --example active-windowOutput:
active window: ActiveWindow {
title: "cmd - cargo run --example active-window",
process_path: "C:\\Program Files\\WindowsApps\\Microsoft.WindowsTerminal_1.16.10262.0_x64__8wekyb3d8bbwe\\WindowsTerminal.exe",
app_name: "WindowsTerminal",
window_id: "HWND(9700584)",
process_id: 8460,
position: WindowPosition {
x: 6.0,
y: 296.0,
width: 1129.0,
height: 635.0,
},
}
This project is supported by a few maker-focused businesses I run and actively use in my workflow. If you work with laser cutting, CNC, or digital art, you might find them useful too.
- MyLaserTools tools and resources for laser cutting, CNC machining, and 3D printing.
- YXE Creations Craft Hub a laser craft supply store for acrylic, plywood, and maker materials.
- Lumicry digital luminous neon and acrylic art powered by LEDs and custom electronics.