LINUX.ORG.RU

Ещё два вопроса по awesome

 


0

1

Слегка передохнув, продолжаю с вашей многоуважаемой помощью повышать левел по сабжу.

Вопросы следующие:

1. Когда лучше ставить в rc.lua перед переменной слово 'local', а когда нет (смутное понимание о «короткоживущих» переменных у меня уж больно смутное)?

2. Замутив на рабстоле блекдже многострочный rss-виджет на wibox.widget.textbox, я огорчаюсь, что он как-то неаккуратненько выглядит, и хочу в нём обустроить выравнивание по ширине (как в html - 'justify'). Это возможно сделать малой кровью?

Спасибо за внимание.

★★★★★

Когда лучше ставить в rc.lua перед переменной слово 'local', а когда нет

Нужно ставить тогда, когда ты уверен, что вызов локальной переменной/функции не будет извне (то есть вне rc.lua, в т.ч. из awesome-client она уже видна не будет). Вообще, правильнее писать локальные переменные/функции, если это не модуль, функция/переменная которого и должна вызываться извне.

Замутив на рабстоле блекдже многострочный rss-виджет на wibox.widget.textbox, я огорчаюсь, что он как-то неаккуратненько выглядит, и хочу в нём обустроить выравнивание по ширине (как в html - 'justify'). Это возможно сделать малой кровью?

На данный момент нет. Только по центру, слева или справа. Да и скролл работает не так, как хотелось бы (он совершенно неинтерактивен), а вот у doraneko есть реализация годная, только в последних версиях она не пашет. А скролл в таких виджетах просто необходим.

r3lgar ★★★★★
()

Когда лучше ставить в rc.lua перед переменной слово 'local', а когда нет

По-простому, если ты объявляешь новую переменную (а не используешь объявленную где-то еще), то local нужно ставить всегда, кроме тех случаев, когда это не работает

«Не работать» может если переменная захватывается лямбда-выражением, тогда у каждого замыкания будет своя копия переменной и снаружи ты до нее уже не достучишься, а иногда нужно.

annulen ★★★★★
()
Ответ на: комментарий от r3lgar

Насчёт local понял, спасибо

А скролл в таких виджетах просто необходим

я решил это вертикальной циклической автопромоткой 1 строка в 3 секунды.

piyavking ★★★★★
() автор топика

2. Попробуй так:

t = wibox.widget.textbox('Some text witch need to be justified')
t._layout:set_justify(true)

-- Если больше не будешь обращаться к t, то надо сказать чтобы перерисовался
-- Для git версии
t:emit_signal("widget::redraw_needed")
t:emit_signal("widget::layout_changed")
-- Для 3.5 (не проверял)
t:emit_signal("widget::updated")

И да, word_wrap не болжен быть char.

doraneko
()
Последнее исправление: doraneko (всего исправлений: 1)
Ответ на: комментарий от doraneko

Работает «на ура», спасибо, justify достигнуто. Но всплыла нетривиальная проблема: выше я упомянул, что организовал вертикальную построчную автопромотку, так вот для её функционирования текст потока у меня с помощью fold предварительно нарезан «по ширине виджета по словам», чтоб иметь возможность считать строки. Так вот эти вот самые строки justify не «растягивает» на полную ширину виджета, то есть для того, чтоб иметь красивый вид, я должен скармливать виджету ненарезанный текст.

В принципе, можно поменять принцип автопромотки: за каждый шаг цикла отрезать не строку, а какое-то количество символов или слов. Скорее всего, так и поступлю.

Большущее спасибо за помощь!

piyavking ★★★★★
() автор топика
Последнее исправление: piyavking (всего исправлений: 2)

позвольте поинтересоваться, вам нужен тайловый вм для рабочих целей или просто «попонтоваться» перед друзьями?

w1nner ★★★★★
()
Ответ на: комментарий от w1nner

нет, не располагаю возможностью вам этого позволить. ваш звонок был очень важен для меня.

piyavking ★★★★★
() автор топика
Ответ на: комментарий от kep

не только ставил, но и настраивал все скрипты и пользовался около полугода в разных дистрибутивах

w1nner ★★★★★
()
Ответ на: комментарий от kep

не тайловый вм

не только тайловый вм

/FIXED

Wind ★★★
()
25 апреля 2017 г.
Ответ на: комментарий от doraneko

привет через год. надеюсь, у тебя всё в порядке. а ты не знаешь, как вот это в 4-й версии осома провернуть? гуглю сейчас усиленно, но чото всё не то...

piyavking ★★★★★
() автор топика
Ответ на: комментарий от piyavking
t = wibox.widget.textbox('Some text witch need to be justified')
t._private.layout:set_justify(true)
t:emit_signal("widget::redraw_needed")
t:emit_signal("widget::layout_changed")

Возможно сигналы дёргать не нужно, попробуй без. =)

doraneko
()
Последнее исправление: doraneko (всего исправлений: 1)
Ответ на: комментарий от doraneko

сигналы можно не дёргать, да.

спасибо огромное, сам бы я до этого шаманства ни в жизнь бы не докопался!

piyavking ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.