2016-11-02 42 views
0

コンピュータ間でconfigを共有するために、自分のLuaのconky設定でカスタムのvarialを使用したいと思います。以下は動作しないんなぜ、それは簡単なLuaのコードを使用しています。Conky - Lua Config - カスタム変数

conky.config={..} 

-- set variables 
work = "COMPUTERNAME" 
lan = "wlp9s0" 
-- compare with current host name (conky's global variable) 
if work == nodename then 
    lan = "enp3s0" 
end 

-- use $lan in conky's text 
conky.text = [[${color yellow}$lan ${alignr}${addr wlp9s0}]] 

が、私は任意のドキュメントまたはカスタム定義された変数を使用する方法の例を見つけることができませんでした。 $ LANはConkyをを使用せずに解決し、$ {LAN}

+0

私は質問を編集して、 "うまくいかない"ということを指摘しました。 –

+0

私はConkyを初めて使っていますが、 'conky.text = [[$ {color {color {color}} $ {lan} $ {alignr} $ {addr wlp9s0}]] '、' lan'の周りに '{}'が追加されていますか? –

+0

{}はパラメータが関係している場合にのみ必要で、括弧の有無にかかわらず同じ効果がありません。 –

答えて

1

として印刷されていない、私はwikiで見つかったさまざまな構成セクションを読んだ後、私が作ったいくつかの仮定に基づいて回答を作成するつもりです。

'variables'フィールドと他のテンプレートフィールドの1つの用途は、Lua環境の一部ではないと思われます。つまり、$${}の構文では、値を補間するための環境ルックアップが実行されていない可能性があります。このは、比較する変数nodenameが実際にはnilであることを意味します。あなたのlan変数が展開されていない場合はいずれにしても

は、クイックフィックスは、単にあなたの文字列を連結することである。

conky.text = [[${color yellow}]] .. lan.. [[ ${alignr}${addr wlp9s0}]] 

それとも、クリーン探して、文字列をしたい場合は、あなた自身の文字列iterpolation機能を書いて考えます:

local function interp (s, t) 
    return s:gsub('(#%b{})', function (w) 
     return t[w:sub(3, -2)] or w 
    end) 
end 

conky.text = interp([[${color yellow}#{lan} ${alignr}${addr wlp9s0}]], { 
    lan = lan 
}) 

注意、nodenameはLuaの環境の一部でない場合には、あなたは012を使用して試すことができますを手動でhostnameに実行してから、それが返すファイルハンドルから読み取ります。

+0

はい、補間ヒントがトリックを行いました。私はLUAに新しい人物かもしれないが、それは自分自身の根本的な誤解かもしれない。ありがとうございました。答えを完成させるために、最初のノード名はConkyの一部であり、正しい値に解決されています。 conkyの中で文字列を連結すると、何らかの不明な理由によりテキストが機能しませんでした。何が私のために働いた。私は "conkyrc"の上に "if"文を入れ、 "template0 = [[$ {color yellow}]]]テンプレートを定義して、[[$ {alignr} $ {addr wlp9s0}]]"を使ってそれはconky.textで。 次の問題は、$ {addr $ lan}が機能していないため、 "$ {addr wlp9s0}"を解決することです。 –

+0

@JensPeters 'nodename'は実際の変数ですか、それはLua環境によって提供されているという意味でですか?それともテンプレート文字列で解決できるという意味でConkyの '変数'ですか? ConkyはあなたのLua [環境](http://www.lua.org/manual/5.3/manual.html#2.2)で変数を検索しないので、 '$ lan'は動作しません。 '$ {addr '.. lan ..'} ''や他の連結ソリューションを使うことができます。私は少し質問を更新して、環境をよりよく理解できるようにします。 – Oka