#active #open #window #position #current

x-win

本软件包允许您获取 Windows、MacOS 和 Linux 上活动窗口和打开窗口的精确信息。您可以获取窗口的位置、大小、标题和其他内存信息。

2 个稳定版本

1.10.2 2024 年 8 月 9 日
1.10.1 2024 年 8 月 7 日

#265 in 网页开发

Download history 211/week @ 2024-08-05 13/week @ 2024-08-12

224 每月下载量

MIT 许可证

89KB
2.5K SLoC

x-win

CI crates.io version docs License

本软件包使您能够轻松获取活动窗口或打开窗口的数组。它在 Microsoft Windows (10, 11)、Linux (带有 X 服务器)Linux (带有 Gnome < 45)macOS 10.6+ 上运行。

获取当前活动窗口的信息

examples/get_active_window.rs:

use x_win::{get_active_window, XWinError};

fn main() {
  match get_active_window() {
    Ok(active_window) => {
      println!("active window: {:#?}", active_window);
    }
    Err(XWinError) => {
      println!("error occurred while getting the active window");
    }
  }
}

响应:

active window: WindowInfo {
    id: 23624,
    os: "win32",
    title: "● README.md - x-win - Visual Studio Code",
    position: WindowPosition {
        x: -8,
        y: -8,
        width: 1936,
        height: 1048,
        is_full_screen: true,
    },
    info: ProcessInfo {
        process_id: 23624,
        path: "C:\\Users\\miniben\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe",
        name: "Code",
        exec_name: "Code",
    },
    usage: UsageInfo {
        memory: 129138688,
    },
    url: "",
}

获取带有信息的打开窗口列表

examples/get_active_window.rs:

use x_win::{get_open_windows, XWinError};

fn main() {
  match get_open_windows() {
    Ok(open_windows) => {
      println!("open windows: {:#?}", open_windows);
    }
    Err(XWinError) => {
      println!("error occurred while getting open windows");
    }
  }
}

响应:

open windows: [
    WindowInfo {
        id: 23624,
        os: "win32",
        title: "● README.md - x-win - Visual Studio Code",
        position: WindowPosition {
            x: -8,
            y: -8,
            width: 1936,
            height: 1048,
            is_full_screen: true,
        },
        info: ProcessInfo {
            process_id: 23624,
            path: "C:\\Users\\miniben\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe",
            name: "Code",
            exec_name: "Code",
        },
        usage: UsageInfo {
            memory: 128770048,
        },
        url: "",
    },
]

WindoInfo 获取图标

examples/get_window_icon.rs:

use x_win::{get_active_window, get_window_icon, XWinError};

fn main() {
  match get_active_window() {
    Ok(active_window) => match get_window_icon(&active_window) {
      Ok(icon_info) => {
        println!("icon info: {:#?}", icon_info);
      }
      Err(XWinError) => {
        println!("error occurred while getting the icon info of active window");
      }
    },
    Err(XWinError) => {
      println!("error occurred while getting the active window");
    }
  }
}

响应:

icon info: IconInfo {
    data: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFLElEQVR4Ae3gAZAkSZIkSRKLqpm7R0REZmZmVlVVVVV3d3d3d/fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMdHd3d3dXV1VVVVVmZkZGRIS7m5kKz0xmV3d1d3dPz8zMzMxMovhP8GKf92uvOj7skV+7bHpwUTG7+99/64c/+mN4Xoj/YC/2eb/2qk8cy69MsNXNZzz0JV8KgGm9bj574Uee9sGPeDeeDfEf6LFf+Jvv/aSlv26CLZ7pka/4SjxQW69bnrvwI0//4Ee8G4D4D/Lgz/7Vj7x1Kl/Dc3nkK70iz8+0Glq54+43EP8BHvRZv/oRz5jia3k+HvlKr8QLkkeru8S/06nP+NWfON/0trwAj3ylV+aFQPw7nPz0X/3xC6m344V4xCu+Mi8E4t/gEZ/xi6fuy/LDl1Kvz7/gEa/4KrwQCODUV//Dt5+X3g9g0/7TG+w3ffLHvPh5no9HfMYvnrp9Kr+/Mo/mRfCIV3pVXgh06qv+4dvOi/fnAQoc3GS/4zM+5sV/iQd4xGf84qnbx/j9lfVo/gUFHzx0u/sMHvuKX8ULhja+6u//+Ai9Es/HafvLz33si38CwIM+9Rdf8e4sPzWkb+BfMA+ecG3ke936BW/yD4/4yYMDXjC09ZV//ysH8Ia8AIv0H19zePYzbz9c/0Sabf4Fx4p/7JqOD3ny573pedubj/iJ/QNeMPSIr/r7U7clv7eGx/CCZEsunA2mgRckYP908Sfd98Vv9k08k+2NR/zE/iEvGAJ4xFf9/anbmn9vjR7DC7N3EY72eW4z+fGnw+9955e8+Z/yALY3HvHj+4e8YIgH2P6yv/uRfXhHXpjVEi6dBycA28GPbqt9yF1f+pYXeC62Fw//sf0jXjDEc9n60r/94QP0TrwwbYLdcxyflp+8+xVv+SW8ALYXD//R/SNeMMRz2fz4n/uhw82T78zGNv+SnfQn733KS30JL4Dt+cN/ZH/JC4Z4gM2P+7kfOkzeGYDFFuyc4l+yCT98DD7srk9+yQs8F9vzh//I/pIXDAHc8Ak/e/LsxO+O5sV4oMUW7JzmX9KJfzhmv/e5T3mpP+cBbM8e9sP7K14wdMMn/OzJs6N/d7RejOenn8PxM4kieCEEe8fEJ+x+ykt9K89ke/awH9pf8YKh2Uf/zC+skzflBejkP9g6dcNn7pbZTxl2+Bcs4IdOFD78rk9+qQu2+4f94N6aFwx1H/XTvz+aV+P52BBfePQ1b/1pAMc//69fbl/66WbfxL+gir/fMu998dNe6u8e9oN7a14wNP/In/qGlfWhPIBgb7v47fa++m1+nQfY+dy/OnEk/e4EL86/QGLveNUnHr/pwd/MC4YAZh/xU1+/Nh8GUMXvb8hvufe1b3uR52Pnc//qxKH0uw1enBfBQx78EF4IxL/Bzuf+1YklfO8Ib86/4CEPfigvBOLfofucv/q+Ed6dF+IhD34oLwTi36l+1l9+3yTenRfgwQ95GC8E4j9A/1l/+b4DfAfPx4Mf8jBekDaMt4n/IN1n/uX7jvAdPJcHP+ShPD9tatNyf+91xX+g+hl/8TYTfBdwjGd68EMexgO1aZqWR0ffe+6jb3k/APEfrH7GX7zMZH4LOFZrx4233AJAG6dptTz63nMffcv78WyI/wyf+ucvfc1113210aNLhMdx+O7zH/OgT+F58Y/bubsQq+kGhwAAAABJRU5ErkJggg==",
    height: 32,
    width: 32,
}

Linux

开发目的需要安装依赖项。

sudo apt install libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxcb-shm0-dev pkg-config build-essential

⚠️警告 需要libc.so.6

⚠️警告 Linux 上不可用恢复 URL

GNOME

GNOME 使用 wayland。

为了恢复数据,您需要安装并激活为运行 GNOME 版本 41 或更高版本的系统设计的扩展(从该版本开始评估已禁用)。

可以使用 x_win::install_extension() 函数安装扩展,该函数将其存储在 ~/.local/share/gnome-shell/extensions/[email protected]

执行此函数后,重要的是要 重新启动用户会话 以加载新扩展,然后使用 x_win::enable_extension() 启用它以使用 x-win。

GNOME 发行版。 已测试
Fedora Workstation 39
Ubuntu 22.04.4 桌面
Debian 12 桌面

Darwin

本软件包只能与 darwin 版本 10.6+ 一起使用。

屏幕录制权限是在 macOS 10.15 Catalina 中引入的

macOS 需要您授予屏幕录制访问权限。如果您的项目没有,则标题将为空值。

URLs(仅适用于 Darwin 和 Windows 系统)

对于 macOS 和 Windows,可以获取浏览器窗口的 URL。

Windows

浏览器名称 已测试
firefox
firefox 开发者版本
google chrome
microsoft edge
opera software - opera
opera software - opera GX
brave
vivaldi
iron
epic
chromium
ucozmedia
blisk
maxthon
beaker
beaker browser

macOS

它将使用 AppleScript 获取铬浏览器和 Safari 的信息

目前不支持 Firefox 和 Firefox 开发者版本

浏览器名称 已测试
Safari
Safari 技术预览
Google Chrome
Google Chrome 测试版
Google Chrome 开发版
Google Chrome 金丝雀版
Brave 浏览器
Brave 浏览器 测试版
Brave 浏览器 夜间版
microsoft edge
Microsoft Edge 测试版
Microsoft Edge 开发版
Microsoft Edge 金丝雀版
Mighty
Ghost 浏览器
Bookry Wavebox
Pushplaylabs Sidekick
Opera 软件 - Opera
Opera 软件 - OperaNext
Opera 软件 - OperaDeveloper
Opera 软件 - OperaGX
Vivaldi

项目参考

项目灵感

依赖关系

~0.2–43MB
~670K SLoC