2017-02-21 3 views
1

In awesome 4.0, gibt es eine Möglichkeit, nur die Titelleiste auf schwebenden Fenstern anzuzeigen?Nur Titelleiste auf schwebenden Fenstern anzeigen

Mit Blick auf die Dokumente, scheint es keine Option out of the box zu sein.

Angeben; Ich suche nach einer Lösung, die funktioniert, wenn ich Windows dynamisch zwischen Tiling und Floating umschalte.

Antwort

0

ändern

{ rule_any = {type = { "normal", "dialog" } 
    }, properties = { titlebars_enabled = true } 
}, 

zu

{ rule_any = {type = { "dialog" } 
    }, properties = { titlebars_enabled = true } 
}, 
+0

es scheint, dass dies nur für neue Clients und nicht für Clients gelten würde, die ich von gefliest zu Floating wechseln? – Juicy

+0

In diesem Fall müssen Sie sowohl 'property :: floating' (' client.connec_signal ("property :: floating", function (c) ... end') als auch das Tag 'property :: layout' verbinden (und für alle sichtbaren Clients) Dann schalte Titlebars auf sie. Aber pass auf, du wirst https://github.com/awesomeWM/awesome/issues/1588 treffen, es bricht die Funktion nicht, aber funktioniert nur wenn Der Kunde hatte irgendwann eine Titelleiste. –

0

Ein bisschen spät, aber ich wollte auch dies tun, und ich habe es meistens funktioniert. Es deckt nicht alle Fälle ab, in denen Sie erwarten, dass ein Client seine Titelleiste anzeigt oder versteckt, aber es ist nahe genug für meinen Anwendungsfall. Es ist ziemlich einfach, zuerst müssen Titelleisten für jeden Client deaktiviert werden, fügen Sie also titlebars_enabled = false in den Eigenschaften der Standardregel für alle Clients hinzu.
Wenn dann ein Client schwebt, müssen Sie seine Titelleiste umschalten und sie ausschalten, wenn sie aufhört zu schweben.
Ich schrieb diese kleine Hilfsfunktion, um den Code klarer zu machen. Es ist ziemlich einfach, wenn strue dann die Leiste anzeigen, verstecken Sie es andernfalls. Aber es gibt einen Haken, in unserem Fall hatten die Fenster nie eine Titelleiste, also ist es noch nicht erstellt. Wir senden das Signal, für uns eine gebaut zu haben, wenn die aktuelle leer ist.

-- Toggle titlebar on or off depending on s. Creates titlebar if it doesn't exist 
local function setTitlebar(client, s) 
    if s then 
     if client.titlebar == nil then 
      client:emit_signal("request::titlebars", "rules", {}) 
     end 
     awful.titlebar.show(client) 
    else 
     awful.titlebar.hide(client) 
    end 
end 

Jetzt können wir die Eigenschaftsänderung Haken:

--Toggle titlebar on floating status change 
client.connect_signal("property::floating", function(c) 
    setTitlebar(c, c.floating) 
end) 

Aber das gilt nur für Kunden, die Staaten, nachdem sie erstellt ändert. Wir brauchen einen Haken für neue Kunden, die Schwimm- oder in einem schwebenden Tag geboren sind:

-- Hook called when a client spawns 
client.connect_signal("manage", function(c) 
    setTitlebar(c, c.floating or c.first_tag.layout == awful.layout.suit.floating) 
end) 

Und schließlich, wenn das aktuelle Layout schwebt, Kunden nicht über die Floating-Eigenschaft festgelegt, also müssen wir ein hinzufügen Haken für Layoutänderungen, um die Titelleisten auf den Clients hinzuzufügen.

-- Show titlebars on tags with the floating layout 
tag.connect_signal("property::layout", function(t) 
    -- New to Lua ? 
    -- pairs iterates on the table and return a key value pair 
    -- I don't need the key here, so I put _ to ignore it 
    for _, c in pairs(t:clients()) do 
     if t.layout == awful.layout.suit.floating then 
      setTitlebar(c, true) 
     else 
      setTitlebar(c, false) 
     end 
    end 
end) 

Ich möchte nicht auf diese zu viel Zeit damit verbringen, damit es nicht Fälle, in denen ein Kunde in einem schwebenden Layout markiert wird, oder wenn ein Client mehrfach markiert ist und einer dieser Tag ist schwebend.

Verwandte Themen