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)