awesome
4.0では、フローティングウィンドウにタイトルバーを表示する方法はありますか?フローティングウィンドウにのみタイトルバーを表示
ドキュメントを見ると、すぐにオプションがないようです。
指定する。私は動的に浮動と浮動の間でウィンドウを切り替えるときに動作するソリューションを探しています。
awesome
4.0では、フローティングウィンドウにタイトルバーを表示する方法はありますか?フローティングウィンドウにのみタイトルバーを表示
ドキュメントを見ると、すぐにオプションがないようです。
指定する。私は動的に浮動と浮動の間でウィンドウを切り替えるときに動作するソリューションを探しています。
変更
{ rule_any = {type = { "normal", "dialog" }
}, properties = { titlebars_enabled = true }
},
{ rule_any = {type = { "dialog" }
}, properties = { titlebars_enabled = true }
},
に少し遅れて、私は、あまりにもこれをやってみたかったと私はそれが主に取り組みました。クライアントがタイトルバーを表示または非表示にすることを期待するすべてのケースをカバーしているわけではありませんが、私のユースケースには十分に近いです。 まず、すべてのクライアントのタイトルバーを無効にする必要があります。そのため、すべてのクライアントに一致するデフォルトルールのプロパティにtitlebars_enabled = false
を追加してください。
次に、クライアントがフローティングになると、タイトルバーを切り替える必要があり、フローティングが停止するとオフに切り替える必要があります。
私はこの小さなヘルパー関数を書いて、コードを明確にしました。 s
がtrue
の場合は、バーを表示し、そうでない場合は非表示にします。しかし、私たちのケースでは、ウィンドウがタイトルバーを持っていないので、まだ作成されていないキャッチがあります。現在の信号が空の場合は、信号を送信して私たちのために構築します。
--Toggle titlebar on floating status change
client.connect_signal("property::floating", function(c)
setTitlebar(c, c.floating)
end)
しかし、唯一の作成された後の状態を変更するクライアントに適用される:
-- 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
今、私たちは、プロパティの変更をフックすることができます。
-- 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)
そして、現在のレイアウトが浮いている場合は、最終的に、クライアントは浮動プロパティが設定されていないので、我々は、追加する必要があります。私たちは、浮動または浮動タグで生まれている新しいクライアント用のフックが必要レイアウト変更のためのフックを使用して、内部のクライアントに小節線を追加します。
-- 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)
私はそれは、クライアントが複数回タグ付けされ、それらのタグの一つである場合は、クライアントは、フローティングレイアウトでタグ付けされた、または取得しますケースをカバーしていない、この上の多くの時間を費やす必要はありませんでしたフローティング。
これは新しいクライアントにのみ適用され、タイル表示からフローティングに切り替えるクライアントには適用されないようです。 – Juicy
その場合、 'property :: floating'(' client.connec_signal( "property :: floating"、function(c)... end')と 'property :: layout'タグの両方に接続する必要があります(そして目に見えるすべてのクライアントをforeachします)。次に、タイトルバーを切り替えます。ただし、https://github.com/awesomeWM/awesome/issues/1588にヒットしますが、この機能は中断されませんが、クライアントはある時点でタイトルバーを持っていました。 –