fbpdf icon indicating copy to clipboard operation
fbpdf copied to clipboard

fbpdf functionality in arch in wayland gnome mutter

Open LaptopDev opened this issue 1 year ago • 6 comments

          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 https://github.com/aligrudi/fbpdf/issues/15#issuecomment-2589843276

LaptopDev avatar Jan 14 '25 19:01 LaptopDev

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

LaptopDev avatar Jan 14 '25 19:01 LaptopDev

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$ 

LaptopDev avatar Jan 14 '25 19:01 LaptopDev

LaptopDev @.***> wrote:

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

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

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$ 

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

Ali

aligrudi avatar Jan 14 '25 21:01 aligrudi

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

LaptopDev avatar Jan 14 '25 23:01 LaptopDev

LaptopDev @.***> wrote:

Could you please provide the minimal cc command required to compile and link fbpdf directly without make?

The Makefile itself includes commands for building and linking fbpdf. I suggest keeping only one version of the mupdf library and removing the other, before building fbpdf.

Ali

aligrudi avatar Jan 20 '25 19:01 aligrudi

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

LaptopDev avatar Jan 23 '25 04:01 LaptopDev