Um quickway para unminimize todos minimizados via prompt bash ou algum utilitário instalável?

0

Estou usando o compiz-manjaro no XFCE. Funcionando muito bem, exceto pelo fato de que se uma janela é minimizada em uma área de trabalho (ou Viewport como eles chamam no Compiz), ela não aparecerá ao usar qualquer plug-in de janela restrita a essa Viewport (assim, ao alternar entre todas as janelas todas as viewports, janelas minimizadas aparecem, mas quando você está alternando entre as janelas dessa viewport, as janelas minimizadas não aparecem.

Estou tentando resolver essa limitação / bug escrevendo um script que restaure todas as janelas minimizadas, mas não sei qual é a melhor maneira de fazer isso.

Alguém chamado Greg Till escreveu um script python em 2009 que usa o Wnck para maximizar todas as janelas antes de iniciar a Compiz Scale: link (atualizei para que funcionasse), mas foi extremamente lento em fazer isso.

Tanto quanto eu posso dizer, não há nenhuma função para restaurar janelas minimizadas no Compiz, caso contrário, eu teria que definir o pressionamento de tecla para isso e combinar as duas funções no script. Existe uma função pronta no bash ou algum tipo de utilitário que possa instalar e restaurar janelas minimizadas rapidamente?

    
por thebunnyrules 21.11.2016 / 09:41

2 respostas

0

Acabei reescrevendo completamente o roteiro de Greg Till com o objetivo de torná-lo mais leve e eficiente. Eu tirei a funcionalidade que restaura as janelas minimizadas de volta ao seu estado original minimizado depois de executar o plugin de escala, como eu não considerava essencial e foi inchar o script.

Eu testei o novo script em meu laptop muito fraco de 7 anos e no meu desktop de jogos de última geração. Com base na minha experiência, eu recomendaria esse script para qualquer pessoa que tivesse uma área de trabalho com mais de 5 anos. A maioria dos laptops é muito mais lenta do que os desktops, então eu não recomendaria esse script para ninguém que não tenha um relativamente recente ou um laptop de jogos como o Eurocoms, Saeger, PC de origem, AW 15in ou 17in (mas não o 11in) aqueles).

Todas as instruções de instalação estão nos comentários do script no começo.

#!/usr/bin/env python

# Written by: Fadi R (November 2016)

# Rewrite of Greg Till's 2009 python script which get's around compiz's minimized window switching limitation
# Original Script and Thread here: https://ubuntuforums.org/showthread.php?t=976002
# Public domain software

# Installation: 

# Install the following packages: libwnck3, xdotool, wmctrl
# In Compiz, go to Scale plugin and set "initiate window picker" to the following key combo: Ctrl-Super-Alt 1
#   if you are unhappy with combo, just change it to what you want at the end of script.
# go to "Command Plugin" and make a new command. For the actual command line itself, input /path/to/this/script/./scale.py 
#   (don't forget to give this script execute permission), once you're done with that, bind the new 
#   command to the key combination you usually use to start the scale plugin (for example Alt-Tab. Same deal for corners 
#   and buttons if you use them.

#  This script is for fast machines. I wouldn't use it on a 7 year old portable for example, it will add alot of lague.
#  On the other hand, there will be little to no lague on a relatively recent desktop or a even more recent gaming laptop 
#  with a non-bs/mobile CPU/GPU (I'm talking to you Dell).

import gi
gi.require_version('Wnck', '3.0')
from gi.repository import Wnck
import os
import subprocess


def determine_minimized(windows):
    #Determine which windows in a given list are minimized
    minimizedWindows = []
    for window in windows:
    if window.is_minimized():
            minimizedWindows.append(window)
    return minimizedWindows



def main():
        # ************************************************************************
        # Unminimize all minimized viewport windows
        # ************************************************************************
    eligibleWindows = []
    screen = Wnck.Screen.get_default()
    screen.force_update()
    allWindows = screen.get_windows_stacked()
    workspace = screen.get_active_workspace()
    for window in allWindows:
        if window.is_in_viewport(workspace):
            eligibleWindows.append(window)

    if eligibleWindows:
        minimizedWindows = determine_minimized(eligibleWindows)
    else:
        os._exit(0)


    if minimizedWindows:
            for window in minimizedWindows:
                subprocess.call('wmctrl -ia ' + str(window.get_xid()), shell=True)



    # ************************************************************************
    # Launch the Scale plugin of the Compiz window manager using hotkeys via xdotool

    subprocess.call("xdotool keydown Control keydown Super keydown Alt key 1 keyup Alt keyup Super keyup Control", shell=True)  




if __name__ == '__main__':
    main()
    os._exit(1)
    
por 07.12.2016 / 12:16
1

Espero que o seguinte comando faça o seguinte: xdotool search --onlyvisible --name '.*' windowactivate %@ . Um rápido desdobramento: xdotool é o utilitário que estamos usando para manipular janelas e cursores e eventos de teclado do terminal. A primeira parte do comando, search --onlyvisible --name '.*' , seleciona as janelas com as quais queremos interagir. O search é bastante autoexplicativo, --onlyvisible , significa que queremos pesquisar apenas as janelas que podem ben mostradas (primeira tentativa sem as opções --onlyvisible tentaram desimputar coisas como gnome-settings , quebrando completamente minha sessão), e --name '.*' está lá apenas porque temos para dar um critério de correspondência no nome da janela, nome da classe ou classe, por isso dizemos que queremos janelas correspondentes à .* expressão regular, significando qualquer número de tempo qualquer caractere, ou seja, literalmente tudo. A segunda parte, windowactivate %@ , significa que queremos aumentar / desminimizar ( windowactive ) todas as janelas retornadas pela pesquisa anterior ( %@ ).

    
por 21.11.2016 / 14:58