суббота, 15 июля 2023 г.

Открыть книгу fb2 в читалке fb2less через правое контекстное меню Nemo

Иногда возникает необходимость быстро просмотреть начало книги. К тому же, неплохо иметь в своём арсенале ещё одну читалку, особенно когда читаешь несколько книг "одновременно" (то есть периодически переключаясь с книги на книгу) в разных читалках (например, fbreader, foliate, coolreader), и "терять" в одной из читалок возможность при запуске определённой читалки ставиться на последнее прочитанное место не хочется.

Консольную читалку, то есть запускаемую в окне терминала можно установить командой sudo apt install fbless 

Сразу оговорюсь, что файла настроек и кэша, как описано здесь и здесь, на своей системе Linux Mint 21.2 найдено не было. Тем не менее, читалка была признана рабочей.

Однако использование команды fbless путь_к_книге навевало определённую тоску 😟

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

Открыть книгу fb2

В папке ~/.local/share/nemo/actions (~ означает папки своего профиля) создайте файл fbless.nemo_action и в его свойствах (секция "Права") установите галочку в поле "Выполнение" – Разрешить исполнять как программу. Содержание файла:

[Nemo Action]

Active=true
Name=fbless
Comment=Открыть файл в fbless
Exec=sh -c 'fbless %F; exec bash'
Icon-Name=FBReader
Selection=s
Extensions=fb2;
Mimetypes=text/plain;
Quote=double
Terminal=true

Icon-Name=FBReader соответствует значку раскрытой книги голубого цвета.

Теперь при выделении книги fb2 и вызове правого контекстного меню мыши можно вызвать пункт fbless (его название указывается в строке Name=, поэтому можно указать своё), после чего выбранная книга будет открыта в терминальной читалке fbless.

Вторым вариантом команды в строке Exec может являться просто  fbless %F


Открыть книгу fb2 и перейти на место чтения в %, которое вы запомнили с прошлого сеанса чтения

По аналогии с предыдущим пунктом в папке ~/.local/share/nemo/actions (~ означает папки своего профиля) создайте файл fbless-proc.nemo_action и в его свойствах (секция "Права") установите галочку в поле "Выполнение" – Разрешить исполнять как программу. Содержание файла:

[Nemo Action]

Active=true
Name=fbless proc
Comment=Открыть файл в fbless в месте %
Exec=sh -c 'fbless %F -g $(/home/minter/Tools/scripts/modules/fbless-proc.sh && cat /tmp/proc.txt); exec bash'
Icon-Name=fbreader
Selection=s
Extensions=fb2;
Mimetypes=text/plain;
Quote=double
Terminal=true

Icon-Name=fbreader соответствует значку раскрытой книги фиолетового цвета.

В строке Exec= присутствует команда /home/minter/Tools/scripts/modules/fbless-proc.sh, указывающая на полный путь к скрипту, в котором вы будете вводить нужное значение %. В описываемом примере этот путь /home/minter/Tools/scripts/modules. У вас он будет другим, зависящим от местоположения созданного вами скрипта fbless-proc.sh

Скрипт fbless-proc.sh представляет из себя обычный текстовый файл, в свойствах которого указано, что его разрешено исполнять как программу (секция "Права"). Текст скрипта:

#!/bin/bash
zenity --width=180 --height=50 --question --text="Перейти на место,\nобозначенное % ?$task" --timeout 5
answer=$?
if [ "$answer" -eq 0 ]; then
    zenity --width=100 --title  "Ввод цифры" --entry > /tmp/proc.txt
elif [ "$answer" -eq 1 ]; then
    echo '0' > /tmp/proc.txt
elif [ "$answer" -eq 5 ]; then
    echo '0' > /tmp/proc.txt
fi
exit

Вводимое в строку запроса значение % записывается в файл /tmp/proc.txt, откуда он потом считывается при выполнении команды правого контекстного меню Nemo. Если в течение 5 секунд не было введено никакой цифры, то в файл автоматически записывается значение 0, соответствующее самому началу книги. 

Короткий ролик, демонстрирующий выполнение описанных настроек смотрите здесь.

📌   Примечание. Значение 13% вместо введённых 14% обусловлено небольшим расхождением в несколько строк текста книги. В то же время программа "не понимает" дробных значений, например, 18,6 , поэтому в место, например, 35% может укладываться несколько десятков строк текста.

Похожее решение для Thunar здесь.

Комментариев нет:

Отправить комментарий