2014-09-23 9 views
2

나는 vicious (v2.1.3-1)을 사용하여 멋진 wm (v3.5.5-1)에서 위젯을 구성합니다. 시간을 위젯에 표시하고 싶습니다. 그런 다음 시간 위젯을 가리키면 툴팁에 날짜가 표시됩니다.awmome wm/vicious widget : 형식 함수를 사용하면 잘못된 인수 오류가 발생합니다.

내 rc.lua 파일의 악순환 사용하여 다음 코드는 잘 작동 :

myclock = wibox.widget.textbox() 
vicious.register(myclock, vicious.widgets.date, " <span color='#ffffff'>%H:%M</span> ") 
myclock_tooltip = awful.tooltip ({ objects = { myclock } }) 
vicious.register(myclock_tooltip, vicious.widgets.date, " %a %d %b ", 60) 

을 그러나, 나는 두 vicious.register 문 결합 할 때합니다 (포맷 기능에 기반을 vicious readme file 섹션) :

/usr/share/lua/5.2/vicious/widgets/date.lua:23: bad argument #1 to 'date' (string expected, got function) 
:

myclock = wibox.widget.textbox() 
myclock_tooltip = awful.tooltip ({ objects = { myclock } }) 
vicious.register(myclock, vicious.widgets.date, 
    function (widget, args) 
     myclock_tooltip.set_text(" %a %d %b ") 
     return " <span color='#ffffff'>%H:%M</span> " 
    end) 

는 나는 다음과 같은 오류가 발생합니다

내가 잘못 가고있는 제안이 있으십니까?

답변

2

?하지 않습니다 다음 작업?

myclock = wibox.widget.textbox() 
myclock_tooltip = awful.tooltip ({ objects = { myclock } }) 
vicious.register(myclock, vicious.widgets.date, " <span color='#fffff'>%H:%M</span> ") 
myclock_tooltip_timer = timer({ timeout = 3600 }) 
myclock_tooltip_timer:connect_signal("timeout", function() 
    myclock_tooltip:set_text(os.date(" %a %d %b ")) 
end) 
myclock_tooltip_timer:start() 
myclock_tooltip_timer:emit_signal("timeout") 

위젯에 "정상적인"악성 프로그램을 사용하고 툴팁을 시간당 한 번씩 실행되는 별도의 타이머로 업데이트합니다.

+0

샘플 코드를 보내 주셔서 감사합니다. 나는 타이머를 사용하는 것에 대해 조사하기 시작했고 이것은 나에게 좋은 출발점을 제공한다. 그러나이 코드는 툴팁을 "% a % d % b"문자열로 설정합니다. 또한 툴팁을 초기화하지 않으며 'myclock_tooltip : set_text'가되어야합니다. – maninashed

+0

다음 줄을 사용하여 툴팁을 초기화하고 업데이트 할 수 있습니다 :'myclock_tooltip : set_text (os.date ("% a % d % b"))'. – maninashed

+0

와우 & 감사합니다. 누락 된'os.date' 호출을 추가하고': set_text'로 전환하고 마지막에 새로운 : : emit_signal()을 추가하여 툴팁의 텍스트를 초기 설정했습니다. –

1

기술적 인 관점에서 잘못 생각한 것은 아닙니다. 필자는 위젯이 함수 형식을 허용하지 않는다고 (그리고 소스를 간략하게 살펴 본다) 생각한다.

일부 위젯은 (위젯 기능에서 사용할) 형식 문자열을 사용하고 일부 기능은 (위젯 기능의 결과로 호출 할 수 있음) 보이지만 README에서 명확한 표시가 보이지 않습니다 어느 쪽입니다.

date.luaworker 기능과 worker 기능을 예를 들어 uptime.lua과 비교하십시오.

date.lua 기능 os.date의 호출에 format 인수 사용 (당신이 점점 오류를 생성하는 어떤 로컬 os.date(function()end)를 호출하십시오).

uptime.lua 기능은 내부적으로 그 함수의 반환 값에 아마도이 vicious에 의해 호출되는 모든에서 format 인수를 (사용하지 않습니다.

을이 명확하게하기 위해 문서를 업데이트받을 것을 요청 아마 가치가있다 (당신이 전혀 그 포맷 기능이 필요합니까 왜 나 자신까지 문서를 수정하고) 그것을 위해 패치를 제출.

+0

안내 주셔서 감사합니다. 매우 유용합니다. 나는 루아를 처음 사용하기 때문에 문법에 익숙해 져있다. – maninashed