2015-05-19 4 views
3

Я хотел бы удалить границу из любого окна, которое не было разбито на плитки (независимо от того, где оно максимизировано, или всего лишь одно окно, назначенное тегу) и добавлять границы, как только они становятся черепичными, при использовании одного и того же макета ,Как скрыть границы динамически из окон, когда они не черепичные (Awesome WM)?

Я пытался это решение (с изменением client.add_signal в client.connect_signal): http://blog.lazut.in/2012/11/awesome-wm-remove-border-from-maximized.html

client.connect_signal("focus", 
    function(c) 
     if c.maximized_horizontal == true and c.maximized_vertical == true then 
      c.border_width = "0" 
      c.border_color = beautiful.border_focus 
     else 
      c.border_width = beautiful.border_width 
      c.border_color = beautiful.border_focus 
     end 
    end) 

, но он работал только для некоторых развернутого окна и перезаписали границы я удалены (например, для синаптической пусковой) через свойства в awful.rules.rules.

Я видел функцию tiled(screen), указанную в официальной документации API, возможно, с этим можно что-то сделать? Я все еще новичок в Awesome WM, поэтому небольшая помощь будет оценена по достоинству.

ответ

2

Это то, что у меня в rc.lua, чтобы достичь того же результата:

for s = 1, screen.count() do 
    screen[s]:connect_signal("arrange", function() 
     local clients = awful.client.visible(s) 
     local layout = awful.layout.getname(awful.layout.get(s)) 

     -- No borders with only one visible client or in maximized layout 
     if #clients > 1 and layout ~= "max" then 
      for _, c in pairs(clients) do -- Floaters always have borders 
       if not awful.rules.match(c, {class = "Synapse"}) and awful.client.floating.get(c) or layout == "floating" then          
        c.border_width = beautiful.border_width 
        c.border_color = beautiful.border_focus 
       end 
      end 
     end 
    end) 
end 

Я добавил условие if not awful.rules.match(c, {class = "Synapse"})... обрабатывать случай синапс пусковая вы указали. Но это может быть уже покрыто другими условиями (пусковая установка должна быть уже плавающей, поэтому следующее условие не позволит ей получить границу)

+0

Благодарности к это! Стоит упомянуть, что в сочетании с этим правило по умолчанию для клиентов должно иметь border_width, установленное на нуль некоторыми способами. – krait

0

С удивительным 4.0, заголовки обеспечивают большую гибкость, чем границы окна. Я использую заголовок для создания верхней и левой границ. Таким образом, у меня есть границы, чтобы отличать клиентов в режиме плиткой, но я все равно могу поместить мою мышь в правый или нижний край экрана и щелкнуть по полосе прокрутки. Это также помогает мне определить, кто является ориентированным клиентом.

Вот часть моего theme.lua, где я определяю theme.bar_width:

-- {{{ Borders 
theme.useless_gap = 0 
theme.border_width = 0 
theme.bar_width = 2 
theme.border_normal = "#3F3F3F" 
theme.border_focus = "#6F6F6F" 
theme.border_marked = "#CC9393" 
-- }}} 

А вот две части из моей rc.lua, где я определяю два заголовках:

client.connect_signal("request::titlebars", function(c) 
    -- ... 

    -- The top bar 
    -- code was: awful.titlebar(c) : setup { ... 
    -- code became: 
    awful.titlebar(c, { 
     position = "top", 
     bg_normal = beautiful.border_normal, 
     bg_focus = beautiful.border_focus, 
    }):setup{ 
     -- ... 
    } 

    -- The left bar 
    awful.titlebar(c, { 
     position = "left", 
     size = beautiful.bar_width, 
     bg_normal = beautiful.border_normal, 
     bg_focus = beautiful.border_focus, 
    }) 

    -- ... 
end)