AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 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 como selecionar desktop enviar F5 e retornar?

  • 772

Parece simples; xdotoolseleciona a área de trabalho, simula F5o pressionamento de tecla e retorna o foco para a janela / programa de chamada.

Depois de pesquisar no Google, não parece mais simples.

Eu preciso fazer isso de bash / gnome-shell.

Alguma ideia?


Este projeto está relacionado a esta sessão de perguntas e respostas em que os ícones caem da tela esquerda em um todo preto por causa de monitores de tamanhos diferentes:

  • Os ícones da área de trabalho caíram da tela esquerda para a terra do nunca

Graças à ajuda de Podesta, criei este código:

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

É assim que a tela se parece:

icônico 2 otimizado.gif

command-line bash window-manager gnome-shell xdotool
  • 1 1 respostas
  • 2490 Views

1 respostas

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

    Script abaixo do trabalho de @WinEunuuchs2Unix e é a solução final. Minha resposta original está no final.

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

    Alguns outros xdotoolscomandos que podem ser úteis em situações semelhantes:

    Se o seu gerenciador de janelas tiver um comando show desktop, pode ser útil minimizar e trazer de volta todas as janelas. Geralmente é definido como ctrl+alt+d:

    xdotool key ctrl+alt+d
    

    Se você quiser salvar a janela ativa no momento, para trazê-la de volta mais tarde, você pode usar:

    myWindow="$(xdotool getactivewindow)"
    

    Ti minimizar uma janela que você pode usar. Adicioná-lo a um loop permite minimizar todas as janelas, como uma alternativa ao show dekstop.

    xdotool windowminimize $(xdotool getactivewindow)
    

    Para trazer a janela ativa que você salvou de volta ao foco:

    xdotool windowactivate "$myWindow"
    

    Para fechar a janela ativa, use:

    xdotool getactivewindow windowkill
    

    E o mais importante, todos os comandos que você pode usar com a janela ativa, você pode realmente pesquisar e aplicar a casos específicos. Por exemplo, pesquisar esta janela específica com base no título.

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

    Existem muitas maneiras diferentes de procurar janelas, com base no título, na classe, se estão visíveis, etc. Também pode manipular as posições das janelas e do mouse. A página de manual do xdotol é muito abrangente. Combiná-los com um script bash daria muita liberdade para alcançar a maioria das coisas.

    • 5

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve