5

Привет,

Я использую гостевую ОС Linux поверх Windows XP, которая вращает свои обои с помощью PowerToy Wallpaper Changer. Я надеюсь, что моя гостевая ОС сможет как-то определить, какие обои использует хост, и автоматически переключиться на них.

Зачем? Потому что, если я запускаю гостевую ОС в бесшовном режиме и у меня прозрачные окна, я хочу, чтобы прозрачный фон соответствовал основной ОС. Так выглядит красиво :).

Пара лакомых кусочков соответствующей информации:

  • Гостевая ОС - Peppermint Ice (на основе Ubuntu)
  • Хост ОС Windows XP
  • VirtualBox как программное обеспечение для виртуализации

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

2 ответа2

4

Этот вопрос закончится необходимостью программирования. Вы можете начать прослушивание изменений настроек рабочего стола, когда новый параметр будет применен, получить текущий путь к обоям из реестра и "подать сигнал" в какое-либо приложение.

Вот пример, который я сделал и протестировал на 64-битной Windows 7 Microsoft Microsft. Он был скомпилирован с помощью Wallpaper Monitor для mingw32 (здесь и Linux). Вы можете легко изменить / расширить строку 62.

1

Если вы используете Windows PowerToys, текущие активные обои будут в C:\WINDOWS\system32\toyhide.bmp .

Вы можете настроить виртуальную машину для монтирования папки system32 и добавить задание cron для установки обоев в файл toyhide.bmp каждую минуту. Это может быть хорошей идеей для монтирования этой папки только для чтения на случай, если с ней что-то не получится.

Изменить: мое решение cron раздражало меня, всегда обновляя мои обои, даже если они не менялись, поэтому вместо этого я написал скрипт на python для запуска при запуске. Этот скрипт в основном смотрит на смонтированный toyhide.bmp и обновляет обои, только если они были изменены, проверяя каждую секунду, чтобы уменьшить время задержки.

#!/usr/bin/python
import os
import time

# Update to wherever you mounted toyhide.bmp
fname = "/<mnt_location>/toyhide.bmp"

# Peppermint uses pcmanfm for setting the wallpaper. YMMV
wallpaper_cmd = "/usr/bin/pcmanfm  --set-wallpaper=%s" % fname

# Update the wallpaper on startup and save the mod time
os.system(wallpaper_cmd)
mod_time = os.path.getmtime(fname)

while True:
    try:
        # If mod time changes, set wallpaper again and get new mod time
        if os.path.getmtime(fname) != mod_time:
            mod_time = os.path.getmtime(fname)
            os.system(wallpaper_cmd)
    except OSError:
        # Sometimes the mount seems to fail if my computer is sleeping.
        # Just catch the error and try again
        pass 
    time.sleep(1)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .