如何在GNOME Shell扩展中获取显示/工作区尺寸?
GNOME Shell扩展:获取窗口所在显示/工作区尺寸实现水平居中
核心步骤与代码示例
获取目标窗口对象
假设你已经通过标题匹配等方式拿到了目标窗口的Meta.Window实例(记为win)。获取窗口关联的工作区与显示器
const workspace = win.get_workspace(); const monitorIndex = win.get_monitor(); // 获取窗口所在显示器的索引获取工作区可用区域尺寸
这个区域会自动排除顶栏、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);计算并设置水平居中位置
基于工作区可用区域计算窗口水平居中的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
相关产品推荐
相关产品推荐

