Win*_*nix 5 command-line bash window-manager xdotool gnome-shell
听起来很简单;xdotool选择桌面,模拟F5按键并将焦点返回到调用窗口/程序。
谷歌搜索后虽然听起来不再简单。
我需要从 bash / gnome-shell 执行此操作。
有任何想法吗?
这个项目与这个 Q&A 相关,因为不同尺寸的显示器,图标从左屏幕掉成一个黑色的整体:
感谢Podesta 的帮助,我创建了此代码:
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
Run Code Online (Sandbox Code Playgroud)
这是屏幕的样子:
@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
Run Code Online (Sandbox Code Playgroud)
xdotools在类似情况下可能有用的其他一些命令:
如果您的窗口管理器有显示桌面命令,那么最小化并恢复所有窗口会很有用。通常设置为ctrl+alt+d:
xdotool key ctrl+alt+d
Run Code Online (Sandbox Code Playgroud)
如果您想保存当前活动的窗口,以便稍后将其恢复,您可以使用:
myWindow="$(xdotool getactivewindow)"
Run Code Online (Sandbox Code Playgroud)
Ti 最小化您可以使用的窗口。将其添加到循环中可以让您最小化所有窗口,作为 show dekstop 的替代方法。
xdotool windowminimize $(xdotool getactivewindow)
Run Code Online (Sandbox Code Playgroud)
要将您保存的活动窗口带回焦点:
xdotool windowactivate "$myWindow"
Run Code Online (Sandbox Code Playgroud)
要关闭活动窗口,请使用:
xdotool getactivewindow windowkill
Run Code Online (Sandbox Code Playgroud)
最重要的是,您可以在活动窗口中使用所有这些命令,您实际上可以搜索并应用于特定情况。例如,根据标题搜索此特定窗口。
xdotool search --desktop 0 --name "command line - xdotool" windowactivate
Run Code Online (Sandbox Code Playgroud)
有许多不同的搜索窗口的方法,基于标题、类别、它们是否可见等。它还可以操作窗口位置和鼠标。xdotol 的联机帮助页非常全面。将它们与 bash 脚本结合起来可以为实现大多数事情提供足够的自由。