понедельник, 25 декабря 2017 г.

Работа с документами MS Office в Linux

Офисный пакет приложений Microsoft Office всегда доставлял немало проблем пользователям Linux. Чем открывать DOC-файлы, как сохранять файлы так, чтобы коллеги потом открывали их у себя в уютной Windows, казалось этот вопрос на десятилетия.
StarOffice развился в OpenOffice, потом появился LibreOffice, взята новая планка, но... о точном соответствии речи всё еще не было. Наконец, свершилось!

Этот день настал: мы открыли исходный код десктопных редакторов ONLYOFFICE. Теперь они абсолютно бесплатны для домашнего и коммерческого использования.

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


воскресенье, 24 декабря 2017 г.

Рабочий стол - FVWM

Первая разновидность - интерфейс для вновь устроенных на работу, призванный облегчить привыкание новичка за счёт чувства знакомства. "О, я знаком с Windows 7, вот кнопка Пуск, нажать её, дальше увидим". Глаз привычно ищёт меню приложений Пуск в левом нижнем угле, окна закрываются пиктограммой крестик и т.п. Настройка призвана быть стандартной и ни в коем случае не должна привести к нарушению привычного вида.
Второй тип - это то, что нужно только Вам и вас не волнует, что подумают другие, о том, что кнопку Пуск Вы убрали куда-то, обои не меняются правым кликом мыши и тому подобное. Вы хотите эти кнопки, значки и меню так, как удобно только Вам. Как что выглядит и располагается - Ваше дело, а не компании Microsoft или сообщества разработчиков KDE или Gnome. Эффекты? Можно приделать, но зачем? Зачем кнопке запуска пылесоса (а компьютер это тоже по своей сути бытовая техника) свечение плазмы и победный звук? Только отвлекает.

Для тех единоличников, кто любит простоту и эффективность - рабочий стол FVWM. В том виде, как он есть у меня сейчас, в 2017 году, он был и 20 лет назад. Изменился самую малость. Вот он!

Слева расположился ряд свернутых окон. Каждое хранит свой снимок - удобно, чтобы вспомнить, на чём остановился. Меню Start вызывается кликом правой кнопки мыши, содержит список программ, которыми я пользуюсь. Значки, порядок в списке - то, как удобно мне. Окно Терминала и в правом нижнем уголке переключатель виртуальных рабочих столов (умножает пространство в 9 раз) и часы.
Кстати, всё управление дублируется с клавиатуры - иногда это удобнее, чем перемещать мышь.

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

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

Да, следуйте простым инструкциям и воплощайте свою концепцию интерфейса. Меня вдохновляла книга Джефа Раскина, Интерфейс: новые направления в проектировании компьютерных систем. — Пер. с англ. — СПб: Символ-Плюс, 2004, однако, сколько людей, столько и мнений. Вы можете ознакомиться с ними здесь.

Вот пример, как реализованы эскизы свернутых окон на fvwm. При свертывании окна вызывается пользовательская функция Thumbnail, она передаёт id окна программе xwd, та делает её снимок, затем передаёт его по конвееру программе convert, где снимок уменьшается и преобразуется во временный png-файл. Свернутой программе назначается новая иконка, с изображением из этого png-файла. Всё на самом деле просто.
DestroyFunc Thumbnail
AddToFunc Thumbnail
+ I Raise
+ I ThisWindow (!Shaded, Iconifiable, !Iconic) PipeRead \
    "xwd -silent -id $[w.id] | convert -scale 256 -frame 1x1 \
     -mattecolor black -quality 0 xwd:- png: $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png; sleep .1 \
     && echo WindowStyle IconOverride, \
     Icon $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png \
     || echo Nop"
+ I Iconify

DestroyFunc DeThumbnail
AddToFunc DeThumbnail
+ I Exec rm -f $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png
+ I DestroyWindowStyle

*FvwmEvent: deiconify DeThumbnail

AddToFunc StartFunction I Test (Restart) All (Iconic) \
  Test (f $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png) WindowStyle \
  IconOverride, Icon $[FVWM_USERDIR]/tmp/icon.tmp.$[w.id].png
Код добавляется в Ваш личный config-файл и fvwm становится таким, как Вы пожелали. Удачи!

суббота, 23 декабря 2017 г.

Рецепт создания djvu-книжки

Мне в руки попала книжка, взята по МБА, её потребуется скоро вернуть, а хочется оставить себе, вечерами читать, например. В сети не нашёл, книга редкая. Решил сделать её djvu-вариант, делюсь с вами рецептом.
Нам понадобится:
  1. Linux (у меня Linux Mint — дистрибутив, основанный на Ubuntu и Debian)
  2. Программы сканирования, обработки и конвертации изображений в книгу djvu: pdfimages (из библиотеки Poppler), convert (набор утилит ImageMagic для пакетной обработки изображений), cjb2 и djvm (DjVuLibre — набор библиотек и утилит для просмотра, создания и редактирования DjVu-файлов)
  3. Следовать простым инструкциям, предоставленным здесь

Рецепт

Установим программы, если их нет:
sudo apt-get install simple-scan poppler-utils imagemagick djvulibre-bin
Сканируем книгу в файл pdf:
Пару проб сканов для подбора параметров: контраст, яркость. Разрешение 600 DPI для книги (режим сканирования: Text) достаточно.
Создаём пустую папку, кладём туда файл с отсканированной книгой book.pdf.
Открываем терминал, заходим в директорию с book.pdf, выполняем следующие команды:
pdfimages book.pdf page
for file in *.ppm; do convert -rotate 90 -resize 50% $file ${file%.*}.pbm; done
for file in *.pbm; do cjb2 -clean $file ${file%.*}.djvu; done
djvm -c book.djvu *.djvu
  1. pdfimages разобьёт pdf-файл по страницам page-001.ppm, page-002.ppm и т.д;
  2. строка с convert -rotate 90 -resize 50% обработает все сканы страниц, повернёт, уменьшит и подготовит набор страниц в формате *.pbm. Все обработки изображений делаются здесь, программой convert, она ещё много чего умеет;
  3. строка с cjb2 -clean конвертирует сканы в djvu-страницы;
  4. наконец, djvm -c book.djvu *.djvu соберёт готовую книгу.
Смотри также Создание документов DJVU в Linux за подробностями и тонкостями процесса.