Cycling Random Wallpaper Or Xscreensaver/ru

Примечание : Не испльзуйте одновременно ОБЕ функции, иначе в качестве заставки будет использоваться изображение!

Для начала вам необходимо будет инициализировать генератор случайных числе и "pop a few" (официальный термин из документации Lua). Если вы этого не сделаете, то всегда будете иметь одну и ту же последовательность. Добавьте эти строки перед добавлением любого следующего фрагмента кода:

-- seed and "pop a few" math.randomseed( os.time) for i=1,1000 do tmp=math.random(0,1000) end

Случайное изменение фоновой картинки (для awesome >= 3.5)
Добавьте этот код в rc.lua

-- конфигурация - отредактируйте по своему вкусу wp_index = 1 wp_timeout = 10 wp_path = "/path/to/wallpapers/" wp_files = { "01.jpg", "02.jpg", "03.jpg" } -- установка таймера wp_timer = timer { timeout = wp_timeout } wp_timer:connect_signal("timeout", function -- установка обоев в текущий индекс  gears.wallpaper.maximized( wp_path .. wp_files[wp_index], s, true) -- остановка таймера (нам не нужны многочисленные экземпляры запущенные в то же время)  wp_timer:stop  -- получаем следующий случайный индекс  wp_index = math.random( 1, #wp_files)  --перезапуск таймера  wp_timer.timeout = wp_timeout  wp_timer:start end) -- инициализируйте запуск при первом запуске rc.lua wp_timer:start

Случайное изменение фонового изображения (относительно случайно) для awesome <= 3.4
добавьте этот код в rc.lua

x = 0

-- настройка таймера mytimer = timer { timeout = x } mytimer:connect_signal("timeout", function

-- указать awsetbg на случайный выбор обоев из каталога с обоями os.execute("awsetbg -T -r /usr/share/wallpapers&")

-- остановка таймера (нам не нужны многочисленные экземпляры запущенные в то же время) mytimer:stop

-- определяем интервал до смены обоев, в секундах -- (в данном случае в промежутке между 10 и 20 минутами) x = math.random( 600, 1200)

--перезапускаем таймер mytimer.timeout = x mytimer:start end)

-- инициализируйте запуск при первом запуске rc.lua mytimer:start

Использование модуля xscreensaver для анимации фоновой картинки и ее изменения через заданное время
(Предупреждение : использование прозрачности с этим кодам приводит к странным результатам и в худшем случае вы не увидите ничего кроме обоев!)

Вваш CPU большую часть времени простаивает, и вы хотите сделать картинку приятной глазу? Здесь приведено решение для вас: запустите скринсейвер в качестве обоев! Для начала вам необходимо установить xscreensaver, а затем добавить следующий код в rc.lua :

x= 0

-- setup the timer mytimer = timer { timeout = x } mytimer:connect_signal("timeout", function

-- list the wallpaper you want to use (They can be found in /usr/lib/xscreensaver/) followed by any additional -- parameters you need in a separate array element back = { "atlantis", "-whalespeed 826 -size 3027 -count 15", "substrate", "", "fliptext", "", "glmatrix", "-mode hex" }

-- kill any screensaver from the list that might be running for i=1, table.getn(back),2 do       os.execute("killall -I ".. back[i] .. " 2> /dev/null") end

-- set the background colour to black (just in case, as sometimes the screensavers seem to keep whatever is in the videobuffer) os.execute("xsetroot -bg black")

-- select a new screensaver y = math.random( 1, (table.getn(back)/2))-1 os.execute( "/usr/lib/xscreensaver/" .. back[ (y*2) + 1] .. " -root " .. back[ (y*2) + 2] .. "&")

-- define the interval in which the next wallpaper change should occur in seconds -- (in this case anytime between 10 and 20 minutes) x = math.random( 600, 1200)

-- reset the timer mytimer:stop mytimer.timeout = x   mytimer:start end)

-- инициализируйте запуск при первом запуске mytimer:start

Вкл/выкл таймер
Иногда вам может потребоваться включить или выключить таймер. Добавьте следующий блок в секцию mymainmenu в rc.lua, для работы с таймером xscreensaver:

{ "toggle wallpaper", function

-- проверяем запущен ли таймер if mytimer.started then -- останавливаем и устанавливаем таймер на 0 mytimer:stop mytimer.timeout = 0 -- kill все запущенные xscreensaver из списка использованного ранее (в этот раз не нужны параметры) back = { "atlantis", "substrate", "fliptext", "glmatrix" } for i=1, table.getn(back) do os.execute("killall -I ".. back[i] .. " 2> /dev/null") end -- опционально устанавливаем случайные статические обои os.execute("awsetbg -T -r /usr/share/wallpapers&") else -- сбрасываем и перезапускаем таймер mytimer.timeout = 0 mytimer:start end end },

Написание переключателя для статического(не скринсейвера) таймера обоев сходно (но значительно короче).