AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[wmctrl](unix)

Martin Hope
Stephen Boston
Asked: 2024-04-01 01:32:57 +0800 CST

wmctrl 将窗口移动到工作区

  • 7

我正在尝试使用wmctrl将窗口移动到工作区。

通过wmctrl -l窗口是

 0x03e00057  9 meer montazo - Google Search — Mozilla Firefox

命令和输出是

 /usr/local/bin/wmctrl -v -i 0x03e00057 -t 3
 envir_utf8: 0
 No window was specified.

我的理解是它-i指向窗口的十六进制ID(输出列表中的第一个字段?),在我简单的头脑中我在这里做的。我哪里迷路了?

wmctrl
  • 1 个回答
  • 17 Views
Martin Hope
PatrickSteiner
Asked: 2019-06-24 10:18:45 +0800 CST

如何使用 `wmctrl` 通过 PID 调整窗口大小和移动窗口?

  • 2

我正在使用 21:9 显示器并编写了一个脚本,使用键盘快捷键将我的窗口平铺/对齐到显示器的左侧、中心和右侧:

┌─────────┬─────────┬─────────┐
│ window1 │ window2 │ window3 │
│ left    │ centre  │ right   │
│ aligned │ aligned │ aligned │
└─────────┴─────────┴─────────┘

该脚本通过获取当前聚焦窗口的名称来工作:
WINDOW_NAME=$(xdotool getwindowfocus getwindowname)
并使用其窗口名称对齐窗口:
wmctrl -ir "$WINDOW_NAME" -e 1,$X_OFFSET,$Y_OFFSET,$X_WIDTH,$Y_HEIGHT

问题是,当打开多个具有相同窗口名称的窗口(例如 2 个 Firefox 浏览器或 3 个终端等)时,它不会移动当前焦点窗口,而是从所有具有相同名称的窗口中移动,即第一个打开的窗口.

即假设我打开了 3 个终端,并且我想要对齐终端 T2,脚本将对齐 T1 而不是 T2,因为首先打开了 T1。

所以我的想法是使用进程ID(PID)而不是使用窗口名称,因为与窗口名称不同,PID是唯一的。问题是:是否可以wmctrl使用 PID?

在我的手册页中,wmctrl我找到了-i将变量解释<WIN>为数字而不是字符串名称的选项。

$ man wmctrl 
[...]
    -e <MVARG>
      Resize  and  move  a  window  that  has been specified with a -r
      action according to the <MVARG> argument.
[...]
    -r <WIN>
      Specify a target window for an action.
[...]
    -i     
      Interpret window arguments (<WIN>) as  a  numeric  value  rather
      than  a  string name for the window. If the numeric value starts
      with the prefix '0x' it is assumed to be a hexadecimal number.
[...]

我真的不明白这个-i选项的含义,并认为这可能意味着可以使用 PID 而不是窗口名称:

WINDOW_ID=$(xdotool getactivewindow getwindowpid)
WINDOW_ID=$(printf 0x%x $WINDOW_ID)
wmctrl -ir "$WINDOW_ID" -e 1,$X_OFFSET,$Y_OFFSET,$X_WIDTH,$Y_HEIGHT

不幸的是,这不起作用(无论是十进制数,还是十六进制数)。

Q1:是否可以使用wmctrlPID 而不是窗口名称?
Q2:这个-i选项实际上是什么意思?

wmctrl
  • 1 个回答
  • 3018 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve