web-dev-qa-db-ja.com

アプリケーションの起動後にアプリケーションウィンドウを自動的に最大化する方法

Dockyを使用しようとした後、Dockyを削除した後、ブラウザー(Chromium)を最大の高さで開くことができません。 (XFCEデスクトップ)

3
R S

最大化されたアプリケーション(任意)を起動する方法

以下のスクリプトを使用してアプリケーションを起動すると、any application*を最大化して強制的に起動できます。 .desktopファイルの(コピー)のmainコマンドを、スクリプトを実行するコマンド(以下の方法を参照)で置き換えるか、クイックリストショートカットとして追加するか、あなたが望むものを正確に達成してください。

*一部のアプリケーションは、固定された変更不可能なウィンドウサイズを持ち、一部のウィンドウは既に開かれている可能性のあるウィンドウで新しいタブを開く

スクリプトについて

スクリプトは次のコマンドで実行されます。

python3 /path/to/script <application>

スクリプト:

  • 最初にコマンドを実行してアプリケーションを開きます
  • タイミングの問題を防ぐため、アプリケーションの(新しい)ウィンドウが(対応するウィンドウのpididの一致を見つけることにより)wmctrl -lp-コマンドの出力に表示されるのを待ちます(無限ループを防ぐために、わずか15秒間)
  • ウィンドウが表示されたら、次のコマンドでウィンドウを最大化します。

    xdotool windowsize <window_id> 100% 100%
    

コード

#!/usr/bin/env python3
import subprocess
import getpass
import time
import sys

app = sys.argv[1]

user = getpass.getuser()
get = lambda x: subprocess.check_output(x).decode("utf-8")
ws1 = get(["wmctrl", "-lp"]); t = 0
subprocess.Popen(app)
while t < 30:      
    ws2 = [(w.split()[2], w.split()[0]) for w in get(["wmctrl", "-lp"]).splitlines() if not w in ws1]
    procs = sum([[(w[1], p) for p in get(["ps", "-u", user]).splitlines() \
              if app[:15].lower() in p.lower() and w[0] in p] for w in ws2], [])
    if len(procs) > 0:
        subprocess.call(["xdotool", "windowsize", "-sync", procs[0][0] , "100%", "100%"])
        break
    time.sleep(0.5)
    t = t+1

使い方

  1. スクリプトにはwmctrlxdotoolの両方が必要です

    Sudo apt-get install wmctrl xdotool
    
  2. 上記のスクリプトを空のファイルにコピーし、run_maximized.pyとして保存します

  3. 次に、.desktopファイルを編集します。

    • グローバルな.desktopファイルをローカルにコピーします。

      cp /usr/share/applications/chromium-browser.desktop ~/.local/share/applications
      

XFCEバージョン:

  1. geditでファイルを開きます。

    gedit ~/.local/share/applications/chromium-browser.desktop
    

    次の行を参照します。

    Exec=chromium-browser %U
    

    Exec=で始まる最初の行です

    次のように変更します。

    Exec=python3 /path/to/script.py chromium-browser
    

    /path/to/script.pyを実際のパスに置き換える必要がある場所。

  2. ログアウトしてからログインし直してください。今後、ChromiumランチャーはChromiumを最大化して開きます。

Unityバージョン:

  1. geditでファイルを開きます。

    gedit ~/.local/share/applications/chromium-browser.desktop
    

    次の行を参照します。

    Actions=NewWindow;Incognito;TempProfile;
    

    次のように変更します。

    Actions=NewWindow;Incognito;TempProfile;divider1;Open maximized;
    

    ファイルの一番下に以下のセクションを追加します。

    [Desktop Action Open maximized]
    Name=Open maximized
    Exec=python3 /path/to/script.py chromium-browser
    OnlyShowIn=Unity;
    
    [Desktop Action divider1]
    Name=.....................................
    OnlyShowIn=Unity;
    

    /path/to/script.pyを実際のパスに置き換える必要がある場所。

  2. ログアウトして再度ログインします。これから、Chromiumランチャーは次のようになります。

    enter image description here

重要な注意点

.desktopファイルでは、must絶対パスを使用します。たとえば、~は機能しません。これは、.desktop/usr/share/applications~/.local/share/applicationsファイル、およびスタートアップアプリケーション(.desktop~/.config/autostartファイルによって実際に呼び出される)のコマンドに対してカウントされます。

3
Jacob Vlijm