3

マスター クライアントにフォーカスを切り替えるキーバインドを作成したいと思います。このフォーラム スレッドの Profjim は次のように述べています。

現在のタグのマスター クライアントを取得するには:

c = awful.client.getmaster()

以下を試してみましたが、~/.config/rc.lua ファイルが無視されます。これは、ファイルにエラーがある場合の動作です。正しい構文を知っている人はいますか?

awful.key({ modkey,          , "e",  awful.client.getMaster()),

注: デフォルトのキー バインディングを使用している場合、"e" によって競合が発生することはありません。

編集: /r/awesomewmの誰かが、私の問題を解決するための構文を知っていました:

awful.key({ modkey,          }, "e",  function() client.focus = awful.client.getmaster(); client.focus:raise() end), 
4

1 に答える 1

2

構文エラーから始めましょう。ドキュメントからawful.key、関数ではなくテーブルのようです。そして、おそらくシーケンスではなくハッシュテーブルであるkeysを含むでしょう。

最後に、テーブルの構文が間違っています。フィールドは構文的に空にすることはできません。値が であっても、リストされた値が必要ですnil

したがって、基本的に、呼び出すことができないものに間違った種類の値を渡そうとしています。


それを正しく行う方法については...ドキュメントはわかりにくく、そう考えるのは私だけではないようです。

*深呼吸*

よし、キー バインダー (?)を作成し、キー バインディングを含むので、最初の結果を 2 番目に入れなければならないことは明らかです。 リンクのコードは単なるポインタであり、ウィンドウのフォーカスのみをカバーし、キーバインドを作成しません。awful.new(...) awful.key

次のようなものが欲しいようです:

function do_focus()
    current = client.focus
    master  = awful.client.getmaster()
    if current then
        client.focus = master
        master:raise()
    end
end

table.insert(awful.key, awful.new (modkey, 'e', nil, do_focus) )

上記のコードをテストする方法がないことに注意してください。

于 2013-09-23T19:38:03.010 に答える