Keeping multitags persistent/ru

Описание
Эта конфигурация lua кода позволяет сохранять мультитеговое состояние, например:


 * Нажмите F1 для перехода на тег 1 ;


 * Нажмите Ctrl+F2 чтобы объединить просмотр тега 1 и 2 (у вас будут отображены клиенты с обоих тегов), как при нажатии Mod+Ctrl+№;


 * Нажмите F3 для переключения на тег 3 (будут отображены клиенты только для тега 3);


 * теперь, нажав F1 вы вернетесь на тег 1: с помощью этого кода, вы вернетесь и снова будете видеть теги 1 и 2, до тех пор, пока не нажмете Ctrl+F2 чтобы удалить тег 2.

Особенности

 * Я использую клавиши Fx для переключения по тегам, если вы хотите сохранить значения по умолчанию (Mod4+numbers) отредактируйт код.


 * Это мой первый код на lua, поэтому наверно можно было найти более элегантный способ написать это.


 * После перезапуска awesome, все настройки забываются.


 * Код будет работать только при переключении с клавиатуры, мышь не поддерживается в коде. Это можно считать особенностью ;)

Код
-- Bind all key numbers to F keys. -- Keep a (semi-)persistant mapping of active multitags -- This should map on the top row of your keyboard, usually F1 to F9. extra_tags = {} for i = 1, keynumber do   extra_tags[i] = {} globalkeys = awful.util.table.join(globalkeys,       awful.key({ }, "F" .. i,                 function local screen = mouse.screen local curtag = tags[screen][i] if curtag then awful.tag.viewonly(curtag) end for tag,v in pairs(extra_tags[i]) do 			if v then awful.tag.viewtoggle(tags[screen][tag]) end end end),       awful.key({ "Control" }, "F" .. i,                 function local screen = mouse.screen local curtag = awful.tag.getidx(awful.tag.selected(screen)) local selected = awful.tag.selectedlist(screen) local found = false for i_,v in ipairs(selected) do 			v = awful.tag.getidx(v) if v == i then found = true break end end if found then extra_tags[curtag][i] = false else extra_tags[curtag][i] = true end if tags[screen][i] then awful.tag.viewtoggle(tags[screen][i]) end end),       awful.key({ "Shift" }, "F" .. i,                 function if client.focus and tags[client.focus.screen][i] then awful.client.movetotag(tags[client.focus.screen][i]) end end),       awful.key({ "Control", "Shift" }, "F" .. i,                 function if client.focus and tags[client.focus.screen][i] then awful.client.toggletag(tags[client.focus.screen][i]) end end)) end