Как мне использовать разные обои для разных сессий?

У меня есть две сессии - Unity и Gnome Fallback на моем ноутбуке. Я использую Unity в портативном режиме и гном откат со вторым дисплеем дома. И я хочу разные обои для Unity и резервных сессий. Свет для Единства и тьма для отступления.

Я думаю, я могу использовать опцию автозапуска showonlyin=, но не знаю как. Я не хочу каждый раз менять обои вручную.

4
задан 7 March 2013 в 22:45

2 ответа

С помощью этого bash-скрипта вы можете достичь того, чего хотите.

#!/bin/bash

if [ "$XDG_CURRENT_DESKTOP" = "Unity" ]
then
  gsettings set org.gnome.desktop.background picture-uri 'file:///usr/share/backgrounds/warty-final-ubuntu.png'
else
  gsettings set org.gnome.desktop.background picture-uri 'file:///usr/share/backgrounds/The_Grass_aint_Greener_by_fix_pena.jpg'
fi

Добавить этот скрипт в Автозагрузка приложений (Добавить → Команда sh path/to/script).

И замените путь к файлу на желаемое фоновое изображение.

0
ответ дан 7 March 2013 в 22:45

Сценарий ниже наборов наклеивает обои для сессии Единицы и обоев B Gnome (или для любой другой настольной среды, которая имеет выполнение файлового менеджера наутилуса).

Использование просто. Предоставьте два полных пути изображениям. Первое изображение для Единицы, второй для чего-либо еще.

./session_wallpapers.py  /home/user/WALLPAPERS/image_A.png /home/user/WALLPAPERS/image_B.jpg  

Это может быть добавлено для Запущения Приложений, чтобы сделать задание автоматически при входе в систему. Удостоверьтесь, что сценарий имеет исполняемые полномочия.

Это также доступно на моем репозитории GitHub.

Источник сценария

#!/usr/bin/env python
# -*- coding: utf-8 -*-
from gi.repository import Gio,Notify
import dbus
import sys
import os
import time

###########################################################
# Author: Serg Kolo , contact: 1047481448@qq.com 
# Date:  June 30 , 2016
# Purpose: set wallpaper depending on desktop session
# Written for: https://askubuntu.com/q/146211/295286
# Tested on: Ubuntu 16.04 LTS 
###########################################################
# Copyright: Serg Kolo , 2016 
#    
#     Permission to use, copy, modify, and distribute this software is hereby granted
#     without fee, provided that  the copyright notice above and this permission statement
#     appear in all copies.
#
#     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
#     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
#     FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
#     THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
#     LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
#     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
#     DEALINGS IN THE SOFTWARE.


def get_dbus(obj,path,interface,method):
    # Reusable function for accessing dbus
    # This basically works the same as 
    # dbus-send or qdbus. Just give it
    # all the info, and it will spit out output
    bus = dbus.SessionBus() 
    proxy = bus.get_object(obj,path)
    method = proxy.get_dbus_method(method,interface)
    return method()

def gsettings_set(schema,key,value):
    gsettings = Gio.Settings.new(schema)
    gsettings.set_string(key,value)

def send_notif(title,message):
    Notify.init("Wallpaper setter")
    content = Notify.Notification.new(title,message)
    content.show()

def set_wallpaper( image  ):
    if os.path.isfile( image ):
        gsettings_set('org.gnome.desktop.background', \
                      'picture-options','zoom' )
        gsettings_set('org.gnome.desktop.background',\
                      'picture-uri', 'file://' + image)    
        send_notif("Session wallpaper set",image)
        sys.exit(0)
    else:
        send_notif( "We have a problem!" ,  
                    "Wallpaper image for this session doesn't exist.")
        sys.exit(1)

def print_usage():
    print  """
session_wallpapers.py [UNITY_WALLPAPER] [GNOME_WALLPAPER]

This script sets wallpaper depending on the desktop
session user chooses. Both images must be given in
their full path form, otherwise the script exists
with  status 1. Upon successful setting, it displays
notification and exists with status 0

Copyright Serg Kolo , 2016
"""

def main(): 
    if len(sys.argv) < 2:
       print_usage()
       sys.exit(0)

    # Wait for windows to appear
    windows = ""
    while not windows:
        time.sleep(3)
        windows = get_dbus( 'org.ayatana.bamf',\
                            '/org/ayatana/bamf/matcher' ,\
                            'org.ayatana.bamf.matcher',\
                            'WindowPaths' )

    # get list of open windows
    name_list = []
    for window in windows:
        name_list.append( get_dbus( 'org.ayatana.bamf', window, \
                                    'org.ayatana.bamf.view','Name'  ))
    # Do we have unity-dash open ?
    # If so that's unity session,
    # otherwise - that's Gnome or
    # something else.
    if "unity-dash" in  name_list:
        print sys.argv[1]
        set_wallpaper(sys.argv[1])
    else:
        print sys.argv[2]
        set_wallpaper(sys.argv[2])

if '__main__' == __name__:
   main() 
2
ответ дан 7 March 2013 в 22:45

Другие вопросы по тегам:

Похожие вопросы: