Линукс для писателей: часть I

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

Для экономии места я не буду подробно рассказывать о разделении устройств. С годами я все хуже понимаю, почему аудиоплеер, телефон и фотокамера — один и тот же предмет. Моя аудиожизнь, к примеру, теперь обслуживается плеером Cowon X9 и диктофоном Zoom H2.

И вот, я завел отдельный компьютер для письма и чтения. В нем нет мессенджеров, почты и музыки — только текст. Выбрав одну из старых машин, я поставил на нее Ubuntu 15.04 и начал обустраиваться.

Двухпанельная парадигма

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

Для меня это действительно оказалось чрезвычайно удобно. Вот несколько типичных примеров:

Слева — текстовый редактор со статьей или переводом, справа — словарь.
Справа — художественная книга, слева — цитаты и пометы
Слева — текст в производстве, справа — помощь по системе разметки Markdown.

На месте каждого из окон может стоять любая программа на выбор: браузер, почта, заметка, научная статья, библиография и т.п. Расположением окон на экране занимается программа i3. Она делит экран на части так, что тот становится полностью замощен окнами. Каждый раз как я открываю новое окно, старому приходится уменьшаться в размерах. Такого типа оконные менеджеры называются tiling window managers. Если я открою на экране четыре окна, получится так:

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

Управление окнами происходит без мыши. Я перемещаю фокус влево-вправо кнопками Command+Shift+< и Command+Shift+>. Если окно уже в фокусе, я могу сдвинуть его налево, стукнув Command+Shift+m. Я закрываю окна сочетанием Command+Shift+q. Вообще, любые операции с окнами начинаются с Command+Shift.

Запуск программ

Поскольку никаких экранных меню у меня нет вообще, все программы тоже запускаются с клавиатуры. Я могу набрать такую команду в терминале, или стукнуть Option+пробел. На экран вылезет крошечная утилита gmrun, куда я и вобъю нужный текст.

Маленький gmrun

Для удобства я написал несколько собственных команд. Вот их неполный список:

  • m Привет как дела — ищет текст «Привет как дела» в Мультитране
  • www ya.ru — откроет Яндекс в браузере
  • v hi.txt — создаст файл hi.txt в директории и откроет текстовый редактор с ним

Есть и системные команды: для управления сетью, к примеру, или для скриншотов.

Управление сетью

Преимущество этого дела состоит в том, что команды не привязаны ни к какому конкретному приложению. Я могу выделить текст в редакторе и запустить команду, которая переведет его в словаре по моему выбору. Сам редактор даже не будет знать, что полез в словарь; его единственная забота — взять выделенный текст и засунуть его в ту команду, которую я указал.

Разметка и документы

Всё, что я пишу, пишется в разметке Markdown. Тексты, которые потом не уходят на основную машину чтобы быть сверстанными в индизайне, верстаются в html, pdf или почту автоматически, по написанным мной шаблонам.

Документы разложены по папкам с особой системой наименования. Папка logs, к примеру, предназначена для нескольких тематических дневников. Каждому из них посвящена подпапка: скажем, ~/logs/tech — это дневник о технологии. Одна запись в дневник — один markdown-файл в папке. Если я хочу прочесть дневник целиком, я запускаю в директории скрипт diary. Он собирает все файлы в один, упорядочивая их от нового к старому, автоматически верстает все это в html и открывает в браузере. Там я могу полистать дневник или поискать что-нибудь внутри.

Книги тоже хранятся в папках. О книгах и библиографиях я напишу отдельно, здесь только скажу, что каждой книге соответствует одноименный markdown-файл с конспектом. Если книга называется толстой.война-и-мир.epub, конспект будет называться толстой.война-и-мир.md. Это, в частности, означает, что и все конспекты я тоже могу объединить одной командой в большой мегаконспект и поискать там что-нибудь.

Так выглядит сверстанный конспект (справа)

Так система заметок, конспектов, записок, книг и статей становится полностью оторвана от конкретных программ чтения. У меня есть скрипт bookread, который принимает на вход название книги или статьи и открывает на одном экране ее саму и ее конспект. С конспектами затем можно делать всё, что только возможно делать с текстовыми файлами — и возможности эти весьма широки. Если завтра я сменю текстовый редактор, программу чтения или даже операционную систему, все мои заметки останутся на месте в очень читаемой форме.

Весь домашний каталог включая настройки всех программ синхронизируется на Яндекс.диск.

Набор текста

Я пользуюсь обычной макинтошной раскладкой. Русский и английский переключаются по правому шифту, лампочка капслока служит индикатором русской раскладки. Я не стал повторять систему набора т.н. «типографских» знаков из Mac OS, она не вполне меня удовлетворяет.

Вместо этого я настроил все так: я нажимаю Caps Lock и потом тыкаю в одну или несколько кнопок, которые, в зависимости от сочетания, производят тот или иной символ. Система очень визуальная (Caps Lock сокращаю до CL):

  • CL + < дает «
  • CL + два раза - дает — (длинное тире)
  • CL + -> дает
  • CL + qa дает ∀ (от quantifier any)
  • CL+ldis дает ∨ (logical disjunction)
  • CL+&e дает ε (все греческие литеры набираются через амперсанд)

Это, конечно, совсем не полный список.

Самопомощь

Как только я настраиваю ту или иную вещь, я пишу для себя документацию. Она хранится в папке ~/man. Когда я вызываю, к примеру, команду utfcs (от utf cheat sheet), скрипт берет markdown-файл из этой папки, делает из него красивый html и открывает его рядом с текстом.

Философия

Все это сделано для того, чтобы читать и писать продуктивно. В некотором отношении вся система задает кучу ограничений разного характера — от невозможности пользоваться мессенджерами до обязательности конспектирования любых книг и лекций. Это, конечно, сделано нарочно. В макоси документы теряются; их перечитываемость очень низка. Они разбросаны по разным приложениям. Внутри самих приложений — по меню.

Здесь же — файлы, файлы и ничего кроме. В поиске одной книжки ты неизбежно увидишь на экране другие — и, может, вспомнишь, что какую-то надо дочитать или перечесть.

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

Техника

Небольшой список того, как все это сделано.

  • Window manager — i3wm. Простой и быстрый.
  • Браузер — dwb. Движок вебкита, в 10 раз быстрее хрома, можно назначать собственные клавиатурные сочетания, есть режим hints, который позволяет открывать ссылки без мыши.
  • Текстовый редактор — как ни странно, gedit. Для vim есть масса писательских плугинов, но оказывается, что с ним очень сложно работать с двумя раскладками. Gedit же оказался мощнее, чем предполагалось.
  • Читалка epub — ebook-viewer, утилита из пакета calibre. С помощью calibre же книги из киндла становятся файлами на диске. Русская литература покупается на Литресе.
  • Читалка pdf — evince. Умеет запоминать место, на котором ты остановился в прошлый раз.
  • Переключалка клавиатуры — xkb. Стандартный убунтовый ibus медленный и до версии 1.5.11 будет игнорировать файл ~/.XCompose, где как раз все utf-символы. На момент написания этой заметки эта версия еще недоступна в бинарниках.
  • У Яндекс.диска есть консольные инструменты. На маке этот аккаунт монтируется у меня как сетевой диск через webdav.
  • Сеть — networkmanager, батарейка — upower, автомонтирование usb — udiskie (usbmount глючит).
  • Документы мотаются туда-сюда через pandoc, очевидно.
  • Управление яркостью экрана — xbacklight.

Если вам понравилась эта история, поделитесь ей с другими читателями, нажав кнопку “Recommend”

Спасибо! ☺


Ищете больше интересных историй? 
Подписывайтесь на Medium · Twitter · Facebook · VK