Разные обои на нескольких мониторах

16

У меня есть ноутбук и монитор. Большую часть времени мой ноутбук подключен к монитору через HDMI. Я использую Ubuntu Gnome 14.04 и вот что я хочу:

  • Когда монитор не подключен, я хочу простое фоновое изображение
  • Когда монитор подключен, я хотел бы иметь такое же фоновое изображение на моем ноутбуке и еще одно на моем мониторе.

Это возможно? Я нашел этот вопрос, а также азот . Но оба не помогли мне.

Редактировать:

После запуска gnome-tweak-tool перейдите на вкладку «Рабочий стол» на левой панели и затем отключите параметр «Пусть файловый менеджер обрабатывает рабочий стол».

Источник: Форумы Ubuntu .

К сожалению, я не могу найти это в моем Gnome-Tweak-Tool: гном-твик-инструмент

Я пытался найти ту же конфигурацию, используя dconf-editorпод, org.gnome.desktop.backgroundно все, что он сказал, было:

Описание: Нарисуйте фон рабочего стола
Описание: Пусть GNOME нарисует фон рабочего стола. УСТАРЕЛО : этот ключ устарел и игнорируется.

Также мой gnome-shell --versionесть GNOME Shell 3.10.4.

В этом суть является выводом xrandr. Первый с подключенным вторым монитором. Второй без него.

BYF-Ферди
источник
При использовании Nitrogen вы отключили файловый менеджер от передачи рабочего стола?
Каз Вулф
Я больше не мог найти опцию в Gnome-Tweak-Tool. Я добавил дополнительную информацию к своему вопросу. Надеюсь, это поможет
byf-ferdy
@Whaaaaaat nitro только для 13.10 и ниже : /
blade19899
Я думаю, что у меня что-то есть, каковы разрешения ваших экранов?
Джейкоб Влейм
оба 1920x1080 (16: 9). Ноутбук 19 "Я думаю, монитор 27".
byf-ferdy

Ответы:

10

Хитрость

Кажется невозможным отдельно установить обои для основного экрана и второго экрана. Однако, что можно сделать, это установить обои и разместить их на двух экранах. Мы можем автоматически создать охватывающее изображение из двух обоев по вашему выбору и (также автоматически) переключать обои и параметры изображения в зависимости от того, подключен второй экран или нет.
Чтобы это выглядело хорошо, необходимо, чтобы по крайней мере вертикальное разрешение экрана обоих экранов было одинаковым, что имеет место в вашей ситуации.

введите описание изображения здесь

На практике

подготовка

В этом решении подготовительная работа, которую вы должны выполнить:

  • Сначала установите imagemagick для автоматического создания связующего изображения:

    sudo apt-get install imagemagick
    
  • Подготовьте два отдельных фоновых изображения на ваш выбор для обоих экранов:

    • Размеры должны точно соответствовать размерам экрана (16: 9 в вашем случае)
    • Вертикальное разрешение обоих изображений должны быть точно такими же.

    называть их screen_1.jpegи screen_2.jpeg(именно эти имена). Скрипт создаст остовное изображение.

  • Создайте папку в вашем домашнем каталоге и скопируйте оба изображения в папку.

  • Скопируйте приведенный ниже скрипт в пустой файл и сохраните его auto_wall.pyвместе с двумя подготовленными вами изображениями.

  • В разделе заголовка скрипта есть строка:

    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, не должен иметь никакого значения.

Переключение настроек обоев вручную с помощью комбинации клавиш

Если по какой-либо причине вы предпочли бы переключиться на составные обои вручную после подключения / отключения внешнего монитора, вы можете заменить последние три строки:

while True:
    arrange()
    time.sleep(5)

одной строкой:

arrange()

и добавьте сочетание клавиш для переключения: «Системные настройки»> «Клавиатура»> «Ярлыки»> «Пользовательские сочетания клавиш»

Добавьте команду:

python3 /path/to/auto_wall.py

на комбинацию клавиш по вашему выбору.

Якоб Влейм
источник
Это выглядит потрясающе. Я проверю это, как только смогу, и дам вам знать! Спасибо за работу в любом случае!
byf-ferdy
@ byf-ferdy Упс, случайно оставил мою (тестовую) директорию в скрипте, исправил это сейчас.
Джейкоб Влейм
Отличная работа! Работает отлично!
byf-ferdy
1
Спасибо за хороший вопрос! Это то, что мне нравится делать.
Джейкоб Влейм
1

В дополнение к ответу выше, вы можете объединить два изображения точного размера с помощью этого сервиса: http://www.photojoiner.net/

После того, как вы объединили два или более изображений, вы должны выбрать опцию «span» на странице настроек фона.

onesvat
источник