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

WinEunuuchs2Unix

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

这是屏幕的样子:

标志性 2 优化.gif

波德斯塔

Script below work of @WinEunuuchs2Unix and is the final solution. My original answer is at the end.

#!/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

A few other xdotools commands that can be useful in similar situation:

If your window manager has a show desktop command, it can be useful to minimize, and bring back all windows. Usually it is set to ctrl+alt+d:

xdotool key ctrl+alt+d

If you want to save the currently active window, to later bring it back, you can use:

myWindow="$(xdotool getactivewindow)"

Ti minimize a window you can use. Adding it to a loop allows you to minimize all windows, as an alternative to the show dekstop.

xdotool windowminimize $(xdotool getactivewindow)

To bring the active window you saved back to the focus:

xdotool windowactivate "$myWindow"

To close the active window use:

xdotool getactivewindow windowkill

最重要的是,您可以在活动窗口中使用所有这些命令,您实际上可以搜索并应用于特定情况。例如,根据标题搜索此特定窗口。

xdotool search --desktop 0 --name "command line - xdotool" windowactivate

有许多不同的搜索窗口的方法,基于标题、类别、它们是否可见等。它还可以操作窗口位置和鼠标。xdotol 的联机帮助页非常全面。将它们与 bash 脚本结合起来可以为实现大多数事情提供足够的自由。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从终端向GUI程序发送击键(F5)?

如何在Visual Studio中选择基于F5构建的项目?

命令行命令以刷新GUI桌面,就像按F5时一样?

反应| 如何检测页面刷新(F5)

如何在F5按键上调用JavaScript

如何将<prefix> +绑定到F5?

如何使用vbscript自动按F5键?

为什么我在vscode中点击F5运行程序时没有选择

在使用Python的vscode中,ctrl + F5总是要求“选择环境”

xdotool 桌面问题

如何在 UI5 中按 F5 鍵執行自己的操作?

Masonry在moblie浏览器(chrome)上不起作用,并且仅当我重新加载(ctrl + f5)页面而不在刷新(f5)上时才在Chrome桌面版本上起作用

如何配置gedit以使用F5执行不同的语言?

如何防止在F5上的Spring MVC中确认警报

刷新页面时如何防止重新提交表单(F5 / CTRL + R)

如何区分刷新(通过F5 /刷新按钮)和关闭浏览器?

如何使用AngularJS刷新(F5)并获取另一个页面?

在 AngularJs 中重新加载时如何具有与 F5 相同的行为

用户使用f5重新加载页面时,如何正确进行角度处理?

如何在JxBrowser中重新加载“ Ctrl + F5”页面

如何通过页面刷新(F5)而不是按下按钮来识别回发?

如何使用刷新(F5)更新api背景圖片?

浏览器的“ F5”和“ Ctrl + F5”刷新会产生什么请求?

当F9在查询结果窗口中返回正确的值时,为什么F5在脚本输出窗口中返回四舍五入的数字

如何从bash脚本发送KDE5桌面通知?

如何更改键盘快捷键 - F5 到 Ctrl + Enter 在 SQL Server Management Studio 中执行 SQL 命令

vim:如何将<F5>映射到在光标所在的当前单词之前加上时间戳?

如何修复:KeyError: '__file__' in sitecustomize.py (anaconda3) 使用运行文件 (F5)

控制台立即通过CTRL + F5关闭