LINUX.ORG.RU

Awesome WM 4.0

 


6

6

25 декабря состоялся релиз Awesome 4.0 — тайлового менеджера окон, предоставляющего обширные возможности настройки посредством конфигурационного файла на Lua. Версия API изменена с 3.5 на 4, так что существующие конфигурации придётся переписывать.

Некоторые новые возможности:

Мышь и клавиатура

  • Добавлена возможность изменения размера окон при касании краёв экрана (как в популярных окружениях рабочего стола).
  • Добавлена возможность перетащить окно на соседний тэг мышью.
  • Реализовано прилипание окон.
  • Сочетание Mod4+S теперь вызывает виджет с подсказкой активных горячих клавиш.
  • Для определения и задания раскладки клавиатуры больше не требуется setxkbmap.

Раскладки окон

  • В awful добавлены отступы между окнами.
  • Добавлена возможность отключения поведения, когда «главное» окно занимает всё доступное место, если других окон нет. Например, для того, чтобы при использовании awful.layout.suit.tile.left единственное окно оставалось такого же размера, как и «главное» при наличии других окон.
  • Для тэгов добавлено свойство volatile, позволяющее автоматически удалять их при отсутствии клиентов.
  • Добавлена раскладка corner, позволяющая добавлять «второстепенные» окна как по горизонтали, так и по вертикали.

Взаимодействие с клиентами

  • Добавлена функция awesome.kill(), позволяющая отправлять клиентам сигналы.
  • Значительно доработаны правила: теперь можно менять их в процессе работы и определять очерёдность их применения, добавлены новые возможности управления фокусом.
  • Функция awful.spawn() теперь позволяет определять правила во время запуска клиента, а в awful.prompt стало возможным использование горячих клавиш и преобразование команд.

Виджеты

  • Добавлены виджеты checkbox, piechart, progressbar и slider.
  • Возвращён и исправлен qml-подобный декларативный способ построения виджетов в виде дерева.

API

  • Многие объекты, ранее бывшие неизменяемыми, теперь позволяют менять своё состояние.
  • Упрощён доступ к свойствам awful:
    -- Before
    awful.client.floating.set(c, true)
    
    -- Now
    c.floating = true
    
  • Аналогично переработан доступ к свойствам виджетов.
  • Возвращена поддержка декларативного описания виджетов.

Также официальный сайт Awesome переместился на https://awesomewm.org.

>>> Полный список изменений

★★★★★

Проверено: Klymedy ()
Последнее исправление: sudopacman (всего исправлений: 7)

Ответ на: комментарий от r3lgar

Чтобы в статике изменить расположение окон, нужно жать в кнопки.

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

На то она и статика, что нельзя преднастроить поведение окон полностью (то есть расположение относительно других окон, где, как, когда и что показывать)

В статике заранее настраивается поведение для нужных окон. Ровно как и в динамическом оконном менеджере.

больше половины нужно делать руками.

Как и везде, если желаемое поведение не совпадает с дефольтным конфигом.

То есть без участия пользователя WM сам ничего не сделает.

Без настройки правил сделает то, что задумано по-умолчанию.

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

Спору нет. Для меня в итоге статика оказалась удобнее.

В динамике очень много проблем, из-за которых конфигурирование невозможно, а без этого это уже не динамика.

Тем не менее, можно желаемое можно описать правилами, которые удовлетворят запрос пользователя.

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

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

Но на активном лайауте расположение следующего открытого клиента предсказуемо. На статике ты должен переключить режим разбиения фрейма, чтобы расположить следующий клиент так, как надо.

В статике заранее настраивается поведение для нужных окон. Ровно как и в динамическом оконном менеджере.

А вот этого я не знал. Надо будет попробовать. Возьму нетбук — потыкаю.

Как и везде, если желаемое поведение не совпадает с дефольтным конфигом.

В предыдущем абзаце ты развеял моё заблуждение о том, что это нельзя настроить в статике. В таком случае данное моё утверждение неверно.

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

На статике ты должен переключить режим разбиения фрейма, чтобы расположить следующий клиент так, как надо.

Нет, в статике следующее окно откроется согласно правилам - в нужном теге, в нужном фрейме, с нужными параметрам.
Никаких режимов для этого переключать не нужно. По умолчанию окно откроется в активном фрейме в новом табе.

А вот этого я не знал. Надо будет попробовать. Возьму нетбук — потыкаю.

Если возникнет желание использовать ion3, то нужно быть готовым к настройке клуджей (там описываются правила для окон) и подключению нужных модулей. Второе делается легко и просто (в осоме было существенно сложнее), а настройка клуджей может попить крови (привет настройка поведения gimp ;)

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

По умолчанию окно откроется в активном фрейме в новом табе.

Значит, я попутал поведение с i3? Там поведение как в tmux, или где-то ещё?

в осоме было существенно сложнее

Зато более гибко. (= Я люблю покрасноглазить.

настройка клуджей может попить крови (привет настройка поведения gimp ;)

Я так и не осилил настроить gimp. Там Ад и Израиль. Но там это не критично, а вот поведение WM — это первостепенно.

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

Значит, я попутал поведение с i3?

Если мне память не изменяет, то в i3 динамический тайлинг с возможностью ручного деления фреймов.

Там поведение как в tmux, или где-то ещё?

Tmux не использую, но да, так как в screen - каком фрейме запустил, там окно и открылось (если в правиле для запускаемого приложения / окна не прописано иное).

Зато более гибко. (= Я люблю покрасноглазить.

В ion3 тоже можно добраться до кишек и сделать что угодно, если есть на то желание. В осоме меня напрягало несколько вещей - чуть ли ни каждый минорный релиз ломал мой конфиг и неумение сваливаться на дефольтный конфиг, если в текущем закралась ошибка. А при написании своего сложного конфига, такое встречалось часто. Хорошо, что в осоме была команда, которой можно было сделать осом-рестарт из другой консоли.

Я так и не осилил настроить gimp.

Я когда-то принял такое решение - настраивать не все, а только то, что нужно.

Там Ад и Израиль.

Это да.

Но там это не критично, а вот поведение WM — это первостепенно.

Да.

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

Если мне память не изменяет, то в i3 динамический тайлинг с возможностью ручного деления фреймов.

Мне казалось, наоборот. Не столь важно.

каком фрейме запустил, там окно и открылось (если в правиле для запускаемого приложения / окна не прописано иное)

Не очень удобно, но технически подход верный.

В ion3 тоже можно добраться до кишек и сделать что угодно, если есть на то желание.

Если ковырять компилируемый код, то ну его нафиг. Так можно было бы и на прародителе awesome, dwm, сидеть, но меня каждый чих компилять не вдохновляет.

В осоме меня напрягало несколько вещей - чуть ли ни каждый минорный релиз ломал мой конфиг

Да, было такое. Сабжевый релиз обещает это дело поправить.

неумение сваливаться на дефольтный конфиг, если в текущем закралась ошибка.

Это было настолько давно, что мало кто это помнит. >=3.5.2 почти всегда (это если считать коммиты, в релизах не почти, а абсолютно всегда) корректно сваливался в дефолт при ошибке, хоть и засирал экран уведомлениями об ошибке.

Хорошо, что в осоме была команда, которой можно было сделать осом-рестарт из другой консоли.

Так она и сейчас есть, awesome-client. В сабжевом релизе его сделали сильно лучше, но я видел только код, на практике он мне уже давно не пригождался.

Я когда-то принял такое решение - настраивать не все, а только то, что нужно.

Настроить всё невозможно. Я тоже настраиваю только критичное, а остальным занимаюсь когда есть время и нечем заняться (не игры же гонять).

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

Если ковырять компилируемый код, то ну его нафиг.

Можно ковырять и сам оконный менеджер, а можно просто ковырять конфиг. Он, как и в осоме, на lua.

Так можно было бы и на прародителе awesome, dwm, сидеть, но меня каждый чих компилять не вдохновляет.

Ну dwm пересобирается чуть быстрее, чем мгновенно. Да и делать это нужно только при настройке.

Сабжевый релиз обещает это дело поправить.

Это прекрасно.

>=3.5.2 почти всегда (это если считать коммиты, в релизах не почти, а абсолютно всегда) корректно сваливался в дефолт при ошибке, хоть и засирал экран уведомлениями об ошибке.

Не знал. К тому времени я уже свалил с осома.

Так она и сейчас есть, awesome-client.

Угу, про нее и речь. С ее помощью я еще обновлял состояние инфо-бара по событию (к примеру, хоткей изменения громкости). Это было удобно, никакого полинга по таймеру.

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

echo 'cjNsZ2FyQG9wZW5tYWlsYm94Lm9yZw==' | base64 -d | xargs

На макоси нужно так:

echo 'cjNsZ2FyQG9wZW5tYWlsYm94Lm9yZw==' | base64 -D | xargs

поскольку BSD-шные тулы настолько протухшие и кривые, что даже родную команду не понимают:

$ base64 -h
base64: invalid option -- h
Usage:	base64 [-hvD] [-b num] [-i in_file] [-o out_file]
  -h, --help     display this message
  -D, --decode   decodes input
  -b, --break    break encoded string into num character lines
  -i, --input    input file (default: "-" for stdin)
  -o, --output   output file (default: "-" for stdout)

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

Приватное и обычное окна браузера

Ну вот разве что. Хотя в конечном итоге мне удобнее всего с браузеров оказался удобнее всего полноэкранный режим (на мониторах до 22 дюймов, во всяком случае) с вкладками справа. Тогда вкладки ни к чему совершенно.

вёрстка и просмотр LaTeX…

Ну это как раз удобно делать бок о бок, чтоб видеть сразу, а переключаться туда-сюда неудобно.

Да много чего можно сделать удобнее с табами

Вот до сих пор не согласен.

anonymous
()
Ответ на: комментарий от andreyu

Можно ковырять и сам оконный менеджер, а можно просто ковырять конфиг. Он, как и в осоме, на lua.

Я боюсь конфигов только на питоне. И на сях.

К тому времени я уже свалил с осома.

То есть самое весёлое (и эротическое) время ты пропустил. 3.5.1-3.5.6 — это время удивительного секса. xD

С ее помощью я еще обновлял состояние инфо-бара по событию (к примеру, хоткей изменения громкости). Это было удобно, никакого полинга по таймеру.

Не помню, как в 3.4, но уже давно хоткей сам по себе выступает событием (можешь посмотреть код моего виджета для mpd в качестве примера), потому awesome-client нужен в крайне редких случаях, чтобы можно было пинать осом из скриптоты, например.

поскольку BSD-шные тулы настолько протухшие и кривые, что даже родную команду не понимают

Так как на фряхе я ниасилил поднять android tethering, я даже не добрался до ковыряния утилит. Впрочем, строка была скорее для тех, кто не умеет распознать в строке base64; те, кто знает, что такое base64, знают, что с ним нужно делать и как.

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

Ну это как раз удобно делать бок о бок, чтоб видеть сразу

На недобуке будет крайне не удобно, так как и код не будет помещаться, и контент в окне просмотрщика. Но да, по большей части ты прав.

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

Ну тогда держи их развёрнутыми на одном рабстоле, делов-то куча. Зачем плодить сущности?

anonymous
()
Ответ на: комментарий от alozovskoy

У него есть вменяемый режим «все панели в одном окне»

Спасибо, Кэп.

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

Затем, что есть монитор, в котором есть таги, в которых есть фреймы, в которых есть клиенты. Таким образом можно переключаться между тагами, на каждом из которых свой тип задач и между фреймами, в каждом из которых своя задача.

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

есть вменяемый режим «все панели в одном окне»

Это лишь малая часть возможностей.

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

Спасибо, забрал, уже ковыряю и потихоньку костылю.

С праздничком, тогда.

Пока что-то такое получается:

3.14-здец какой-то, лол. Попробуй wibox.container.rotate. И лучше это делать в Xephyr. Особенно в праздники.

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

3.14-здец какой-то, лол. Попробуй wibox.container.rotate. И лучше это делать в Xephyr. Особенно в праздники.

С праздником)
Для тупых объяснишь в чем прикол?.
Себе уже под арч собрал да все никак руки не дойдут настроить ибо всего хватает, убрал лишь кнопки управлением окнами.

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

Не-не, всё как надо, ну, на данном этапе :)
Трей кошмарный, но он искаропки не умеет быть вертикальными полосочками, надо перекатить патч systray.c на 4.0, будет получше. А остальное всё перекрашивается-фиксится без особых проблем.

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

Щи, как теперь разместить тасклист по центру? >_<

Первый нормально рисуется сверху, второй нормально прибивается к низу, а центральный теперь рисуется сразу после верхних виджетов, вместо того чтоб лечь посередине.

    s.mywibox:setup {
        layout = wibox.layout.align.vertical,
        { -- Left widgets
            layout = wibox.layout.fixed.vertical,
            s.mytaglist,
            s.mypromptbox,
        },
        { -- Middle widget(s)
            layout = wibox.layout.fixed.vertical,
            s.mytasklist,
        },
        { -- Right widgets
            layout = wibox.layout.fixed.vertical,
            mykeyboardlayout,
            wibox.widget.systray(),
            mytextclock,
            s.mylayoutbox,
        },
    }

NeverLoved ★★★★★
()

О, в nixpkgs оно доехало, отлично.

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

Для тупых объяснишь в чем прикол?.

Котнтейнер позволяет вращать его содержимое. Таким образом можно отображать текст вертикально в вертикальной панели. Ты уже достаточно выпил, чтобы не заморачиваться. (=

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

надо перекатить патч systray.c на 4.0, будет получше.

После портирования на 4.0, будь так любезен, вбрось его в issue (или в awesome, или в мой оверлей; если его не примут в апстриме, я его утащу к себе в оверлей, будет юзом), это полезная фича.

Щи, как теперь разместить тасклист по центру?

Да никак. Можешь переписать сам виджет тасклиста, но щаз логика такая, что align лишь растягивает своё содержимое. Увы.

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

Можешь сбросить свой виджет отображения заряда батареи?

Сходи сюда, там есть всё. Но это не индикатор батареи, а индикатор UPS, работает через NUT (upsmon).

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

Да никак. Можешь переписать сам виджет тасклиста, но щаз логика такая, что align лишь растягивает своё содержимое. Увы.

Вот говно. Как переписывать-то его? Сунуть в него wibox.layout.align.expand=outside?

Алсо, он, судя по всему перестал читать .bashrc, у меня отвалился кастомный PATH в promptbox.

Алсо, раньше в promptbox всегда вводились только англицкие буквы, независимо от раскладки. Это поведение можно вернуть взад без очевидных костылей в виде установки раскладки во время вызова виджета?

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

После портирования на 4.0, будь так любезен, вбрось его в issue (или в awesome, или в мой оверлей; если его не примут в апстриме, я его утащу к себе в оверлей, будет юзом), это полезная фича.

Обязательно, но он пока не готов для апстрима, там даже кол-во колонок захардкодано. Патч не я делал, попросил друга-плюсовика, он адаптирует патч для меня ещё с первых 3.5.х. Попытаемся подпилить и виджет и systray.c, и выкатим.

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

Вот говно. Как переписывать-то его?

Там проблема в wibox.layout.fixed. Это он норовит рисоваться с начала. Суть проблемы я пока не понял. У меня щаз другая задача стоит, потому не до этого было.

Алсо, он, судя по всему перестал читать .bashrc, у меня отвалился кастомный PATH в promptbox.

Тут уж не подскажу, у меня zsh, zshenv он тоже не жрёт.

Алсо, раньше в promptbox всегда вводились только англицкие буквы, независимо от раскладки. Это поведение можно вернуть взад без очевидных костылей в виде установки раскладки во время вызова виджета?

Вернуть багу с нерабочей мышью при кастомной раскладке? Не пробовал.

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

Попытаемся подпилить и виджет и systray.c, и выкатим.

Если не примут в апстрим, я приму его в качестве опционального патча с юзом, если что. Если код не будет совсем говном, лол.

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

Вернуть багу с нерабочей мышью при кастомной раскладке? Не пробовал.

Не, багу я обходил старой версией xkbcomp, всё работало нормально, но при этом независимо от выбранной раскладки win+r всегда была английская.

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

Там проблема в wibox.layout.fixed. Это он норовит рисоваться с начала. Суть проблемы я пока не понял. У меня щаз другая задача стоит, потому не до этого было.

Кастани меня как решишь, пожалуйста. Я, наверное, откачусь до 3.х, а то чего-то сильно печально. Я думал просто восстановить свою шкуру для осома, а тут, оказывается, даже позиционирование виджетов разломали, не говоря уже о правилах и прочих развеселых вещах.

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

Не, багу я обходил старой версией xkbcomp, всё работало нормально, но при этом независимо от выбранной раскладки win+r всегда была английская.

Но причина-то кроется в логике, которая делала эту багу, я думаю.

Кастани меня как решишь, пожалуйста. Я, наверное, откачусь до 3.х, а то чего-то сильно печально. Я думал просто восстановить свою шкуру для осома, а тут, оказывается, даже позиционирование виджетов разломали, не говоря уже о правилах и прочих развеселых вещах.

Обязательно кастану, только это будет нескоро, так как у меня щаз секас с другим кодом, который продлится как минимум до конца января (мораль сей басни такова: нефиг писать код в новогоднюю ночь).

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

На вкус и цвет фломастеры разные, но повсеместное отсутствие отступов между элементами и от края панели, делает меня развидеть это. (=

Алсо, я тут разобрался, как юзать wibox.layout.align:

s.side:setup {
	layout = wibox.layout.align.vertical,
	expand = "outside",
	{
		layout = wibox.layout.fixed.vertical,
		nil
	},
	s.mytasklist,
	{
		layout = wibox.layout.fixed.vertical,
		nil
	}
}
Это отняло всего три минуты времени чтения документации (если бы отняло больше получаса и/или требовало писания патчей, я бы отложил до завершения своей основной задачи). Накатывай сабж обратно! xD

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

Так как на фряхе я ниасилил поднять android tethering

Чего? man urndis, мне даже осиливать не пришлось, завелось с первого раза.

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

Так как на фряхе я ниасилил поднять android tethering

Чего? man urndis, мне даже осиливать не пришлось, завелось с первого раза.

Не осилил не потому, что сложно, а потому, что не до этого сейчас. Фряха у меня будет стоять или на сервачке, или на недобуке, но это не сейчас.

r3lgar ★★★★★
()

Не стану плодить треды (так как я не создаю тредов).

На заметку гентушникам:
Теперь x11-wm/awesome-9999-r2::nightmare собирается со всеми слотами dev-lang/lua и с dev-lang/luajit (последний требует dev-lua/lgi[luajit], который, увы, брать пока в оверлее lua (чтобы исправить данное упущение, нужно отковырять пакет от lua.eclass, и приаттачить ебилд в issue в репе моего оверлея, в идеале было бы неплохо его ещё и мейнтейнить, но в крайнем случае я возьму данную обязанность на себя)). До x11-wm/awesome-4.x дело дойдёт только тогда, когда [inline[dev-lua/lgi[luajit] появится у меня в оверлее, или в основном дереве (в чём я сильно сомневаюсь).

Кастуются гентушники-осомоводы (простите, если кого лишнего скастовал): NeverLoved, backbone, stage3, больше никого не нашёл.

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

так как я не создаю тредов

Это квест какой-то?

Тебе жалко, что ли? Коммент относится к сабжу? — Относится. Да, немного дистроспецифично, но по большому счёту не мешает. Я хотел данную информацию запоситить в дополнение к следующему своему скриншоту, но пока дело дойдёт до, новость в комменте уже сильно протухнет.

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

Интересно попробовать, если не придётся перелопачивать конфиг.

Если у тебя 3.5.9, то там минимум перелопачивания. А вот с более старых версий там ад и израиль. Впрочем, сабжевый релиз обещал быть стабилизирующим.

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

Там нечему пугаться, надо только прочитать changelog (там немного, всего две страницы, лол) и переписать всё, на что ругается awesome при старте. Остальное (deprecated) можно переписать позже.

Мне, как сидящему на git-master, все эти страхи чужды. (=

r3lgar ★★★★★
()

надо бы заценить как-нить.

а как он в сравнении с прочими WM по жручести ресурсов и скорости?

программирование конфигов меня не пугает, но достаточно ли там конфигурабельности - вот вопрос.

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

а как он в сравнении с прочими WM по жручести ресурсов и скорости?

Зависит от обвеса. Вообще, он шустрый, но если обмазаться кривыми виджетами и либами — будет тормозить, ибо lua.

программирование конфигов меня не пугает, но достаточно ли там конфигурабельности - вот вопрос.

Более чем.

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

ну, я бы не сказала, что luа тормозит.

Он однопоточный, потому, коряво написанный код обязательно будет тормозить всё остальное, в частности интерфейс.

он же не весь на нём написан, я надеюсь? или весь?

Он написан на сишке, но все его либы написаны на lua, оттого по гибкости ему равных нет. Совсем нет.

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

Он написан на сишке, но все его либы написаны на lua, оттого по гибкости ему равных нет. Совсем нет.

я много С+luа реализаций видела, и сами такое использовали. если не слишком много отдавать на выполнение в luа, то можно получить профит. всё в меру, конечно. а так luа же можно запускать в разных потоках, как я понимаю, в каждом своё состояние luа-машины, если не ошибаюсь. не самое оптимальное решение, но всё-таки. и он мелкий, лёгкий и линкуется статически.

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

если не слишком много отдавать на выполнение в luа, то можно получить профит

Lua 64.0%
C 33.2%
CMake 1.9%
Other 0.9%

А профит всё же есть. :3

а так luа же можно запускать в разных потоках, как я понимаю, в каждом своё состояние luа-машины, если не ошибаюсь

Это реализуется в сишном коде. У сабжа с этим проблем нет, но кривые руки никто не отменял. Если ты напишешь корявый lua-код, то причёсанный сишный код тебя ну никак не спасёт. Причём, если писать нормальный код, то на отзывчивости сабжа это никак не сказывается.

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