LINUX.ORG.RU

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

 , , , ,


3

6

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

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



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

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

Ну приложи туда, куда тебе нравиться, можно ссылкой. А прошаренный писатель сначала посмотрит по местам наибольшей концентрации «рецептов».

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

Не проще ли приложить к сырцам все возможные описания для каждого дистра?

Совем не проще. Ибо AUR - это пользовательсткий репозитарий для арчеводов. Установил раз и пакетный менеджер будет следить за обновлениями. А так прийдется все время заходить на гитхаб и проверять, есть ли что новое. Тем более тебе нужно будет с каждой новой версией самому этот PKGBUILD править. Конечно, если есть желание, то можешь приложить у себя (неважно куда). Но лучше будет в README добавить ссылку https://aur.archlinux.org/packages/simple-fb2-reader

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

Поправил.

Так оно намного лучше выглядит.

PS. В slackbuild/*info номер версии дважды упоминается, в VERSION и в DOWNLOAD (тут он старый остался). Ну и MD5SUM можно смело очистить, раз уж этот файл часть архива исходников, все равно ее правильной при таком раскладе не сделать.

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

Полностью сносить или только саму сумму?

P.S. Сделал хоткей на меню «назад» и поиск на ентер. Пока без версии.

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

MD5SUM можно смело очистить

Полностью сносить или только саму сумму?

Саму сумму, оставив MD5SUM="".

bormant ★★★★★
()

Небольшое обновление функционала читалки:

Забрать можно как всегда с гитхаба.

Cactus64k
() автор топика
exl@exl-Lenovo-G560e:~/Projects/simple-fb2-reader$ ./simple-fb2-reader
Segmentation fault (core dumped)
exl@exl-Lenovo-G560e:~/Projects/simple-fb2-reader$ gdb ./simple-fb2-reader 
GNU gdb (Ubuntu 7.8-1ubuntu4) 7.8.0.20141001-cvs
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./simple-fb2-reader...done.
(gdb) r
Starting program: /storage/exl/Projects/simple-fb2-reader/simple-fb2-reader 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffed8f7700 (LWP 12151)]
[New Thread 0x7fffed0a4700 (LWP 12152)]
[New Thread 0x7fffce52f700 (LWP 12153)]

Program received signal SIGSEGV, Segmentation fault.
_IO_feof (fp=fp@entry=0x0) at feof.c:36
36      feof.c: No such file or directory.
(gdb) bt full
#0  _IO_feof (fp=fp@entry=0x0) at feof.c:36
        result = <optimized out>
#1  0x000000000040cfb6 in fill_encode_liststore (list_store=0x8705c0) at src/init/init_dialogs.c:52
        buff = '\000' <repeats 16 times>, "P\030g\000\000\000\000\000W\225\336\367\377\177\000\000\005\000\000\000\377\177", '\000' <repeats 18 times>, "\071\026\311\366\377\177\000\000\300(a\000\000\000\000\000$\f\311\366\377\177\000\000\220\200o\000\000\000\000\000\065\000\000\000\000\000\000\000`e\205\000\001\000\000\000\305\373@\000\000\000\000\000\220\200o\000\000\000\000\000\300(a\000\000\000\000"
        f = 0x0
        tree_iter = {stamp = 6367360, user_data = 0x612750 <gtk_list_store_get_type@got.plt>, user_data2 = 0x0, 
          user_data3 = 0x7fffffffda50}
#2  0x000000000040d0d9 in init_encode_wnd (builder=builder@entry=0x671850, 
    obj=obj@entry=0x6128c0 <GLOBAL_ENCODE_DIALOG>) at src/init/init_dialogs.c:42
        __PRETTY_FUNCTION__ = "init_encode_wnd"
#3  0x00000000004073d4 in main (argc=1, argv=0x7fffffffda58) at src/main.c:69
        builder = 0x671850
        result = <optimized out>
        domain = <optimized out>
        __PRETTY_FUNCTION__ = "main"
        book_file_path = 0x0
        print_version = 0
        cmd_options = {{long_name = 0x40f00b "book", short_name = 98 'b', flags = 0, arg = G_OPTION_ARG_FILENAME, 
            arg_data = 0x7fffffffd8a8, description = 0x40effd "Local path to book", 
            arg_description = 0x40f010 "/local/path/book.fb2"}, {long_name = 0x40f032 "version", short_name = 118 'v', 
            flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x7fffffffd8a0, 
            description = 0x40f025 "Print reader version", arg_description = 0x0}, {long_name = 0x0, 
            short_name = 0 '\000', flags = 0, arg = G_OPTION_ARG_NONE, arg_data = 0x0, description = 0x0, 
            arg_description = 0x0}}
        error = 0x0
        cmd_context = 0x629640
        cmd_line = 0x628750
        cmd_count = 1
EXL ★★★★★
()
Ответ на: комментарий от Cactus64k

autotools находится в процессе осиливания.

Брось каку, используй CMake, Люк!

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

Так, у вас к проекту говно autotools прилип. Сделай CMake-сборку хотя бы. Или же Makefile.am

Пофиксил этот баг, прими реквест на гитхабе.

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

В результате фикса в configure для ./configure --prefix=/usr --sysconfdir=/etc получим конфиг в /usr/etc.

Ничего не напутал? Лучше для sysconfdir сделать дефолт ${prefix}/etc, но оставить возможность переопределять его по --sysconfdir=.

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

Оно вообще как-то странно отрабатывает:

В configure есть:

sysconfdir='${prefix}/etc'

Однако, когда выполняется ./configure --prefix=/home/exl/Projects/build/simple-fb2-reader, у меня получается такой src/config.h:

/* src/config.h.  Generated from config.h.in by configure.  */
#define GUI_CONSTRUCT_PATH "/home/exl/Projects/build/simple-fb2-reader/share/simple-fb2-reader/simple-fb2-reader.glade"
#define ENCODE_LIST_PATH "${prefix}/etc/simple-fb2-reader_encoding_list.cfg"
#define PACKAGE_VERSION "1.0.6"
#define PACKAGE_NAME "simple-fb2-reader"
EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от EXL

Одинарные кавычки вместо двойных в sysconfdir= не дают развернуться ${prefix} в его значение? Ежели поменять на

sysconfdir="${prefix}/etc"
не выправится ли config.h?

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

Да нет, так вообще:

exl@exl-Lenovo-G560e:~/Projects/simple-fb2-reader$ ./configure 
configure: error: expected an absolute directory name for --sysconfdir: NONE/etc

Поправил так: https://github.com/EXL/simple-fb2-reader/commit/33433352cac277c5b0b2377b1ab45...

Не знаю, правильно ли это. Не знаток autotools.

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

Дебиан нормально собирает проект.
Скорей всего подставляет переменные при запуске ./configure
Какой линупс у тебя стоит?

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

За найденный баг спасибо.
Из дельного там только проверка на ноль при открытии файла.
Подставление переменной через eval echo выглядит как костыль.

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

Так вот и смотри, выполняем всем привычные для построения софта:

$ ./configure --prefix=/home/exl/Projects/build/simple-fb2-reader
$ make
$ make install

Получаем:

$ ../build/simple-fb2-reader/bin/simple-fb2-reader
ERROR: Failed to load gui construct file ${prefix}/share/simple-fb2-reader/simple-fb2-reader.glade

И такой config.h:

/* src/config.h.  Generated from config.h.in by configure.  */
#define GUI_CONSTRUCT_PATH "${prefix}/share/simple-fb2-reader/simple-fb2-reader.glade"
#define ENCODE_LIST_PATH "${prefix}/etc/simple-fb2-reader_encoding_list.cfg"
#define PACKAGE_VERSION "1.0.7"
#define PACKAGE_NAME "simple-fb2-reader"

Переменные эти у меня не раскрываются. Только через eval.

Linux и др:

$ lsb_release -a
LSB Version:    core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch:core-4.1-amd64:core-4.1-noarch:security-4.0-amd64:security-4.0-noarch:security-4.1-amd64:security-4.1-noarch
Distributor ID: Ubuntu
Description:    Ubuntu 14.10
Release:        14.10
Codename:       utopic
$ uname -a
Linux exl-Lenovo-G560e 3.16.0-34-generic #45-Ubuntu SMP Mon Mar 23 17:21:27 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ bash --version 
GNU bash, version 4.3.30(1)-release (x86_64-pc-linux-gnu)
$ m4 --version 
m4 (GNU M4) 1.4.17
$ autoconf --version 
autoconf (GNU Autoconf) 2.69

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

Так нафиг мне deb-пакет, если я, например, хочу в /opt через ./configure --prefix=/opt && make && make install поставить? Тебе же дали линк, по которому написано, что так генерить пути — нельзя.

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

Косметика: возможно, вместо DEFINIONS хотелось написать DEFINITIONS или DEFINES...

А в остальном, вроде, рабочий вариант вышел.

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

1.0.8 должен нормально работать

Да, работает. Только надпись "Hello! =P" на белом фоне при запуске без параметров поначалу смутила.

На правах фичреквеста на будущее: 1) вместо "Change Encode" должно быть "Change Encoding'; 2) и неплохо бы горячие клавиши добавить. Хотя бы ^O для диалога выбора книги.

Чуть позже выложу ссылку на пакет для Fedora.

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

Было для проверки сделано.
Да так и осталось.
Считай это фитчей.

А почему надпись не на русском?
Локаль английская стоит?

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

Локаль английская стоит?

Да. С LC_ALL=ru_RU.UTF8 все надписи на русском.

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

И чем это лучше fbreader или okular?

Я ж не говорил, что написал мега-супер-крутую-навороченную читалку. Просто другие тулзы мне не понравились и я решил написать свое. Я для меня это весомый аргумент.=D

Попробуй, сравни.

По крайней мере это одна из немногих читалок, которая поддерживает таблицы.

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

В гтк есть специальный инструмент для хоткеев. Когда в читалке было классическое верхнее меню, пытался прикрутить к нему GtkAccelGroup. Но что то не осилил.

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

Добавил перенос по словам в таблицы + оптимизация таблиц
Можно забирать 1.0.9 с гитхаба

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

Можно забирать 1.0.9 с гитхаба

Опакетил для Федоры, ссылка не репу та же. /usr/share/icons/hicolor/scalable/mimetypes/application-x-zip-compressed-fb2.svg и /usr/share/icons/hicolor/scalable/mimetypes/application-x-fictionbook+xml.svg пришлось сделать хардлинками, иначе rpm внутри mock'ового чрута не собирается.

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

Я хз когда придет муза и я напишу поддержку склеивания ячеек. Там весь говнокод таблиц перелопачивать придется. За совет спасибо, учту.

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