トリック
メイン画面とセカンド画面に別々に壁紙を設定することは不可能のようです。どのようなことができますが行われることは、壁紙を設定し、それは二つの画面の上にまたがることです。選択した2つの壁紙のスパニングイメージを自動的に作成し、2番目の画面が接続されているかどうかに応じて、壁紙と画像オプションを自動的に切り替えることができます。
見栄えを良くするには、少なくとも両方の画面の垂直画面解像度が同じであることが必要です。これはあなたの状況に当てはまります。
実際には
準備
このソリューションでは、次の準備作業が必要です。
まず、imagemagickをインストールして、自動的にスパニングイメージを作成します。
sudo apt-get install imagemagick
両方の画面に、選択した2つの個別の背景画像を準備します。
- 寸法は、画面の寸法と完全に一致する必要があります(あなたの場合は16:9)
- 両方の画像の垂直解像度は正確に同じでなければなりません。
それらscreen_1.jpeg
を呼び出してscreen_2.jpeg
(正確にそれらの名前)。スクリプトがスパニングイメージを作成します。
ホームディレクトリにフォルダーを作成し、両方の画像をそのフォルダーにコピーします。
以下のスクリプトを空のファイルにコピーし、auto_wall.py
準備した2つの画像とともにとして保存します。
スクリプトのヘッドセクションには、次の行があります。
screen_check = "HDMI-0 connected"
必要に応じて、交換するHDMI-0
ことにより、<your_second_screenname>
(コマンドを実行するxrandr
必要かどうかを調べるために)
次のコマンドでスクリプトを実行します(バックグラウンドで実行し続けます)。
python3 /path/to/auto_wall.py
セカンドスクリーンを接続すると、セカンドスクリーンの壁紙が数秒以内に切り替わりますscreen_2.jpeg
。
- すべてが正常に機能する場合は、スタートアップアプリケーションに追加します。
スクリプト
#!/usr/bin/env python3
import subprocess
import os
import time
curr_dir = os.path.dirname(os.path.abspath(__file__))
screen_check = "HDMI-0 connected"
single_picture = "'file://"+curr_dir+"/screen_1.jpeg'"
double_picture = "'file://"+curr_dir+"/span_image.jpeg'"
def execute_set(command):
subprocess.call(["/bin/bash", "-c", command])
def execute_get(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()
def switch_tosingle():
execute_set("gsettings set org.gnome.desktop.background picture-uri "+single_picture)
execute_set("gsettings set org.gnome.desktop.background picture-options zoom")
def switch_todouble():
if not os.path.exists(double_picture):
create_spanimage()
execute_set("gsettings set org.gnome.desktop.background picture-uri "+double_picture)
execute_set("gsettings set org.gnome.desktop.background picture-options spanned")
def create_spanimage():
image_1 = curr_dir+"/"+"screen_1.jpeg"
image_2 = curr_dir+"/"+"screen_2.jpeg"
span_image = curr_dir+"/"+"span_image.jpeg"
execute_set("convert "+image_1+" "+image_2+" "+"+append "+span_image)
def check_ifconnected():
command = "xrandr"
check = execute_get(command)
if screen_check in check:
return True
def check_wallpaper():
check = execute_get("gsettings get org.gnome.desktop.background picture-uri")
if check == single_picture:
return "single"
elif check == double_picture:
return "double"
def arrange():
test = (check_ifconnected(), check_wallpaper())
if test == (True, "double") or test == (False, "single"):
pass
elif test[0] == True:
switch_todouble()
else:
switch_tosingle()
while True:
arrange()
time.sleep(5)
画像の置き換え
壁紙を変更する場合は、フォルダーにコピーした画像の一方または両方を置き換えて(名前に注意して)span_image.jpeg
、スクリプトによって作成されたを削除します。
Ubuntu 14.04と14.10でテストしましたが、完全に機能しました。Gnomeを使用するという事実は、違いを生むべきではありません。
キーの組み合わせで壁紙の設定を手動で切り替える
何らかの理由で、外部モニターの接続/切断後にスパンド壁紙に手動で切り替える場合は、最後の3行を置き換えることができます。
while True:
arrange()
time.sleep(5)
一行で:
arrange()
切り替えを行うためのキーボードショートカットを追加します:「システム設定」>「キーボード」>「ショートカット」>「カスタムショートカット」
コマンドを追加します。
python3 /path/to/auto_wall.py
お好みのキーの組み合わせに。