[英]How to open a program by bash script direct on a workspace which is not the most active workspace
[英]How can I query the number of the virtual desktop on which the bash script is running in Linux Mint via bash?
环境:
Linux Mint, Cinnamon desktop manager, with multiple workspaces=virtual desktops, e.g. 4.
Bash script
已知的是:
How to determine the number of workspaces:
wmctrl -d | wc -l
我需要的:
Get the number of virtual desktops the bash script is running on with a pure bash as var (like with grep, not awk or similar) and echo the var.
使用awk
(恕我直言仍然是手头任务最合适的选择):
nr_of_active_workspace=$(wmctrl -d | awk '/\*/{print $NF}')
echo $nr_of_active_workspace
或pure bash
解决方案:
nr_of_active_workspace=$(wmctrl -d | while read -r line; do [[ $line =~ '*' ]] && echo ${line: -1} ; done)
echo $nr_of_active_workspace
根据 KamilCuk 的回答,可以按照以下方式输出包含活动桌面编号的行:
nr_of_active_desktop=activedesktop=$(wmctrl -d | grep "*" | rev | cut -d ' ' -f1)
echo $nr_of_active_desktop
遵循需要 awk 的解决方案:
nr_of_active_workspace=$(wmctrl -d | grep "*" | awk '{print $11}')
echo $nr_of_active_workspace
它可以是不需要 awk 的解决方案,也可以通过其他方式解决。
您可以使用 POSIX shell 功能和xprop(1)
命令来获取这两个详细信息,而无需其他外部实用程序。
要获取当前/活动桌面的 ID 号:
curdesk=$(xprop -root -notype _NET_CURRENT_DESKTOP)
curdesk="${curdesk##* }"
要获取定义的桌面计数/数量:
deskcnt=$(xprop -root -notype _NET_NUMBER_OF_DESKTOPS)
deskcnt="${deskcnt##* }"
两者都依赖于xprop(1)
以“ foo = 0
”的形式给出答案(以空格分隔),并使用 shell 模式匹配参数扩展来匹配以空格结尾的最长的 substring,并将其删除,只留下最后一个标记 (等号后的值)。
请注意,桌面从 0(零)开始编号,因此计数将比最后一个桌面的 ID 号大 1。
这应该适用于任何遵守扩展 Window 管理器提示 (EWMH) 规范的 window 管理器(这些天实际上是所有这些规范):
https://specifications.freedesktop.org/wm-spec/1.3/ar01s03.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.