听起来很简单;xdotool
选择桌面,模拟F5按键并将焦点返回到调用窗口/程序。
但经过谷歌搜索之后,它听起来不再简单了。
我需要从 bash / gnome-shell 执行此操作。
有任何想法吗?
该项目与此问答相关,由于显示器尺寸不同,图标从左侧屏幕掉落到一个黑色的整体中:
谢谢波德斯塔的帮助我创建了这个代码:
TestIcons () {
[[ $TestSeconds == "" ]] || [[ $TestSeconds == 0 ]] && TestSeconds=5
local i Position File
for (( i=0; i<${#IconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
File="$ICONS_DIR"/"${IconsArr[((i+ICON_NAME_NDX))]}"
Position="${IconsArr[((i+ICON_COL_NDX))]},${IconsArr[((i+ICON_ROW_NDX))]}"
gvfs-set-attribute -t string "$File" \
'metadata::nautilus-icon-position' "$Position"
done
wmctrl -k on # Show desktop
xdotool key F5 # Refresh desktop (show icon new positions)
sleep $TestSeconds # Pause for view
wmctrl -k off # Restore windows
for (( i=0; i<${#OldIconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
File="$ICONS_DIR"/"${OldIconsArr[((i+ICON_NAME_NDX))]}"
Position="${OldIconsArr[((i+ICON_COL_NDX))]},${OldIconsArr[((i+ICON_ROW_NDX))]}"
gvfs-set-attribute -t string "$File" \
'metadata::nautilus-icon-position' "$Position"
done
wmctrl -k on # Show desktop
xdotool key F5 # Refresh desktop (show icon new positions)
wmctrl -k off # Restore windows
} # TestIcons
屏幕显示如下:
答案1
脚本的工作如下@WinEunuuchs2Unix这是最终的解决方案。我原来的答案在最后。
#!/bin/bash
TestIcons () {
[[ $TestSeconds == "" ]] || [[ $TestSeconds == 0 ]] && TestSeconds=5
local i Position File
for (( i=0; i<${#IconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
File="$ICONS_DIR"/"${IconsArr[((i+ICON_NAME_NDX))]}"
Position="${IconsArr[((i+ICON_COL_NDX))]},${IconsArr[((i+ICON_ROW_NDX))]}"
gvfs-set-attribute -t string "$File" \
'metadata::nautilus-icon-position' "$Position"
done
wmctrl -k on # Show desktop
xdotool key F5 # Refresh desktop (show icon new positions)
sleep $TestSeconds # Pause for view
wmctrl -k off # Restore windows
for (( i=0; i<${#OldIconsArr[@]}; i=i+ICON_FLD_CNT )) ; do
File="$ICONS_DIR"/"${OldIconsArr[((i+ICON_NAME_NDX))]}"
Position="${OldIconsArr[((i+ICON_COL_NDX))]},${OldIconsArr[((i+ICON_ROW_NDX))]}"
gvfs-set-attribute -t string "$File" \
'metadata::nautilus-icon-position' "$Position"
done
wmctrl -k on # Show desktop
xdotool key F5 # Refresh desktop (show icon new positions)
wmctrl -k off # Restore windows
}
TestIcons
xdotools
在类似情况下可能有用的其他一些命令:
如果您的窗口管理器有 show Desktop 命令,则最小化并恢复所有窗口会很有用。通常将其设置为ctrl+alt+d
:
xdotool key ctrl+alt+d
如果您想保存当前活动窗口,以便稍后将其恢复,您可以使用:
myWindow="$(xdotool getactivewindow)"
Ti 最小化您可以使用的窗口。将其添加到循环中允许您最小化所有窗口,作为显示桌面的替代方案。
xdotool windowminimize $(xdotool getactivewindow)
要将您保存的活动窗口重新置于焦点:
xdotool windowactivate "$myWindow"
要关闭活动窗口,使用:
xdotool getactivewindow windowkill
最重要的是,所有这些可用于活动窗口的命令,您实际上都可以搜索并应用于特定情况。例如,根据标题搜索此特定窗口。
xdotool search --desktop 0 --name "command line - xdotool" windowactivate
有很多不同的方法可以搜索窗口,根据标题、类别、是否可见等。它还可以操纵窗口位置和鼠标。xdotol 的手册页非常全面。将它们与 bash 脚本结合起来,可以自由地实现大多数功能。