LINUX.ORG.RU

Велосипедирование FB2 читалок.

 , , , ,


3

6

Здравствуйте.
Как то на некоторое время лишился свой книжки-читалки и решил читать с ПК.
То что есть в линупсе из читалок, поддерживающих фб2 мне не понравилось ничего.
И в один не очень веселый день я решил писать свой велосипед.
Результатом хочу поделиться с вами. Просто чтобы было.

Забрать можно от сюда
Для дебианоподобных систем есть возможность собрать сырцы прямо в бинарный пакет.
Скрин раз
Скрин два
Скрин три



Последнее исправление: Cactus64k (всего исправлений: 1)

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

Прогресс в ковырянии автотулзов пока остановился на том, что ./configure генерирует Makefile из Makefile.in, подставляя туда значения переменных
С Makefile.am пока все мрачно. Подойдет такой вариант?

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

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

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

Подходи налетай, с гита сырцы забирай. Список последних книг таки задача библиотеки, а не читалки.

Cactus64k
() автор топика

Slackware64-14.1

$ ./configure
bash: ./configure: No such file or directory

$ make
...
src/main.c: In function 'main':
src/main.c:20:24: error: 'G_OPTION_FLAG_NONE' undeclared (first use in this function)
...

src/main.c:35:2: error: implicit declaration of function 'g_option_context_parse_strv' [-Wimplicit-function-declaration]
...

make: *** [src/main.o] Error 1
Наличные зависимости:
$ (cd /var/adm/packages/;ls -1 {libxml2,gtk+3,glib2,libzip}-[0-9]*)
glib2-2.36.4-x86_64-1
gtk+3-3.8.2-x86_64-2
libxml2-2.9.1-x86_64-1
libzip-0.10.1-x86_64-1

bormant ★★★★★
()

Slackware64 14.1

$ git pull
...

$ SLKFLAGS="-O2 -fPIC"
$ CFLAGS="$SLKFLAGS" CXXFLAGS="$SLKFLAGS" \
./configure \
  --prefix=/usr \
  --libdir=/usr/lib64 \
  --sysconfdir=/etc

$ make
...
src/main.c: In function 'main':
src/main.c:20:24: error: 'G_OPTION_FLAG_NONE' undeclared (first use in this function)
...

src/main.c:35:2: warning: implicit declaration of function 'g_option_context_parse_strv' [-Wimplicit-function-declaration
...

make: *** [src/main.o] Error 1

-dev — да, в Slackware по другому не бывает, за редким исключением.

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

опция --prefix полурабочая.

если выполнить

configure --prefix=some_path

make install - нерабочий.

добавь в makefile.in

exec_prefix = @exec_prefix@

+ надо в install пути создавать. mkdir -p

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

Глянь в /usr/include/glib-2.0/glib/goption.h объявление G_OPTION_FLAG_NONE и g_option_context_parse_strv

Не могло их там быть, они добавлены позже значительно, см.:

http://ftp.gnome.org/pub/gnome/sources/glib/2.36/
glib-2.36.4.tar.xz 2013-08-07 17:53 6.3M

g_option_context_parse_strv()
https://mail.gnome.org/archives/commits-list/2014-January/msg02570.html
commit f062fae4d6d705736c2b1b899c4413b99d4cfc96

G_OPTION_FLAG_NONE
https://mail.gnome.org/archives/commits-list/2014-September/msg05478.html
commit 8061694c496094015bfd3959cbece7ab158ef6ef

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

Обновить glib не вариант?

У вас в README было libglib >= 2.33.12, а в комите:

+GLIB_AVAILABLE_IN_2_40
+gboolean        g_option_context_parse_strv       (GOptionContext      *context,
+                                                   gchar             ***arguments,
+                                                   GError             **error);
Стало быть, надо поправить.

Либо, действительно,

обвязать все дефайнами, но пропадут опции командной строки

а опции командной строки пропадут при glib меньше 2.40.

А лучше написать реализацию и для glib<2.40, да даже позаимствовав реализацию из glib-2.40, лицензия позволяет же?

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

GUI_CONSTRUCT_PATH и ENCODE_LIST_PATH должны меняться при изменении prefix

samy_volosaty ★★★★★
()

- libgtk-3-0 >= 3.4.2,

Вот была бы версия под gtk2 - вообще цены бы не было.

Ну в целом недурно вышло, даже очень.

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

Вот была бы версия под gtk2 - вообще цены бы не было.

Присоединяюсь к пожеланию . У меня LXDE , и никакого GTK3 у меня нет . И не будет .

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

Зачем тебе версия под gtk2, если уже есть под gtk?

Оторви жопу наконец от просмотра прона и подбери себе нормальную тему gtk3.

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

Раньше сидел на Debian Wheezy, а тут услышал, что скоро Jessie перейдет в stable и апнулся.

Есть в слаке libargtable2?
Думаю переделать под нее.

Возможно есть некий дефолтный парсер стартовой строки?
Не все же пишут велосипеды.

Cactus64k
() автор топика
Ответ на: комментарий от Bfgeshka

Всем тулкитофобам хочу посоветовать форкнуть и переделать под gtk2

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

Есть в слаке libargtable2?
Думаю переделать под нее.

Не в стоке, но по крайней мере, есть на slackbuilds.org:
http://slackbuilds.org/repository/14.1/libraries/argtable/?search=argtable

А потянуть реализацию из glib-2.40 — не вариант?

Возможно есть некий дефолтный парсер стартовой строки?

man 3 getopt
?

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

Докладываю.
Собралось, работает.

При запуске из терминала дает 9 Gtk-WARNING-ов вида:

(simple-fb2-reader:19753): Gtk-WARNING **: Theme parsing error: lightdm-gtk-greeter.css:39:19: Expected a number
в отношении 39:19, 54:19, 70:19, 113:19, 137:19, 149:19, 159:19, 173:31, 174:32, если интересно, там
 39:    border-radius: none;
 54:    border-radius: none;
 70:    border-radius: none;
113:    border-radius: none;
137:    border-radius: none;
149:    border-radius: none;
159:    border-radius: none;
173:    border-bottom-left-radius: none;
174:    border-bottom-right-radius: none;


Чего не хватает: страница вниз — по пробелу, f, PgDn, страница вверх — по PgUp, b (как в less), возможно, по BackSpace. Пробел, f, b весьма важны — на современных нутбуках PgDn/PgUp обычно в глубокой заднице.

Если нужно, напишу и выложу SlackBuild.

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

а опции командной строки пропадут при glib меньше 2.40.

Куда это они пропадут?

А лучше написать реализацию и для glib<2.40, да даже позаимствовав реализацию из glib-2.40, лицензия позволяет же?

Что там такого с комстрокой понаворочено?

Вот: https://www.midnight-commander.org/browser/src/args.c
Требуется glib >= 2.14. А вы говорите, 2.40.

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

Что там такого с комстрокой понаворочено?

было использование g_option_context_parse_strv(), G_OPTION_FLAG_NONE, ссылки на комиты их в GLib были выше. Первый добавлен в 2.40, второй — в 2.42.
Тему не читай, сразу отвечай.

Что было, что стало в git-е можно посмотреть, ссылка есть в первом сообщении темы.

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

Это тема кривая.
Когда я использовал мате на debian wheezy, то тоже спамило в stderr что тема кривая.

Погляжу какой сигнал на PgDn и PgUp

Пиши, выкладывай, добавлю.
Можешь прям на гитхаб.

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

Добавил pull request на добавление слакбилда.

При релизе новой версии желательно обеспечить соответствие VERSION в slackbuild/*info и slackbuild/*Build, например, для перехода от 1.0.5 к 1.0.6 можно так:

$ . slackbuild/*info
$ sed -i -e "s,$VERSION,1.0.6," slackbuild/*info slackbuild/*Build

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

Спасибо.
У тебя на стыке абзацев что-то с интервалом и внизу какой-то зазор(хотя это может у меня что-то с темой gtk):
https://drive.google.com/file/d/0BwVkyr4ygmcAa1FYVU1MV0otMms/view?usp=sharing

Ну и фичреквест:
- сделалай что-то со стартовым экраном, сейчас жутко смотрится. Лучше всего туда подойдет список последних книг)
- лично меня очень напрягает скольжение при листании, опционально бы его сделать
- сделать возможным настраивать режим листания - строго одна/две/три/etc строки и отдельная клавиша для страницы целиком. В версии 1.0.5 по pgUp и pgDown листает по полная_страница - две_строки, что лично мне не подходит. И назначить клавишу на «Backward»

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

Первое - баг.
Второе - на третьем гноме нет нижней панели. И текст уходит прям за экран. Резало глаз. Можно сделать опционально.

Ты решил заразить меня идеей книг на стартовом экране?
Если и сделаю, то в виде ссылок на книги.
Т.е. будет открываться в новом окне через xdg-open.

Что за скольжение при листании?

Есть же клавиши вверх и вниз

Клавишу на назад назначу

Cactus64k
() автор топика
Ответ на: комментарий от Medar

на стыке абзацев что-то с интервалом и внизу какой-то зазор

у меня точно так же.

bormant ★★★★★
()

Кстати, еще наблюдение. Скачал в целях проверки первую попавшуюся книжку: http://www.bookfb2.ru/book63/459391.fb2.

При запуске с ярлыка в меню XFCE, затем ПКМ - Открыть Книгу, приложение убивается.

При запуске из терминального окна
1) без параметров, после попытки ПКМ - Открыть Книгу, получаю:

(simple-fb2-reader:21718): Gtk-CRITICAL **: gtk_file_chooser_select_filename: assertion `filename != NULL' failed
Окончание чтения книги
2) с параметром -b ~/dl/459391.fb2 получаю:
Окончание чтения книги
Но книга в обоих этих случаях (1) и (2) открывается, приложение не падает.

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

И текст уходит прям за экран

Можно сделать, чтобы текст на одну строку не доходил до нижней границы окна.

Ты решил заразить меня идеей книг на стартовом экране?

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

Что за скольжение при листании?

Может я не тот термин подобрал, как бы пояснить... Вот перелистываю я страницу и я вижу, как строки проносятся снизу вверх, а оно как-то отвлекает. Мне бы было лучше, если бы это перемещение происходило незаметно для глаз, как в fbreader-e.

Есть же клавиши вверх и вниз

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

Medar ★★★★★
()

[FR] Диалог поиска

В диалоге поиска было бы здорово иметь поиск по нажатию Enter, т.е. кнопку поиска сделать default-ной.

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

Баг сие.
Нашел, еще не поправил.

Весьма странное поведение парсера. Если вызывать

simple-fb2-reader --book=  
и вместо параметра писать туда пару пробелов, то парсер благополучно слопает такую пакость.
А в тулзе будет нормально выделенная строка с одиним нулевым символом.

Cactus64k
() автор топика
Ответ на: комментарий от Medar

но ты подумай, как облагородить стартовый экран

                      .-''-.                           
                    .`   ::.'.                         
                   /  .:((((\\\                        
                 .' //((`  )))))
                (  (/)':.__  _/
               /   /c(   -=\</^                        
              /   (/j)\  __.>)                         
             (/  :(r :.'.\_./                          
             /  .'/    `(`-'                           
            (   '( '``'  '.                            
            /    ))    '   `-.                         
           (  (  ( .    .     `-x                      
           (( ( (: \    |       )                      
            )|)) )\Y     \  `--<                       
             |  `( \\    |     |                       
             |    `||    :.    |                       
             `-._  | \     `-._|                       
                 `-/ :\_.      ``\                     
                  /    `'----..../                     
                 /  , .        |/                      
                /               \                      
               /                |                      
              J    .            |                      
              |    |            |                      
              |  _ _\__         /                      
              \      _\).       |                      
cjr           |       ||        |                      
Cactus64k
() автор топика
Ответ на: комментарий от Medar

Каким макаром?
Есть у GtkTextView свойство left-margin, есть right-margin, а bottom-margin нету.
Хотя можно красить в цвета темы этот отступ.

Мб сделаю в свободное время.

Т.е. чтобы текст листался не постепенно, а сразу на новую страницу?
Это уж не ко мне.
Разрабы gtk так сделали.
Возможно что при таком виде скрола нужная позиция высчитывается во время скрола.
Т.е. пока нижняя видимая часть текста не скроется.

Там перемещается невидимый курсор.
И это стандартная прокрутка.
Можно поменять путем прямого изменения значения скрола на N пикселей.
Ну или иметь сношение с GtkTextIter.
И считать через него позицию+N

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

Мое дело внести замечания и пожелания. Патчи делать не умею( Пока остаюсь на fbreader-e но слежу за твоей читалкой.

Никогда раньше не делал, но запилил рабочий у меня PKGBUILD для арчеводов - https://aur.archlinux.org/packages/simple-fb2-reader

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

Никуда не нужно засовывать, место ему в AUR'e. Это всего лишь файл описания сборки пакета Arch Linux (по сути, это обычный bash-скрипт), используемый для создания пакетов. Буду обновлять его по мере выпуска новых версий simple-fb2-reader'a.

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

Вот зашел человек на гитхаб.
Увидел читалку, скачал и написал еще один PKGBUILD
Не проще ли приложить к сырцам все возможные описания для каждого дистра?

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