LINUX.ORG.RU

[awesome][wmfs] Вопрос про трей и активацию

 ,


0

1

Если коротко, можно ли сделать так, чтобы при активации окна приложения из трея, я бы переходил в тег, где оно открыто?

Например, запущен xchat, его окно открыто и расположено в седьмом теге.
Я нахожусь в первом теге и вижу по трею, что в xchat пришло личное сообщение. Кликаю дважды по xchat и он открывается в первом теге, где я и нахожусь на данный момент.
Так вот, вопрос. Можно ли сделать так, чтобы при клике по xchat в трее, он открывался НЕ в теге, где я нахожусь, а осуществлялся бы переход в седьмой тег (где окно чата уже открыто и изначально располагалось)?

Интересует в первую очередь awesome. Но и wmfs или subtle подойдет.

З.Ы.: Сильно ногами не пинать, awesome и wmfs знаю поверхностно, в описании конфигов и FAQ ответ на свой вопрос не нашел =[

★★★★★

Последнее исправление: neocrust (всего исправлений: 1)

Можно кликать на имя тега, съэкономите один клик. :) Или же правой кнопкой на список запущеных задач -> выбрать xchat. Или вовсе без кликов перейти на тег хоткеем. :) Из трея, насколько я знаю, это сделать низзя. Только если написать свой аналог трея с такой возможностью. :)
// Все вышесказанное относится к awesome.

stacker
()
Ответ на: комментарий от stacker

Переход на нужный тег - это понятно =]

Хочется именно того, что я описал выше.

neocrust ★★★★★
() автор топика
Ответ на: комментарий от stacker

Не помогает.

К примеру, задавал рулез для VLC (узнал класс по xprop), прописал ему тег «7». VLC успешно запускается именно на седьмом теге, но из трея все равно вызывается на текущий тег. [awesome]

neocrust ★★★★★
() автор топика
Ответ на: комментарий от stacker

Кстати, не знаешь, можно ли в awesome задать отдельно взятому тегу определенные цвета (текст, фон и т.д.)? В wmfs так нельзя, на сколько я понял, а в awesome..

neocrust ★★★★★
() автор топика
Ответ на: комментарий от neocrust

... тоже нельзя ) Только глобально. Но опять же, можно освоить lua и написать новую библиотеку тем, с блэкджеком и всем остальным.

stacker
()

Можно сделать так, чтобы новое окно переносилось на тот тег, где уже есть окна того же приложения. Скажем:

for _, t in pairs( screen[c.screen]:tags() ) do
  for _, cl in pairs( t:clients() ) do
    if cl.pid == c.pid then
      c:tags{t}
    end
  end
end

krakatau
()
Ответ на: комментарий от neocrust

задать отдельно взятому тегу определенные цвета

В списке тегов? В стабильной версии можно, но с пугающими костылями, в нестабильной придётся ещё и стандартную библиотеку (которая awful) редактировать.

krakatau
()
Ответ на: комментарий от krakatau

О, уже что-то, спасибо большое =]

neocrust ★★★★★
() автор топика
Ответ на: комментарий от neocrust

Насколько пугающими?

function label.all(t, args)
    if not args then args = {} end
    local theme = beautiful.get()
    local fg_focus = args.fg_focus or theme.taglist_fg_focus or theme.fg_focus
    local bg_focus = args.bg_focus or theme.taglist_bg_focus or theme.bg_focus
    local fg_urgent = args.fg_urgent or theme.taglist_fg_urgent or theme.fg_urgent
    local bg_urgent = args.bg_urgent or theme.taglist_bg_urgent or theme.bg_urgent
    local taglist_squares_sel = args.squares_sel or theme.taglist_squares_sel
    local taglist_squares_unsel = args.squares_unsel or theme.taglist_squares_unsel
    local taglist_squares_resize = theme.taglist_squares_resize or args.squares_resize or "true"
    local font = args.font or theme.taglist_font or theme.font or ""
    local text = "<span font_desc='"..font.."'>"
    local sel = capi.client.focus
    local bg_color = nil
    local fg_color = nil
    local bg_image
    local icon
    local bg_resize = false
    local is_selected = false
    if t.selected then
        bg_color = bg_focus
        fg_color = fg_focus
    end
    if sel and sel.type ~= "desktop" then
        if taglist_squares_sel then
            -- Check that the selected clients is tagged with 't'.
            local seltags = sel:tags()
            for _, v in ipairs(seltags) do
                if v == t then
                    bg_image = capi.image(taglist_squares_sel)
                    bg_resize = taglist_squares_resize == "true"
                    is_selected = true
                    break
                end
            end
        end
    end
    if not is_selected then
        local cls = t:clients()
        if #cls > 0 and taglist_squares_unsel then
            bg_image = capi.image(taglist_squares_unsel)
            bg_resize = taglist_squares_resize == "true"
        end
        for k, c in pairs(cls) do
            if c.urgent then
                if bg_urgent then bg_color = bg_urgent end
                if fg_urgent then fg_color = fg_urgent end
                break
            end
        end
    end
    if not tag.getproperty(t, "icon_only") then
        if fg_color then
            text = text .. "<span color='"..util.color_strip_alpha(fg_color).."'>"
            text = " " .. text.. (util.escape(t.name) or "") .." </span>"
        else
            text = text .. " " .. (util.escape(t.name) or "") .. " "
        end
    end
    text = text .. "</span>"
    if tag.geticon(t) and type(tag.geticon(t)) == "image" then
        icon = tag.geticon(t)
    elseif tag.geticon(t) then
        icon = capi.image(tag.geticon(t))
    end

    return text, bg_color, bg_image, icon
end

К этому нужно прибавить код, отвечающий собственно за нестандартные цвета.

krakatau
()

По поводу wmfs, вопрос решен полностью. Как оказалось надо было мне внимательнее читать конфиг и его описание =]

[follow_client = true]

neocrust ★★★★★
() автор топика
Ответ на: комментарий от neocrust

Почти в самом конце файла есть строка:

client.add_signal("manage", function (c, startup)
Сразу после неё можно вставлять всё, что должно исполняться при появлении нового окна.

krakatau
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.