Різні шпалери на декількох моніторах


16

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

  • Якщо жоден монітор не підключений, я хочу просте фонове зображення
  • Коли монітор підключений, я хотів би мати те саме фонове зображення на своєму ноутбуці, а інше - на моєму.

Це можливо? Я знайшов це питання , а також азот . Але обидва мені не допомогли.

Редагувати:

Після запуску інструменту gnome-tweak-перейдіть на вкладку «Робочий стіл» на панелі зліва, а потім вимкніть налаштування «Мати файловий менеджер керувати робочим столом».

Джерело: Форуми Ubuntu .

На жаль, я не в змозі знайти це в моєму інструменті Gnome-Tweak: gnome-tweak-tool

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

Короткий зміст: Намалюйте фон робочого столу
Опис: Попросіть GNOME намалювати фон робочого столу. ВИМОЖЕНО : Цей ключ застарілий і ігнорується.

Також моя gnome-shell --versionє GNOME Shell 3.10.4.

У цій суті є вихід xrandr. Перший - з підключеним другим монітором. Другий - без цього.


Використовуючи 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" на сторінці налаштувань фону.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.