xdotool 如何选择桌面发送 F5 并返回?

xdotool 如何选择桌面发送 F5 并返回?

听起来很简单;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

屏幕显示如下:

标志性2优化.gif

答案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 脚本结合起来,可以自由地实现大多数功能。

相关内容