Интересное в мире Linux

15.10.2018

Традиционно, осенью выходят новые версии популярных Linux-дистрибутивов. Лично я ожидаю в ближайшее время следующие интересные мне релизы:

  1. elementaryOS Juno. Это те самые ребята, которые предлагают платить за халтурно сделанные приложения. Несмотря на это, новая версия ОС, скорее всего, будет в целом очень удачной. Я немного потестировал Juno Beta 2 и не могу не отметить очень высокую производительность рабочего стола и кучу мелких улучшений в интерфейсе. Уведомления сделаны шикарно, а режим «картинка в картинке» вообще огонь: такого нет сейчас больше нигде.
  2. Fedora 29. «Тяп-ляп и готово — вышла новая Федора». Несмотря на то, что F29 пока не вышла, это лозунг сохраняет актуальность. Тем не менее, Fedora — это «родная» стихия для новейших версий Gnome Shell, а также полигон для множества интерфейсных улучшений. Сама концепция Gnome Shell не сильна удобна (недаром её все ругают), но проблема решается дополнительными расширениями и Gnome Tweak Tool. Лично для меня одно из принципиальных удобств GTK3-программ — это наличие предварительного просмотра в диалоге печати. Печатать изображения во многих GTK3-программах с некоторых пор очень удобно! Ещё Fedora уже давно стабильно работает с Wayland, это тоже плюс.
  3. OpenMandriva Lx 4. Это небольшой проект, за которым я слежу последние несколько лет. Вообще, нельзя не заметить, что все существующие сейчас потомки Mandriva Linux медленно помирают. Mageia стала выходить очень редко, а её русскоязычное сообщество скатилось до того, что выкладывает репозитории пакетов на Яндекс-диске (своей инфраструктуры, видимо, нет). Rosa уже который год поддерживается маленькой кучкой энтузиастов ис не получает какой-либо помощи от своего вроде-бы хозяина в лице НПО «Ангстрем». О каких-то новинках там речи не идёт — хватило бы сил просто обновлять пакеты. На этом фоне нельзя сказать что OpenMandriva сильно лучше, но хотя бы в ней просматриваются интересные изменения. В своё время разработчики пересобрали весь дистрибутив компилятором Clang, что привело к сугубо положительному эффекту: субъективно рабочий стол Plasma 5 работает в OpenMandriva очень плавно и отзывчиво. Главная новинка грядущей версии LX 4 — это работающий пакетный менеджер DNF. Ранее его портивали к себе коллеги из Mageia, теперь же настала очередь и OpenMandriva. DNF должен со временем заменить URPM, который уже давно не развивается.
Реклама

Немного о типографике

09.10.2018

Время от времени мне приходится что-то верстать, а это значит, что обойтись без памятки об использовании пробелов и тире обойтись не получится ☺. Для набора дополнительных символов на клавиатуре я использую типографскую раскладку И. Бирмана. Частично она и так реализована в Linux (в настройках клавиатуры нужно поставить флажок в Разных параметрах совместимости → Включить дополнительные типографские символы), но более правильная реализация находится тут.

Здесь же я приведу некоторые правила, которые чаще всего пригождаются при вёрстке.

Итак, помимо дефиса, который и так все лепят без разбора, во всех приличных шрифтах есть длинное и короткое тире. Короткое ещё иногда называют средним, но только в тех случаях, когда по какой-то причине используется отдельный символ для ещё более короткого тире. Длинное тире — это обычное русское тире, пунктуационный знак (как в этом предложении). Вместе с тем, короткое тире используется для указания диапазона (3 – 5 часов), причём кое-где считается, что оно не отбивается пробелами. Неплохое разъяснение про «чёрточки» нашлось тут, хотя сам текст содержит слишком много неточностей и спорных утверждений.

С пробелами история интереснее. В типографике много разновидностей пробелов, причём большинство — это доли круглой шпации и служебные символы для более грамотного переноса строк при полной выключке. Лично мне пока пригодились следующие виды пробелов:

  • Неразрывный пробел обычной длины;
  • Тонкая шпация (⅛ круглой шпации);
  • Волосяная шпация (24-я доля круглой шпации).

Тонкую шпацию приходится использовать очень часто. Она отделяет инициалы (напр. А. Н. Толстой) и части сокращённых слов (и т. д.). Также, в некоторых шрифтах полезно ставить тонкую шпацию вокруг длинных тире вместо пробелов стандартной длины, чтобы не было заметных «дыр» в наборе.

Волосяную шпацию я использую в спорных случаях, когда чётких правил нет, либо имеется противоречие между разными авторитетными точками зрения. Я ставлю её вокруг короткого тире при указании диапазона (здесь её явно не хватает), и ещё между последней цифрой числа и обозначением единицы (напр. 50 %).

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

Напоследок, оставлю тут ссылку на замечательный материал «Рецепты хорошей типографики».


Оформление Plasma: разные цвета приложений

09.10.2018

Я собирался было написать следующую заметку о том, какие существуют визуальные стили для приложений Qt5, но подумал, что для начала следует использовать возможности оформления, не меняя стандартный стиль Breeze.
Рабочий стол KDE Plasma 5 очень гибкий и настраиваемый. В частности, он позволяет одновременно запускать по-разному оформленные программы. Например, так:

Как это сделать?

Всё довольно просто: нужно создать директории, в которых будут храниться наборы настроек для каждого варианта оформления. После завершения настройки нужно будет запускать приложения, меняя значение переменной XDG_CONFIG_HOME. Теперь подробнее.

Для примера, показанного на картинке, я создал две дополнительные директории: ~/.dark и ~/.yellow. Расположение и названия, на самом деле, могут быть любыми, это не так важно. Далее я запускаю Параметры системы из командной строки для настройки «тёмного» профиля для Konsole:
XDG_CONFIG_HOME=~/.dark systemsettings5
В открывшемся окне я могу настроить что угодно: цвета, наборы значков, шрифты, стиль элементов управления и многое другое. После нажатия кнопки Применить в ~/.dark появятся новые файлы:


Теперь можно запустить какое-нибудь приложение с настроенным профилем. Например:
XDG_CONFIG_HOME=~/.dark konsole

Однако, что делать с рамками окон? Нам поможет замечательная функция в KDE под названием Особые параметры окна:

Мы создадим правило для окна с классом konsole, принудительно задав ему цветовую схему заголовка на вкладке Внешний вид и обход проблем:

В результате, приложение Konsole будет выглядеть аккуратно и в одной цветовой гамме. Аналогично можно сделать и «жёлтый» профиль для калькулятора.

Вообще, отдельные параметры для окон в KDE — это очень мощная и недооценённая функция. С её помощью можно настраивать очень многие штуки. В качестве примера я покажу, как может выглядеть Gimp:


Оформление Plasma: скругление углов

08.10.2018

В этой небольшой заметке я хочу показать, как можно сделать красивые скруглённые углы у окон при работе с рабочим столом KDE Plasma 5.

Большинство тем оформления для оконного менеджера Kwin5 (который как раз и отвечает за «рамки окон») и так имеют небольшое скругление. Это относится и к стандартной теме Breeze. Окно приложения с этой темой выглядит так:

Screenshot_20181008_171457

Тем не менее, существует такая интересная штука как ShapeCorners. Это дополнительный эффект для Kwin5, который дорисовывает чуть большее скругление. Результат выглядит следующим образом:

Screenshot_20181008_171559

Рассмотрим поближе:

Тепер самое интересное: как этот эффект установить и включить?

В принципе, ничего сложного нет 🙂 Итак:

    1. Забираем cебе срез репозитория:
      git clone https://git.code.sf.net/p/shapecorners/code shapecorners-code
    2. Создаём директорию для сборки:
      mkdir shapecorners-code/build && cd "$_" # люблю такие штуки!
    3. Далее нужно запустить команду cmake, указав расположение файла CMakeLists.txt. В данном случае, он находится уровнем выше (..), плюс я специально задаю префикс и расположение системной директории с библиотеками. Этого делать не нужно если вы хотите потом установить скомпилированные файлы в /usr/local:
      cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=/usr/lib64 ..
      На данном этапе, команда cmake, скорее всего, будет ругаться на недостающие зависимости для сборки: их нужно будет доустановить, после чего повторить указанную выше команду. Потребуется около дюжины пакетов вида lib64qt5*-devel, lib64kwin5*-devel и lib64kf5*-devel прежде чем cmake прекратит ругаться.
    4. Далее сборка и установка:
      make && sudo make install

После этого можно будет открыть Параметры системы (systemsettings5), перейти в раздел Поведение рабочей среды > Эффекты и включить новый эффект ShapeCorners:

Screenshot_20181008_174037

На сегодня всё. До новых встреч!


Мои статьи в Fedora Magazine

02.10.2018

1234

У меня вышли четыре статьи в популярном журнале для пользователей Fedora Linux.  В частности:

Самой полезной, как мне самому видится, оказалась последняя статья, и именно на эту тему я недавно писал здесь (см. пост про Waifu2x). Однако, надеюсь, что и остальное вам тоже понравится!

 


Интересные места на фото

14.09.2018

Глядя на эти снимки, никогда не скажешь, что это Петербург:

18,35,237,236.42634613,17,204,234.165100

Хочу собрать коллекцию подобных видов.


Растягивание изображений без потерь

05.09.2018

Надеюсь, у меня получился громкий заголовок 🙂 На самом деле, никакого волшебного растягивания без потерь не существует, разве что в голливудских фильмах. В реальном мире есть неплохой алгоритм xBR для растягивания рисованных изображений, есть удобная программа Smilla Enlarger со своей собственной реализацией этой функции для неплохого увеличения фотографий. Но есть и кое-что получше: Waifu2x. В принципе, у этой программы говорящее имя, ведь тут видны отсылки к аниме и к «увеличению вдвое». Так и есть, Waifu2x отлично справляется с растягиванием именно аниме, и всего, что на него похоже. Но и все прочие типы изображений, включая фотографии, Waifu2x увеличивает очень даже неплохо, как минимум не хуже чем обе другие программы, которые я упомянул выше.

Секрет Waifu2x в использовании двух мощных компонентов:

  • Torch7 — MATLAB-подобной библиотеки для языка программирования Lua с открытым исходным кодом, которая предоставляет большое количество алгоритмов для глубинного обучения и научных расчётов;
  • Nvidia CUDA — набора для разработки приложений, в которых часть вычислений производится на графическом процессоре Nvidia.

Таким образом, для развёртывания Waifu2x в Linux вам потребуются видеокарта Nvidia, адекватная инструкция (наподобие этой), терпение и приличный запас кофе. Однако разработчики Waifu2x cжалились над теми, кто не обладает хотя бы одним из перечисленных выше элементов, и выкатили веб-версию своего конвертера. Теперь растягивание доступно каждому!

Мы же пойдём третьим путём. В недрах Гитхаба, который, слава Богу, не испорчен пока Майкрософтом, нашлась альтернативная реализация нашего растягивателя. Она называется Waifu2x-converter-cpp и отличается тем, что для работы не требуется наличие графического ядра Nvidia. По сути, это «программная» реализация Waifu2x, которая работает только с ЦП (и потому медленнее), но гораздо проще в установке и настройке. Например, для пользователей openSUSE имеется уже готовый пакет, который нужно просто установить. Поскольку у меня не Tumbleweed, а Leap 15, я скачал пакет с исходным кодом и пересобрал его сам, это заняло не более 5 минут.

Для растягивания картинки следует использовать следующий синтаксис:
waifu2x-converter-cpp --scale_ratio <X> -i <исходный файл> -o <целевой файл>

Пример команды:

waifu2x-converter-cpp --scale_ratio 2 -i input.jpg -o output.jpg
К счастью, мне удалось найти графическое приложение, которое позволяет избежать возни с командной строкой. Это Qtwaifu2x, интерфейс к Waifu2x, поддерживающий и Waifu2x-converter-cpp. Выглядит программа просто и лаконично:

В самом простом случае достаточно просто перетащить на окно Qtwaifu2x любое изображение и нажать кнопку. Следует учитывать, что чем больше размеры исходного изображения, тем дольше будет длиться преобразование. Поэтому лучше тренировать на маленьких картинках. Результат должен вас порадовать!

Теперь примеры. Я использовал два тестовых изображения: фрагмент экранного снимка выше и фрагмент городского вида. Оба изображения были растянуты вдвое в программе Krita следующими способами: Кубическим (Cubic),  Фильтром Ланцоша (Lanczos3) и фильтром Box (он же Nearest neighbor). После этого я растянул исходные изображения с помощью Waifu2x-converter-cpp. Посмотрим на результаты (нажимайте на изображения для просмотра в полный размер):

Исходное изображение

 

Cubic

 

Lanczos3

 

Box (nearest neighbor)

 

Waifu2x

Исходное изображение

 

Cubic

 

Lanczos3

 

Box (nearest neighbor)

 

Waifu2x

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