AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1147294
Accepted
WinEunuuchs2Unix
WinEunuuchs2Unix
Asked: 2019-05-30 18:56:14 +0800 CST2019-05-30 18:56:14 +0800 CST 2019-05-30 18:56:14 +0800 CST

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

  • 772

听起来很简单;xdotool选择桌面,模拟F5按键并将焦点返回到调用窗口/程序。

谷歌搜索后,虽然它听起来不再简单了。

我需要从 bash / gnome-shell 执行此操作。

有任何想法吗?


这个项目与这个问答有关,由于不同尺寸的显示器,图标从左屏幕下降到一个黑色的整体:

  • 桌面图标刚刚从左屏幕下降到永远不会出现的地方

感谢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

command-line bash window-manager gnome-shell xdotool
  • 1 1 个回答
  • 2490 Views

1 个回答

  • Voted
  1. Best Answer
    Podesta
    2019-05-31T04:13:38+08:002019-05-31T04:13:38+08:00

    @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在类似情况下可能有用的其他一些命令:

    如果您的窗口管理器有一个显示桌面命令,则最小化并恢复所有窗口会很有用。通常设置为ctrl+alt+d:

    xdotool key ctrl+alt+d
    

    如果要保存当前活动的窗口,以便稍后将其恢复,可以使用:

    myWindow="$(xdotool getactivewindow)"
    

    Ti 最小化您可以使用的窗口。将它添加到循环允许您最小化所有窗口,作为 show dekstop 的替代方法。

    xdotool windowminimize $(xdotool getactivewindow)
    

    要使您保存的活动窗口回到焦点:

    xdotool windowactivate "$myWindow"
    

    要关闭活动窗口,请使用:

    xdotool getactivewindow windowkill
    

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

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

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

    • 5

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve