awesome wm: каждому тегу - свои обои

Разработка скриптов на lua. Создание виджетов, диалогов и т.д.
Ответить
Аватара пользователя
olgmen
Сообщения: 155
Зарегистрирован: 30 ноя 2012, 11:00
Темы: 32
Откуда: Санкт-Петербург
Статус: Не в сети

awesome wm: каждому тегу - свои обои

Сообщение olgmen » 12 ноя 2014, 08:04

Вот как это выглядит http://youtu.be/-KSo-RtnBV8

Для этого необходимо:

1. Поместить обои, в количестве равном количеству тегов, в одну папку.
2. Все обои должны иметь одинаковое расширение, .png или .jpg, смешивать нельзя.
3. Переименовать обои. Обои должны иметь имена 1.png (или 1.jpg), 2.png ... и т.д. по количеству тегов.

Теперь отредактируем файл rc.lua, за образец взят дефолтный rc.lua, необходимо найти два раздела

Код: Выделить всё

-- {{{ Wallpaper
if beautiful.wallpaper then
    for s = 1, screen.count() do
        gears.wallpaper.maximized(beautiful.wallpaper, s, true)
    end
end
-- }}}

-- {{{ Tags
-- Define a tag table which hold all screen tags.
tags = {}
for s = 1, screen.count() do
    -- Each screen has its own tag table.
    tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1])
end
-- }}}
В разделе ---{{{ Wallpaper

в строке

Код: Выделить всё

gears.wallpaper.maximized(beautiful.wallpaper, s, true)
заменяем beautiful.wallpaper на путь к первому файлу обоев. Должно выглядеть так

Код: Выделить всё

gears.wallpaper.maximized("/home/olgmen/.config/awesome/wallpapers/1.jpg", s, true)
вместо olgmen должно быть название вашей домашней папки, конечно это можно сделать отредактировав файл theme.lua, но так просто наглядней.
Если ваши обои имеют расширение .png, то вместо 1.jpg пишем 1.png
Это необходимо сделать для того, чтобы при запуске компьютера первый тег имел обои, иначе будет просто черный экран, правда если перейти на любой другой тег и вернуться на первый, то обои появятся, но это как то не правильно.

Раздел --{{{ Tags приводим к такому виду

Код: Выделить всё

-- {{{ Tags
-- Define a tag table which hold all screen tags.
tags = {}
for s = 1, screen.count() do
    -- Each screen has its own tag table.
    tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1])
-- end -- строка оставлена для наглядности, можно удалить

	for s = 1, screen.count() do
		for t = 1, 9 do
			tags[s][t]:connect_signal("property::selected",
				function (tag)
					if not tag.selected then return end
					gears.wallpaper.maximized("/home/olgmen/.config/awesome/wallpapers/" .. t .. ".jpg", s, true)
				end)
		end
	end
	end
-- }}}
Меняем olgmen на название своей домашней папки.

Перезапускаем awesome и наслаждаемся сменой обоев.

Вопросы, замечания приветствуются.
Кто ищет, тот всегда найдет

Arch Linux
Conky - 1.9

Аватара пользователя
ZEN
Администратор
Сообщения: 1357
Зарегистрирован: 27 сен 2012, 18:23
Темы: 208
Откуда: Украина, Одесса
Статус: Не в сети

Re: awesome wm: каждому тегу - свои обои

Сообщение ZEN » 12 ноя 2014, 12:09

gears.wallpaper.maximized("/home/olgmen/.config/awesome/wallpapers/" .. t .. ".jpg", s, true)
А что, если файла не существует?)

Могу предложить следующее:

1. Путь к файлу вынести в отдельную переменную ( local image_path = "/home/olgmen/.config/awesome/wallpapers/" .. t .. ".jpg" )
2. Далее проверять, что файл в image_path существует
3. Если не существует, то подставить в image_path картинку по умолчанию ( image_path = "/home/olgmen/.config/awesome/wallpapers/N.jpg" )
4. Ну и устанавить картинку ( gears.wallpaper.maximized(image_path, s, true) )
бог создал труд и обезьяну
чтоб получился человек
а вот пингвина он не трогал
тот сразу вышел хорошо

Аватара пользователя
olgmen
Сообщения: 155
Зарегистрирован: 30 ноя 2012, 11:00
Темы: 32
Откуда: Санкт-Петербург
Статус: Не в сети

Re: awesome wm: каждому тегу - свои обои

Сообщение olgmen » 12 ноя 2014, 15:44

ZEN писал(а):А что, если файла не существует?)
Просто в этом случае выскочит сообщение об ошибке и будет выведен черный экран вместо обоев
Кто ищет, тот всегда найдет

Arch Linux
Conky - 1.9

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей