You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GNOME Shell扩展中获取显示/工作区尺寸?

GNOME Shell扩展:获取窗口所在显示/工作区尺寸实现水平居中

核心步骤与代码示例

  1. 获取目标窗口对象
    假设你已经通过标题匹配等方式拿到了目标窗口的Meta.Window实例(记为win)。

  2. 获取窗口关联的工作区与显示器

    const workspace = win.get_workspace();
    const monitorIndex = win.get_monitor(); // 获取窗口所在显示器的索引
    
  3. 获取工作区可用区域尺寸
    这个区域会自动排除顶栏、dock等系统UI占用的空间,是用户实际可操作的工作区域:

    const workArea = workspace.get_work_area_for_monitor(monitorIndex);
    // workArea是Meta.Rectangle对象,包含x、y、width、height属性
    

    如果需要获取整个显示器的完整尺寸(不排除系统UI),改用:

    const monitorGeometry = global.display.get_monitor_geometry(monitorIndex);
    
  4. 计算并设置水平居中位置
    基于工作区可用区域计算窗口水平居中的x坐标,然后移动窗口:

    const windowWidth = win.get_width();
    // 水平居中x坐标 = 工作区起始x + (工作区宽度 - 窗口宽度)/2
    const centerX = workArea.x + (workArea.width - windowWidth) / 2;
    
    // 移动窗口(第二个参数为true表示保留窗口尺寸,仅调整位置)
    win.move_frame(true, centerX, win.get_y());
    

关键API说明

  • Meta.Window.get_workspace(): 获取窗口所属的工作区实例
  • Meta.Window.get_monitor(): 获取窗口所在显示器的索引
  • Meta.Workspace.get_work_area_for_monitor(monitorIndex): 获取指定显示器上工作区的可用区域
  • Meta.Display.get_monitor_geometry(monitorIndex): 获取指定显示器的完整几何尺寸

内容的提问来源于stack exchange,提问作者b0bh00d

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:13:09