17

次のように2つのウィンドウが整列して新しいアプリケーションを開始するように素晴らしいを設定する方法:

----------------
|xxxxxxxxxx####|
|xxxxxxxxxx####|
|xxxxxxxxxx####|
|xxxxxxxxxx####|
----------------

ここで、「x」は pidgin の会話ウィンドウ、「#」はバディ リスト ウィンドウなどです。

一般に、右側のウィンドウの幅を指定して右側に配置し(垂直方向に最大化)、他のウィンドウが残りのスペースを取る必要があります。

私はすでにほとんど動作するコードをいくつか持っていますが、奇妙な動作をします (pidgin ではすべてが正しくセットアップされますが、gimp と v_sim では正しくセットアップされず、理由がわからなくても左側のウィンドウのジオメトリが変更されることがあります。または、 start application (v_sim) 正しい位置に配置されておらず、縦に最大化されていないのですが、awoable を再起動すると正しく配置されるので、このアプリケーションが起動すると何かが変わるのではないかと推測します。

これが私が今使用しているコードです:

awful.rules.rules = {
  ...
  { rule = { class = "Pidgin", role = "buddy_list" },
    properties = {
      floating = true
    },
    callback = function( c )
      local w_area = screen[ c.screen ].workarea
      local winwidth = 340
      c:struts( { right = winwidth } )
      c:geometry( { x = w_area.width - winwidth, width = winwidth, y = w_area.y, height = w_area.height } )
    end
  },
  { rule = { class = "Pidgin", role = "conversation" },
    properties = {
      floating = true,
      x = 0,
      maximized_vertical = true,
      maximized_horizontal = true
    },
    callback = awful.client.setslave
  },
  ...
}
4

2 に答える 2

12

これとまったく同じ問題がありましたが、左側に大きな Firefox ウィンドウ、右側に小さな端末が必要でした。それを機能させるために、タイル左レイアウトでこの目的専用のタグを作成し、幅係数を調整しました (つまり、通常は CTRL-L によって実行される操作)。

以下を rc.lua の末尾に追加します。yourtag は、これらのウィンドウを配置するタグです。0.15 の値は好みに合わせて調整できます。

awful.tag.viewonly(yourtag)
awful.tag.incmwfact(0.15, yourtage)

また、awful.client.setslave右側の必要なウィンドウに を使用すると、それらが切り替えられないことが保証されます。

{
    rule = { class = "URxvt" },
    callback = awful.client.setslave
},

プロパティを使用して、特定のアプリケーションをタグに誘導することもできtagます。

{
    rule = { class = "Firefox" },
    properties = { tag = browse }
},
{
    rule = { class = "URxvt", instance = "browse" },
    properties = { tag = browse },
},

次に、これらのアプリケーションを開くためのバインディングを次のように作成しました。

-- Custom programs
awful.key({ modkey, "Shift" }, "b", function()
    awful.tag.viewonly(browse)
    awful.util.spawn_with_shell("urxvt -name browse -e newsbeuter")
    awful.util.spawn("firefox")
end)

これが最終結果です。

これが最終結果です。

于 2011-02-28T06:44:49.250 に答える
5

または、フローティング連絡先リスト ウィンドウをストラットで使用することもできます。これにより、メッセージ ウィンドウが存在しない場合に、連絡先リスト ウィンドウが最大化されなくなります。また、CL ウィンドウを任意の (タイリング) ウィンドウの隣に配置することもできます。

チェックアウト: http://www.bramschoenmakers.nl/en/node/738

彼の実装は、私のバージョンの素晴らしいものでは少しバグがあります。問題は、すでに設定されているストラットを調整しないことです。

私の実装:

{ rule = { class = "Pidgin", role = "buddy_list" },
    properties = {floating=true,
                  maximized_vertical=true, maximized_horizontal=false },
    callback = function (c)
        local cl_width = 250    -- width of buddy list window

        local scr_area = screen[c.screen].workarea
        local cl_strut = c:struts()

        -- scr_area is affected by this client's struts, so we have to adjust for that
        if c:isvisible() and cl_strut ~= nil and cl_strut.left > 0 then
            c:geometry({x=scr_area.x-cl_strut.left, y=scr_area.y, width=cl_strut.left})
        -- scr_area is unaffected, so we can use the naive coordinates
        else
            c:struts({left=cl_width, right=0})
            c:geometry({x=scr_area.x, y=scr_area.y, width=cl_width})
        end
    end },

これにより、CL ウィンドウが左側に配置され、固定スペースが割り当てられます。

(会話ウィンドウのルールは必要ありません)

于 2012-05-29T09:47:02.513 に答える