私はXFCEでcompiz-manjaroを使用しています。ウィンドウがデスクトップ(またはCompizから呼び出されるビューポート)で最小化されている場合、そのビューポートに制限されたウィンドウ切り替えプラグインを使用しても表示されないことを除いて、うまく機能します。すべてのウィンドウ)すべてのビューポート、最小化されたウィンドウが表示されますが、そのビューポートのウィンドウを切り替えると、最小化されたウィンドウは表示されません。
最小化されたウィンドウをすべて復元するスクリプトを作成してこの制限/バグを解決しようとしていますが、最善のアプローチが何であるかわかりません。
Greg Tillという人が2009年にCompiz Scaleを起動する前に、Wnckを使用してすべてのウィンドウを最大化するPythonスクリプトを作成しました。http://pastebin.com/mCRKZkVb(動作するように更新しました。)しかし、これは非常に遅い速度です。
私が知っている限り、Compizには最小化されたウィンドウを復元する機能はありません。それ以外の場合は、キーストロークを設定し、両方の機能をスクリプトに結合しました。最小化されたウィンドウをすばやく復元できるように、bashに事前に作成された機能やインストールできるユーティリティはありますか?
答え1
次のコマンドでこの問題が解決することを願っていますxdotool search --onlyvisible --name '.*' windowactivate %@
。 Quick Breakdown:xdotool
端末でウィンドウ、カーソル、キーボードイベントを操作するために使用するユーティリティです。コマンドの最初の部分は、search --onlyvisible --name '.*'
対話するウィンドウを選択します。これはsearch
説明を必要とせず、--onlyvisible
私たちはその項目だけを検索したいという意味です。できるこれが表示されます(最初の試みには、--onlyvisible
gnome設定などの操作を最小限に抑えず、セッションを完全に台無しにするオプションはありませんでした)--name '.*'
。持つ.*
ウィンドウ名、クラス名、またはクラスの一致基準が与えられたら、ウィンドウは正規表現と一致したいと言います。これは文字通りすべての文字数を意味します。 2番目の部分は、前の検索()から返されたすべてのウィンドウをwindowactivate %@
上げるか最小化解除()することを意味します。windowactive
%@
答え2
私はGreg Tillのスクリプトをより軽くて効率的にするために完全に書き直しました。ズームプラグインを実行した後、最小化されたウィンドウを元の最小化された状態に復元する機能を削除しました。なぜなら、それは重要ではないと思い、それがスクリプトを膨らませるからです。
私は7年前のラップトップと最先端のゲームデスクトップで新しいスクリプトをテストしました。私の経験に基づいて、5年以上デスクトップを使用しているすべての人にこのスクリプトをお勧めします。ほとんどのラップトップはデスクトップよりはるかに遅いため、比較的新しくないノートブックやEurocoms、Saeger、Origin PC、AW 15インチまたは17インチ(11インチではない)などの強力なゲーム用ラップトップはお勧めできません。このスクリプトをその人に)。
すべてのインストール手順は、スクリプトの最初のコメントにあります。
#!/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)