Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fbpdf functionality in arch in wayland gnome mutter #16

Open
LaptopDev opened this issue Jan 14, 2025 · 6 comments
Open

fbpdf functionality in arch in wayland gnome mutter #16

LaptopDev opened this issue Jan 14, 2025 · 6 comments

Comments

@LaptopDev
Copy link

          LaptopDev ***@***.***> wrote:

I have tried the AUR package and get the same exact behavior of
empty output in my kitty terminal. What terminal are you using?

Fbpdf won't work, if X is running.

Ali

Originally posted by @aligrudi in #15 (comment)

@LaptopDev
Copy link
Author

@aligrudi Why does fbpdf not work if x is running?

@LaptopDev
Copy link
Author

LaptopDev commented Jan 14, 2025

Okay I have unset DISPLAY hoping that would launch it but then I get a linking error

xwayland info:

laptop:~$ Xwayland -version
The X.Org Foundation Xwayland Version 24.1.4 (12401004)
X Protocol Version 11, Revision 0
laptop:~$ ^C
laptop:~$ env | grep DISPLAY
WAYLAND_DISPLAY=wayland-0
GNOME_SETUP_DISPLAY=:1
DISPLAY=:0

Header incompatabilities

laptop:~/source/git/fbpdf$ realpath fbpdf
/home/user/source/git/fbpdf/fbpdf
laptop:~/Downloads$ unset DISPLAY && /home/user/source/git/fbpdf/fbpdf 'Patterns of Debate Failure and Types of Debate outcomes.pdf'
cannot create context: incompatible header (1.25.1) and library (1.25.2) versions
Segmentation fault (core dumped)

but I back linked

laptop:/usr/lib$ ls |grep mupdf
libmupdf.so
libmupdf.so.25.1
libmupdf.so.25.2
libmupdfcpp.so
libmupdfcpp.so.25.2
laptop:/usr/lib$ file libmupdf.so.25.1
libmupdf.so.25.1: symbolic link to /usr/lib/libmupdf.so.25.2
laptop:/usr/lib$ 

@aligrudi
Copy link
Owner

aligrudi commented Jan 14, 2025 via email

@LaptopDev
Copy link
Author

LaptopDev commented Jan 14, 2025

Could you please provide the minimal cc command required to compile and link fbpdf directly without make, which includes specific flags and dependencies?

This seems like a linking problem (the program being linked with one
version of the library and executed with another).

I removed some dependencies and compiled each object file and am incurring a previous issue in earlier attempts to install the program.

Compiling step by step
laptop:~/source/git/fbpdf$ ls
LICENSE  Makefile  README  djvulibre.c  doc.h  draw.c  draw.h  fbpdf.1  fbpdf.c  mupdf.c  poppler.c
laptop:~/source/git/fbpdf$ cc -c -Wall -O2 -I./include fbpdf.c -o fbpdf.o
laptop:~/source/git/fbpdf$ cc -c -Wall -O2 -I./include mupdf.c -o mupdf.o
laptop:~/source/git/fbpdf$ cc -c -Wall -O2 -I./include draw.c -o draw.o
laptop:~/source/git/fbpdf$ cc -o fbpdf fbpdf.o mupdf.o draw.o -L./lib -lmupdf -lmupdf-third -lmupdf-pkcs7 -lmupdf-threads -lm
/usr/bin/ld: cannot find -lmupdf-third: No such file or directory
/usr/bin/ld: cannot find -lmupdf-pkcs7: No such file or directory
/usr/bin/ld: cannot find -lmupdf-threads: No such file or directory
collect2: error: ld returned 1 exit status
laptop:~/source/git/fbpdf$ cc -o fbpdf fbpdf.o mupdf.o draw.o -L./lib -lmupdf -lm
laptop:~/source/git/fbpdf$ ls
LICENSE  Makefile  README  djvulibre.c  doc.h  draw.c  draw.h  draw.o  fbpdf  fbpdf.1  fbpdf.c  fbpdf.o  mupdf.c  mupdf.o  poppler.c
laptop:~/source/git/fbpdf$ ldd fbpdf
linux-vdso.so.1 (0x00007ffde8dda000)
libmupdf.so.25.2 => /usr/lib/libmupdf.so.25.2 (0x00007cde8a600000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007cde8a511000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007cde8a320000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007cde8d4b9000)
libgumbo.so.2 => /usr/lib/libgumbo.so.2 (0x00007cde8a2c7000)
libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007cde8a1a8000)
libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x00007cde8a10a000)
libz.so.1 => /usr/lib/libz.so.1 (0x00007cde8a0f1000)
libjbig2dec.so.0 => /usr/lib/libjbig2dec.so.0 (0x00007cde8a0d1000)
libopenjp2.so.7 => /usr/lib/libopenjp2.so.7 (0x00007cde8a05f000)
libleptonica.so.6 => /usr/lib/libleptonica.so.6 (0x00007cde89c00000)
libtesseract.so.5 => /usr/lib/libtesseract.so.5 (0x00007cde89800000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007cde89400000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007cde8a031000)
/lib64/ld-linux-x86-64.so.2 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007cde8d5ba000)
libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007cde8a01e000)
libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007cde89fe3000)
libbrotlidec.so.1 => /usr/lib/libbrotlidec.so.1 (0x00007cde89fd4000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007cde896b0000)
libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007cde89fb2000)
libgif.so.7 => /usr/lib/libgif.so.7 (0x00007cde89fa7000)
libtiff.so.6 => /usr/lib/libtiff.so.6 (0x00007cde89f1a000)
libwebp.so.7 => /usr/lib/libwebp.so.7 (0x00007cde89b8d000)
libwebpmux.so.3 => /usr/lib/libwebpmux.so.3 (0x00007cde89f0e000)
libarchive.so.13 => /usr/lib/libarchive.so.13 (0x00007cde8932b000)
libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007cde8925b000)
libgomp.so.1 => /usr/lib/libgomp.so.1 (0x00007cde89208000)
libbrotlicommon.so.1 => /usr/lib/libbrotlicommon.so.1 (0x00007cde89eeb000)
libpcre2-8.so.0 => /usr/lib/libpcre2-8.so.0 (0x00007cde89169000)
libzstd.so.1 => /usr/lib/libzstd.so.1 (0x00007cde8908a000)
liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007cde89057000)
libjbig.so.2.1 => /usr/lib/libjbig.so.2.1 (0x00007cde89edd000)
libsharpyuv.so.0 => /usr/lib/libsharpyuv.so.0 (0x00007cde89ed4000)
libcrypto.so.3 => /usr/lib/libcrypto.so.3 (0x00007cde88a00000)
libacl.so.1 => /usr/lib/libacl.so.1 (0x00007cde89b84000)
liblz4.so.1 => /usr/lib/liblz4.so.1 (0x00007cde8968b000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0x00007cde88f0a000)
libnghttp3.so.9 => /usr/lib/libnghttp3.so.9 (0x00007cde889dd000)
libnghttp2.so.14 => /usr/lib/libnghttp2.so.14 (0x00007cde889b3000)
libidn2.so.0 => /usr/lib/libidn2.so.0 (0x00007cde88991000)
libssh2.so.1 => /usr/lib/libssh2.so.1 (0x00007cde88946000)
libpsl.so.5 => /usr/lib/libpsl.so.5 (0x00007cde88ef6000)
libssl.so.3 => /usr/lib/libssl.so.3 (0x00007cde8886a000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00007cde88817000)
libicuuc.so.75 => /usr/lib/libicuuc.so.75 (0x00007cde8861b000)
libunistring.so.5 => /usr/lib/libunistring.so.5 (0x00007cde88438000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00007cde88373000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x00007cde88346000)
libcom_err.so.2 => /usr/lib/libcom_err.so.2 (0x00007cde89b7e000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0x00007cde88338000)
libkeyutils.so.1 => /usr/lib/libkeyutils.so.1 (0x00007cde89b77000)
libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007cde88326000)
libicudata.so.75 => /usr/lib/libicudata.so.75 (0x00007cde86400000)
laptop:~/source/git/fbpdf$
/usr/lib

laptop:/usr/lib$ ls |grep mupdf
libmupdf.so
libmupdf.so.25.1
libmupdf.so.25.2
libmupdfcpp.so
libmupdfcpp.so.25.2
laptop:/usr/lib$ ls -l /usr/lib/libmupdf.so
lrwxrwxrwx 1 root root 16 Dec 16 15:01 /usr/lib/libmupdf.so -> libmupdf.so.25.2
laptop:/usr/lib$ file libmupdf.so.25.2
libmupdf.so.25.2: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=28ab13ca10163a8fd7f3a904f4297a15f8869052, stripped
laptop:/usr/lib$ ldd /home/user/source/git/fbpdf/fbpdf |grep mupdf
	libmupdf.so.25.2 => /usr/lib/libmupdf.so.25.2 (0x000074db90800000)
laptop:/usr/lib$
Looks like it will run / partially runs
laptop:/usr/lib$ cd /home/user/source/git/fbpdf/
laptop:~/source/git/fbpdf$ ./fbpdf
usage: fbpdf [-r rotation] [-z zoom x10] [-p page] filename
Ensuring not x11 running prior to command send:
laptop:~/source/git/fbpdf$ unset DISPLAY
laptop:~/source/git/fbpdf$ env |grep DISPLAY
WAYLAND_DISPLAY=wayland-0
GNOME_SETUP_DISPLAY=:1
laptop:~/source/git/fbpdf$ ./fbpdf '/home/user/Downloads/Patterns of Debate Failure and Types of Debate outcomes.pdf'
blank when ran:

image

@aligrudi
Copy link
Owner

aligrudi commented Jan 20, 2025 via email

@LaptopDev
Copy link
Author

When X11 or Wayland is using the graphics card via DRM, the
framebuffer device does not work.

Oh I'm sorry, I didn't understand that framebuffer applications are designed to run in a real TTY, I can run fbpdf outside of GDM with control+alt+F3.

I initially was interested in fbpdf with mupdf because I thought it would be a bit easier to work with digital books quickly from within a kitty terminal in my desktop environment. I asked a chatbot, it suggest I'd want to use xvfb but want to know if that's right or what you'd recommend if you have suggestions.

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants