2016-12-20 1 views
0

Я пытаюсь настроить мой Awesome Window Manager для изменения номеров тегов на римские номера (изменение 1 для I, 2 для II ...). Для этого я модифицирую файл /etc/xdg/awesome/rc.lua, особенно раздел {{tags}}.Как изменить имена тегов AwesomeWM?

Я нашел this blog post, в которой ему удается изменить имена тегов по желанию, загляните в верхнем левом углу:

detail of the tag modification

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

Это фрагмент кода интереса в файле:

-- {{{ Tags 
-- Define a tag table which hold all screen tags. 
tags = {} 
tagnames = { "irc", "mpd", "net", "usr", "png", "msg", } 
taglayouts = { 
     awful.layout.suit.tile.top, 
     awful.layout.suit.tile.bottom, 
     awful.layout.suit.floating, 
     awful.layout.suit.fair, 
     awful.layout.suit.floating, 
     awful.layout.suit.floating } 

for s = 1, screen.count() do 
    -- Each screen has its own tag table. 
    tags[s] = {} 
    for tagnumber = 1, 6 do 
     -- Add tags and name them. 
     tags[s][tagnumber] = tag(tagnames[tagnumber]) 
     -- Add tags to screen one by one, giving them their layouts at the same time. 
     tags[s][tagnumber].screen = s 
     awful.layout.set(taglayouts[tagnumber], tags[s][tagnumber]) 
    end 
    -- I'm sure you want to see at least one tag. 
    tags[s][1].selected = true 
end 
-- }}} 

... и это мой rc.lua файл:

-- {{{ Tags 
-- Define a tag table which hold all screen tags. 
tags = {} 
tagnames = { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", } 
taglayouts = { 
     awful.layout.suit.tile.top, 
     awful.layout.suit.tile.bottom, 
     awful.layout.suit.floating, 
     awful.layout.suit.fair, 
     awful.layout.suit.floating, 
     awful.layout.suit.floating } 

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",$ 

     tags[s] = {} 

     for tagnumber = 1, 9 do 
       tags[s][tagnumber] = tag(tagnames[tagnumber]) 
       tags[s][tagnumber].screen = s 
       awful.layout.set(taglayouts[tagnumber], tags[s][tagnumber]) 
     end 

     tags[s][1].selected = true 
end 
--- }}} 

Как вы можете видеть, они довольно то же самое, с той разницей, что у меня есть девять тегов вместо шести (я изменил код в соответствии с ним). При попытке отладки установки с помощью Xephyr, ошибка появляется в консоли и я только в состоянии увидеть мои обои:

error while running function 
stack traceback: 
    [C]: in global 'tag' 
    /etc/xdg/awesome/rc.lua:100: in main chunk 
error: /etc/xdg/awesome/rc.lua:100: bad argument #2 to 'tag' (table expected, got string) 
error while running function 
stack traceback: 
    [C]: in global 'tag' 
    /etc/xdg/awesome/rc.lua:100: in main chunk 
error: /etc/xdg/awesome/rc.lua:100: bad argument #2 to 'tag' (table expected, got string) 
E: awesome: main:605: couldn't find any rc file 

Я не могу видеть, где ошибка, так как я не в состоянии обнаружить любое нарушение языка в строке ошибки tags[s][tagnumber] = tag(tagnames[tagnumber]): оно просто заполняет массив тегов моими пользовательскими именами, говоря ему, чтобы рассматривать их как тег, а не как случайную строку.

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

ОБНОВЛЕНИЕ 2: Добавлено еще 3 awful.layout.suit.floating в taglayouts. Такая же ошибка.

+0

Ошибка не является нарушением языка. Ошибка говорит «ожидаемая таблица, полученная строка», поэтому проблема в том, что вы передаете строку вместо таблицы. Я вижу, что это то, что они делают в учебнике, за которым вы следуете, но все эти файлы, по крайней мере, год. Посмотрите на документацию, она должна быть в форме 'mytagone = tag ({name =" one "})' – DavisDude

+0

Боковое примечание, не редактируйте '/ etc/xdg/awesome/rc.lua', создайте свой собственный' ~/.config/awesome/rc.lua' – Camusensei

+0

Итак, что мне делать с моим кодом? – xvlaze

ответ

2

После другой ответ, я заменил мой раздел {Tags} с:

-- {{{ Tags 
-- Define a tag table which hold all screen tags. 

tagnum = { "I", "II", "III", "IV", "V", "VI", "VII", 
"VIII", "IX" } 

for i = 1, 9 do 
awful.tag.add((tagnum[i]), { 
     layout = awful.layout.suit.tile, 
     master_fill_policy = "master_width_factor", 
     gap_single_client = true, 
     gap = 15, 
     screen = s, 
}) 

end 

-- }}} 

Это создает I количество тегов, их имя, определенное в таблице tagnum. Это полезно только в том случае, если вы хотите создать идентичные теги, но всегда будет намного чище, чем необходимость вводить определения i.

НАМНОГО ЛУЧШЕ, CLEANER ПУТЬ:

Первоначальное решение было полезно, но это была проблема: при запуске AwesomeWM, не будет отображаться в определенном теге, но в каждом из них на в то же время. То есть, если вы откроете терминал, вы откроете его в каждом теге, если вы ранее не выбрали его с помощью Mod4 + TagNum (по умолчанию conf.).

Попытка решить эту проблему, я сравнил файл конфигурации по умолчанию с модифицированным, и я понял, что все работает хорошо по умолчанию. Поэтому я начал изменять код, чтобы найти решение. В целом, я обнаружил, что с минимальной модификацией кода по умолчанию вы можете настроить свои имена тегов по своему усмотрению. Вот так я это сделал:

-- {{{ Tags 
tags = {} 
-- Generates tags with custom names 
for s = 1, screen.count() do 
     tags[s] = awful.tag({ "I", "II", "III", "IV", "V", "VI", "VII", "IX" }), 
end 
-- }}} 

P.S. Я сохраняю старое решение на случай, если кто-то захочет использовать код для другой цели.

1

Не является официальным ответ пока нет, но вчера я написал больше документа об этом:

https://github.com/awesomeWM/awesome/pull/1279/files#diff-df495cc7fcbd48cd2698645bca070ff9R39

Это для Потрясающих 4.0, но в данном случае не так много изменилось, так что пример почти действителен (gap свойство отсутствует в 3.4/3.5).

Кроме того, если вы хотите настроить сложные теги, я бы предложил мой модуль Tyrannical (Awesome 3.5+) или Shifty (Awesome 3.2-3.4). Он разработан, чтобы сделать это намного проще.

Смежные вопросы