Git Product home page Git Product logo

sioyek's Introduction

Sioyek

Sioyek is a PDF viewer with a focus on textbooks and research papers.

Contents

Install

Official packages

There are installers for Windows, macOS and Linux. See Releases page.

Homebew Cask

There is a homebrew cask available here: https://formulae.brew.sh/cask/sioyek. Install by running:

brew install --cask sioyek

Third-party packages for Linux

If you prefer to install sioyek with a package manager, you can look at this list. Please note that they are provided by third party packagers. USE AT YOUR OWN RISK! If you're reporting a bug for a third-party package, please mention which package you're using.

Distro Link Maintainer
Flathub sioyek @nbenitez
Alpine sioyek @jirutka
Arch AUR sioyek @goggle
Arch AUR sioyek-git @hrdl-github
Arch AUR sioyek-appimage @DhruvaSambrani
Debian sioyek @viccie30
NixOS sioyek @podocarp
openSUSE Publishing @uncomfyhalomacro
openSUSE Factory @uncomfyhalomacro
Ubuntu sioyek @viccie30

Documentation

You can view the official documentation here.

Feature Video Overview

Sioyek feature overview

For a more in-depth tutorial, see this video:

Sioyek Tutorial

Features

Quick Open

recent_docs.mp4

You can quickly search and open any file you have previously interacted with using sioyek.

Table of Contents

toc.mp4

You can search and jump to table of contents entries.

Smart Jump

jump.mp4

You can jump to any referenced figure or bibliography item even if the PDF file doesn't provide links. You can also search the names of bibliography items in google scholar/libgen by middle clicking/shift+middle clicking on their name.

Overview

overview.mp4

You can open a quick overview of figures/references/tables/etc. by right clicking on them (Like Smart Jump, this feature works even if the document doesn't provide links).

Mark

mark.mp4

Sometimes when reading a document you need to go back a few pages (perhaps to view a definition or something) and quickly jump back to where you were. You can achieve this by using marks. Marks are named locations within a PDF file (each mark has a single character name for example 'a' or 'm') which you can quickly jump to using their name. In the aforementioned example, before going back to the definition you mark your location and later jump back to the mark by invoking its name. Lower case marks are local to the document and upper case marks are global (this should be very familiar to you if you have used vim).

Bookmarks

bookmarks.mp4

Bookmarks are similar to marks except they are named by a text string and they are all global.

Highlights

highlights.mp4

Highlight text using different kinds of highlights. You can search among all the highlights.

Portals (this feature is most useful for users with multiple monitors)

portal.mp4

Suppose you are reading a paragraph which references a figure which is not very close to the current location. Jumping back and forth between the current paragraph and the figure can be very annoying. Using portals, you can link the paragraph's location to the figure's location. Sioyek shows the closest portal destination in a separate window (which is usually placed on a second monitor). This window is automatically updated to show the closest portal destination as the user navigates the document.

Configuration

config.mp4

You can customize all key bindings and some UI elements by editing keys_user.config and prefs_user.config. The default configurations are in keys.config and prefs.config.

Build Instructions

Linux

Fedora

Run the following commands to install dependencies, clone the repository and compile sioyek on Fedora (tested on Fedora Workstation 36).

sudo dnf install qt5-qtbase-devel qt5-qtbase-static qt5-qt3d-devel harfbuzz-devel mesa-libGL-devel glfw-devel
git clone --recursive https://github.com/ahrm/sioyek
cd sioyek
./build_linux.sh

Generic distribution

  1. Install Qt 5 and make sure qmake is in PATH.

    Run qmake --version to make sure the qmake in path is using Qt 5.x.

  2. Install libharfbuzz:

sudo apt install libharfbuzz-dev
  1. Clone the repository and build:
git clone --recursive https://github.com/ahrm/sioyek
cd sioyek
./build_linux.sh

Windows

  1. Install Visual Studio (tested on 2019, other relatively recent versions should work too)
  2. Install Qt 5 and make sure qmake is in PATH.
  3. Clone the repository and build using 64 bit Visual Studio Developer Command Prompt:
git clone --recursive https://github.com/ahrm/sioyek
cd sioyek
build_windows.bat

Mac

  1. Install Xcode.
  2. Clone the repository and build: (The code below is in Zsh, which is the default shell on macOS.)
(
setopt PIPE_FAIL PRINT_EXIT_VALUE ERR_RETURN SOURCE_TRACE XTRACE

git clone --recursive https://github.com/ahrm/sioyek
cd sioyek
chmod +x build_mac.sh

brew install 'qt@5' freeglut mesa harfbuzz

export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"
#: The above is needed to make =qmake= from =qt= be found.
#: Find the path using =brew info 'qt@5'=.

MAKE_PARALLEL=8 ./build_mac.sh

mv build/sioyek.app /Applications/
sudo codesign --force --sign - --deep /Applications/sioyek.app
)

Donation

If you enjoy sioyek, please consider donating to support its development.

Buy Me A Coffee

sioyek's People

Contributors

ahrm avatar clemisch avatar dakamonogatari avatar dhruvasambrani avatar elu00 avatar endle avatar erooke avatar eshrh avatar fjebaker avatar gjgress avatar hrdl-github avatar jingmatrix avatar jinjiaodawang avatar jirutka avatar kunzaatko avatar mistzzt avatar nbennett320 avatar nightmachinery avatar podocarp avatar prj-2501 avatar raffaem avatar randomn4me avatar rroohhh avatar satoqz avatar smooroodina avatar st-- avatar temberature avatar tlc-10 avatar viccie30 avatar wingszeng avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sioyek's Issues

Add an installer for Sioyek

Hi, let me start by thanking you for this wonderful piece of software! Immediately after I had started using it to read papers, I got hooked and can't go back now.

Currently, it is a bit tricky to install & upgrade it - one needs to set up the directory structure themselves and periodically overwrite its contents with the ones of the ZIP containing the new version.

An installer would help with that, while also lowering the barrier for adoption and opening possibilities such as installing & upgrading Sioyek via package managers, e.g. winget for Windows. The QT Installer Framework seems to be a good candidate for that. I'd love to see it implemented!

Horizontal scroll wheel scrolls in the wrong direction

When scrolling to the right, the page is scrolled to the left and vice versa. If this was done consciously maybe consider adding an option to flip the direction of the horizontal scrolling.

I built from the current main branch.

On another note: Thank you very much for this program, using it already feels for me to be more efficient than other pdf readers.

Links are being confused when there are tables, algorithms, figures and equations.

When I middle-click on ... table x.y ..., ideally I should be redirected to the table x.y. But some books have both table x.y and figure x.y. The behavior currently looks arbitrary. Upon clicking a table, I was redirected to a figure with the same number.

Also, when I clicked on 3.4 (I was in chapter 13), I was redirected to 13.4.

I understand that you might be using heuristics when links are not provided, and they are prone to failures. Can you point me to relevant code files (or function)? I want to understand the logic and see what can be done to alleviate this kind of behavior. (Sorry, I was planning to peruse the whole code, but it seems daunting :) ).

C++ error on Ubuntu installation

Hi,

I am trying to install from source on Ubuntu 20.04 and getting the following C++ error in during compilation. Probably I am just missing some C++ library, or a compiler flag to conform to a recent standard is not being set in pdf_viewer_build_config.pro, but my Googling is not strong enough to figure out what it is.

$ cd sioyek
$ git pull --recurse-submodules
$ ./build_linux.sh
make: Nothing to be done for 'default'.
g++ -c -pipe -std=c++17 -O2 -std=gnu++11 -Wall -W -D_REENTRANT -fPIC -DQAPPLICATION_CLASS=QApplication -DQT_3DCORE_LIB -DQT_3DANIMATION_LIB -DQT_3DEXTRAS_LIB -DQT_3DINPUT_LIB -DQT_3DLOGIC_LIB -DQT_3DRENDER_LIB -DQT_OPENGL_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_QUICKWIDGETS_LIB -DQT_SQL_LIB -DQT_WIDGETS_LIB -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_QUICKWIDGETS_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_3DANIMATION_LIB -DQT_3DEXTRAS_LIB -DQT_3DRENDER_LIB -DQT_3DINPUT_LIB -DQT_3DLOGIC_LIB -DQT_3DCORE_LIB -DQT_GAMEPAD_LIB -DQT_OPENGLEXTENSIONS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I. -Ipdf_viewer/SingleApplication -Ipdf_viewer -Imupdf/include -Izlib -I../anaconda3/include/qt -I../anaconda3/include/qt/QtOpenGL -I../anaconda3/include/qt/QtQuickWidgets -I../anaconda3/include/qt/QtWidgets -I../anaconda3/include/qt/QtQuick -I../anaconda3/include/qt/Qt3DAnimation -I../anaconda3/include/qt/Qt3DExtras -I../anaconda3/include/qt/Qt3DRender -I../anaconda3/include/qt/Qt3DInput -I../anaconda3/include/qt/Qt3DLogic -I../anaconda3/include/qt/Qt3DCore -I../anaconda3/include/qt/QtGamepad -I../anaconda3/include/qt/QtOpenGLExtensions -I../anaconda3/include/qt/QtGui -I../anaconda3/include/qt/QtQml -I../anaconda3/include/qt/QtNetwork -I../anaconda3/include/qt/QtSql -I../anaconda3/include/qt/QtCore -I. -I../anaconda3/mkspecs/linux-g++ -o config.o pdf_viewer/config.cpp
In file included from mupdf/include/mupdf/fitz.h:11,
                 from pdf_viewer/utils.h:15,
                 from pdf_viewer/config.cpp:2:
mupdf/include/mupdf/fitz/context.h: In function ‘void* fz_keep_imp_locked(fz_context*, void*, int*)’:
mupdf/include/mupdf/fitz/context.h:633:32: warning: unused parameter ‘ctx’ [-Wunused-parameter]
  633 | fz_keep_imp_locked(fz_context *ctx, void *p, int *refs)
      |                    ~~~~~~~~~~~~^~~
pdf_viewer/config.cpp: In constructor ‘ConfigManager::ConfigManager(const wstring&, const wstring&)’:
pdf_viewer/config.cpp:102:113: error: no matching function for call to ‘std::vector<Config>::push_back(<brace-enclosed initializer list>)’
  102 |  configs.push_back({ L"text_highlight_color", DEFAULT_TEXT_HIGHLIGHT_COLOR, vec3_serializer, vec3_deserializer });
      |                      

This is repeated for several lines in the source file; I'll provide the complete output on request (didn't want to clutter up the issue)

My system info:

$ uname -a
Linux xxxx 5.11.0-25-lowlatency #27~20.04.1-Ubuntu SMP PREEMPT Tue Jul 13 18:53:05 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Using small pop-up window/notification to quickly show the references

Hello,
A cool feature that I find very useful in many websites such as ScienceDirect, Wikipedia(when using the wikiwand extension*****), etc. is that when you click on a reference number instead of jumping to the reference in the References section, it show a little pop-up notification showing the full reference.

IMHO, this is way better than using bookmarks, or portals.

*****Here is a screenshot from wikiwand, when I click on reference number 2, it will show the reference instead of jumping:

image

The highlight can't see in other pdf reader software

I try to highlight some sentences but when I use other pdf software (like foxit reader, chrome)to open it I can't see the highlight, but if I use highlight in foxitreader, it can still be seen in sioyek. Do I miss some operation like save the changes or pdf?

Can't delete text highlights

Hi there,
Thanks for the amazing project!

Built on Linux Xubuntu 20.04 from scratch using ./build_linux.sh and fresh master.

I've added highlights by selecting a piece of text and pressing h, so it turns to be colored. But when I pressed dh it does nothing, only invalid command; resetting to root in the logs.

If you need more info feel free to ask.
Cheers

Can not compile Sioyek MacOS

Hello!
MacOS: 10.15.7
QT installed from home-brew: qt: stable 6.1.3 (bottled)
compilation fails:
Project ERROR: Unknown module(s) in QT: openglextensions
Any ideas how to troubleshoot?

Allowing single-page mode only (useful for presentations)

As far as I am aware, sioyek has only a continous display mode between pages, and there is no way to display document in a single-page mode which is very useful for presentations. In Zathura pdf viewer, you can achieve that by pressing "F5" key and use the "Page Down" or "Page Up" keys to navigate (which is a partial solution, for details, see this page).

Is it possible to have at least a similar behaviour for presentations mode?

Thank you

Support for Touch Screens

First, thanks a lot for this amazing piece of software! It really outshines other viewers for consuming papers/textbooks.

I wanted to put in a feature request for supporting scrolling with touch drags. Currently, if I drag on the touch screen, it simply behaves the same as mouse dragging with left button clicked - selecting all the text in those parts.

This is how the Edge browser (and Android touchscreens) behaves:

  1. "Simple drags" scroll the document,
  2. "Long presses" select the word under the finger (in sioyek, it currently acts as right click), and give handles which can be dragged to extend the selection.
    • This seems difficult to implement (especially the handles), so as a first approximation, we could instead do what the current "simple drag" does - after long press, until finger is lifted, select all the text that is dragged over.
  3. "Two-finger press" acts as right click

Hotkey to follow pdf links

One feature of Zathura which I use a lot is the ability to follow links from a hotkey - the way it works is you press a hotkey and visible pdf links are highlighted and given a number. Typing the corresponding number to a link then makes the viewer follow it.

Would it be possible to get functionality similar to this in Sioyek?

Allow multiple instances at same time

It's common to read multiple PDFs at same time. How can I change the behaviour to "Open this file in new instance" instead of reusing the same process?

Thank you

High memory usage

I opened a 98k pdf and I opened Task Manager / Processes under Windows 10
It uses 296MB of memory! while this is only 96kB for Summatra!

Would you please have a look!

Interest to package this as Flatpak?

Hi,

Would you be interest in Sioyek package as Flatpak.
I am trying to build it as Flatpak, but got the error

make: g++-9: No such file or directory
make: *** [Makefile:1037: book.o] Error 127
Error: module Sioyek: Child process exited with code 2

I think this is because flatpak use gcc 10.2.

Failed to open PDF files in Fedora

Hi, I'm trying to compile it under Fedora following README

g++ -Wl,-O1 -Wl,-rpath-link,/usr/lib64 -o sioyek book.o config.o database.o document.o document_view.o input.o main.o main_widget.o pdf_renderer.o pdf_view_opengl_widget.o sqlite3.o ui.o path.o utils.o synctex_parser.o synctex_parser_utils.o RunGuard.o moc_pdf_renderer.o moc_RunGuard.o   -ldl -Lmupdf/build/release -lmupdf -lmupdf-third -lharfbuzz -lfreetype -lgumbo -ljbig2dec -lopenjp2 -ljpeg -lz /usr/lib64/libQt5OpenGL.so /usr/lib64/libQt5QuickWidgets.so /usr/lib64/libQt5Widgets.so /usr/lib64/libQt5Quick.so /usr/lib64/libQt53DAnimation.so /usr/lib64/libQt53DExtras.so /usr/lib64/libQt53DRender.so /usr/lib64/libQt53DInput.so /usr/lib64/libQt53DLogic.so /usr/lib64/libQt53DCore.so /usr/lib64/libQt5OpenGLExtensions.a /usr/lib64/libQt5Gui.so /usr/lib64/libQt5Sql.so /usr/lib64/libQt5QmlModels.so /usr/lib64/libQt5Qml.so /usr/lib64/libQt5Network.so /usr/lib64/libQt5Core.so -lGL -lpthread   

However, my compiled sioyek refused to open any pdf file

lizhenbo@localhost sioyek$ ./sioyek 
default_config_path: /home/lizhenbo/src/sioyek/prefs.config
default_keys_path: /home/lizhenbo/src/sioyek/keys.config
user_config_path: /home/lizhenbo/.local/share/Sioyek/prefs_user.config
user_keys_path: /home/lizhenbo/.local/share/Sioyek/keys_user.config
database_file_path: /home/lizhenbo/.local/share/Sioyek/test.db
tutorial_path: /home/lizhenbo/.local/share/Sioyek/tutorial.pdf
last_opened_file_address_path/home/lizhenbo/.local/share/Sioyek/last_document_path.txt
shader_path/home/lizhenbo/src/sioyek/shaders
config file change listener constructor called1starting index thread ...
figure indexing finished ... 
texture: 5
getting links .... for 0
invalid command; resetting to root
invalid command; resetting to root
invalid command; resetting to root

I created a trivial PR for troubleshooting, but it provides little information

The AppImage version works well for me

Thanks

[Feature request] Save selection as images

Hi, I'm switching from Okular to sioyek, and this is a useful function in Okular I wish sioyek could have.

Please let me demonstrate what I mean with this screenshot

screenshot

Besides, I have a question for @ahrm : Would you like to create a roadmap issue and share your plans about further development plans? Including new format support or code refactoring? (Right, I admit that I've read all open issues for sioyek)

"Could not add font!" on Linux build

Thanks for providing a Linux build. However, the current version seems to fail to render any PDF file I throw at it with following error:

could not add font!1config file change listener constructor called1starting index thread ...
figure indexing finished ...
Impossible to open Impossible to open Impossible to open Impossible to open texture: 4

qt5-3d 5.15.2
libmupdf 1.18.0
Arch Linux 5.12.15 x86_64

Project ERROR: Unknown module(s) in QT

Hi. The features look awesome, so I tried to install the viewer.
I did:
sudo apt-get install qt5-default libharfbuzz-dev
So :

> qmake --version
QMake version 3.1
Using Qt version 5.12.8 in /usr/lib/x86_64-linux-gnu

But the build is failing:

In file included from thirdparty/freeglut/src/fg_internal.h:192,
                 from thirdparty/freeglut/src/fg_callbacks.c:29:
thirdparty/freeglut/src/x11/fg_internal_x11.h:42:10: fatal error: X11/extensions/XInput.h: No such file or directory
   42 | #include <X11/extensions/XInput.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [Makethird:200: build/release/thirdparty/freeglut/src/fg_callbacks.o] Error 1
Info: creating stash file /home/simon/utilities/sioyek/.qmake.stash
Project ERROR: Unknown module(s) in QT: quickwidgets 3dcore 3danimation 3dextras 3dinput 3dlogic 3drender
make: *** No targets specified and no makefile found.  Stop.
cp: cannot stat 'sioyek': No such file or directory

I googled the error and tried to do sudo apt install qtdeclarative5-dev, but the build is still failing with this message:

Project ERROR: Unknown module(s) in QT: 3dcore 3danimation 3dextras 3dinput 3dlogic 3drender

How should I install Qt5 properly? Sorry for noob question, haha

Allow 'alt' key as a modifier

In zathura (which this project seem to draw some inspiration from?), one has the ability to not only use the shift and ctrl keys as modifiers, but also the alt key. Any chance this modifier could be added to the existing roster?

In zathura, the way to configure such a keybinding would look like this:

goto_page_with_page_number		<A-g>

Black-white chessboard image when scrolling down fast

When opening a pdf file, or scrolling down, a black-white chessboard would appear on the screen

Other PDF readers like Okular would present a white (background colour) page while loading. The chessboard image would make my screen blink and my eyes are complaining about it.

Thank you.

screen_record.mp4

Font rendering broken with fractional scaling on Linux

This is what the text looks like with 125% scaling enabled on the display:
125% scaling

The issues weren't present at 100% scaling. I'll try with 150% and 200% too see what happens.
EDIT: Here's 150% and 200% scaling. Rendering is broken in both cases (need to zoom in a bit to notice in the case of 2x scaling, but everything seems aliased):
1 5x scaling
2x scaling

For reference, here's 1x scaling (no aliasing at all):
1x scaling

AppImage fails on Debian 10

Actual behavior

Seems like both AppImages created on Linux distro which has more recent version of libstdc than actual LTS release

$ ./Sioyek-x86_64.AppImage
./Sioyek-x86_64.AppImage: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./Sioyek-x86_64.AppImage)

Expected behavior

It should run without issues on Linux LTS distributions, so if possible use build environment which would allow use AppImage on LTS releases of both Ubuntu and Debian.

References

Double click for word selecting.

This is a useful tool. Could you add the function for which we can double click left mouse to select the single word or tell me how can I do about it.

Storage of highlights, bookmarks, etc

Hi,

Many thanks for this great tool. It quickly became my favorite pdf reader.

What I would like to know is where the highlights and other file-related information are stored. I am trying to avoid losing it in case I move files or update Sioyek. Also, I would like to eventually export highlights and bookmarks.

Cheers

Sioyek allows multiple duplicate highlights

Hi,
After playing with Sioyek, it appears that it allows multiple duplicate hughlights, for example you can press:

hkhkhkhk

This will create the same highlight 4 times.

These duplicates appear also when you export them.
So I wonder why Sioyek allows this? is it a feature or a bug?

Thank you

PDFs don't render

Probably hard to debug, but not a single one of my pdfs seems to render. I can interact with the menus in sioyek just fine, and even navigate to different pages, but whatever I do, there's no actual rendered output. To give a visual impression:

2021-09-19-1632084777

It seems like no interesting errors/warnings are shown on the terminal. Still, here is an example of the information that is displayed when opening a pdf:

$ sioyek Arbib2008.pdf
default_config_path: /home/rw/.config/sioyek/prefs.config
default_keys_path: /home/rw/.config/sioyek/keys.config
user_config_path: [ 0 ] /home/rw/.config/sioyek/prefs_user.config
user_config_path: [ 1 ] /etc/xdg/sioyek/prefs_user.config
user_keys_path: [ 0 ] /home/rw/.config/sioyek/keys_user.config
user_keys_path: [ 1 ] /etc/xdg/sioyek/keys_user.config
database_file_path: /home/rw/.local/share/sioyek/test.db
local_database_file_path: /home/rw/.local/share/sioyek/local.db
global_database_file_path: /home/rw/.local/share/sioyek/shared.db
tutorial_path: /home/rw/.local/share/sioyek/tutorial.pdf
last_opened_file_address_path: /home/rw/.local/share/sioyek/last_document_path.txt
shader_path: /home/rw/.local/share/sioyek/shaders
Creating shared memory block...
Shared memory created: this is the primary application.
Starting IPC server...
IPC server started.
adding child command to a final command
adding child command to a final command
adding child command to a final command
adding child command to a final command
adding child command to a final command
adding child command to a final command
adding child command to a final command
adding child command to a final command
config file change listener constructor called1starting index thread ...
getting links .... for 0
figure indexing finished ...
texture: 5

Version information

I'm using a sioyek build from the newest git commit (by way of the AUR package), which would be bf48fc4.

I'm using Arch linux (so everything should be at its newest possible version), with kernel version 5.14.5.

Standardised location for config files

Hi, thanks for this project – seems to be scratching many long-standing itches!

Does the app look for config files in the usual Linux/Mac directories such as .config/sioyek etc? If not, could it?

Thanks!

Support .cbz and .cbr

Thank you for the program. It is easily the best pdf viewing experience I had. Please consider supporting CBZ and CBR files which are the standards for digital comic books.

Open in dark mode by default

Title says it all I think? Currently, the only way to get into dark mode is by a keypress.

An hacky work around would be to change the value of background_color to be dark. I'm okay with this, but the documentation on what the three values this option takes leaves me, well, in the dark. Are they R, G, B or something? Perhaps add that info to a comment in the prefs.config file?

[BUG] Background is translucent (?)

On Linux, I have transparency+blur enabled on my compositor (OpenGL+KDE), and looks like sioyek also uses those values for the background. This is what happens when I enable dark mode:

Dark mode bg blur
(this looks pretty cool, to be honest)

There are some other rendering bugs too, probably related:

Washed out
dark mode disabled, nothing visible

Nothing visible
this is an artifact of the screenshot app, much more was visible on screen

Support DJVU and EPUB

Many STEM related ebooks are in DJVU format and I highly recommend adding support. And if you are going to the trouble to adding DJVU support, might as well add ebook as well.

feature request: ignore invalid last_document_path

Hi, thanks for the great project.

I've been using the viewer in Windows (and it works great :D), I find it a little inconvenient whenever the file I viewed the last time doesn't exist at the directory it was originally located at (which is often my scenario), the binary doesn't launch at all.

Could you consider adding a default action for the invalid last document path?

Thanks in advance!

Cannot be build using recent GCC or CLANG

Reason given by Clang is:

pdf_viewer/pdf_view_opengl_widget.cpp:44:102: error: cannot pass non-trivial object of type 'std::filesystem::path' to variadic function; expected type from format string was 'char *' [-Wnon-pod-varargs]
                printf("Impossible to open %s. Are you in the right directory ? Don't forget to read the FAQ !\n", vertex_file_path);
                                           ~~                                                                      ^~~~~~~~~~~~~~~~
pdf_viewer/pdf_view_opengl_widget.cpp:44:102: note: did you mean to call the c_str() method?
                printf("Impossible to open %s. Are you in the right directory ? Don't forget to read the FAQ !\n", vertex_file_path);
                                                                                                                   ^
                                                                                                                                   .c_str()                                                                                                                                                                                                                                                   
pdf_viewer/pdf_view_opengl_widget.cpp:58:102: error: cannot pass non-trivial object of type 'std::filesystem::path' to variadic function; expected type from format string was 'char *' [-Wnon-pod-varargs]
                printf("Impossible to open %s. Are you in the right directory ? Don't forget to read the FAQ !\n", fragment_file_path);
                                           ~~                                                                      ^~~~~~~~~~~~~~~~~~
pdf_viewer/pdf_view_opengl_widget.cpp:58:102: note: did you mean to call the c_str() method?
                printf("Impossible to open %s. Are you in the right directory ? Don't forget to read the FAQ !\n", fragment_file_path);
                                                                                                                   ^
                                                                                                                                     .c_str()                                                                                                                                                                                                                                                 
pdf_viewer/pdf_view_opengl_widget.cpp:66:36: error: cannot pass non-trivial object of type 'std::filesystem::path' to variadic function; expected type from format string was 'char *' [-Wnon-pod-varargs]
        printf("Compiling shader : %s\n", vertex_file_path);

GCC accepts to build it but then crashes when run, hitting this bug:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95048

not an issue - future roadmap

1st Steps
There's projects that have made commenting on pdf a business. I need to dig up the link.
I think one step you could explore (not immediately on a rainy day) - is to show a list of what people are reading using opt in telemetry data - maybe using google sheet - something simple that you could set and forget without too much overhead - and then come back in 12 months and be like - let's take another step -
you might find it catches on - and you could have millions of users.
it would take a sign in process - a backend - maybe just firebase. and then a simple post to a worksheet.

I browse papers all the time - I gravitate to youtube to get help reading them as the linear algebra is quite advanced.
There's an opportunity to connect people - with papers - and have them help each other. But first step would be take a look at the data / and make it public from the outset. (you wouldn't want to expose emails / but you could just have a list of papers...)

Document turn into white screen after clicking <backspace> several times

Hi there,
Thanks for the amazing project!

I've tried to test it on Linux Xubuntu 20.04 by building from scratch using ./build_linux.sh.
After I started and play a bit with steps in the tutorial, I reached the line with backspace, pressed on it several times and the whole document turns into a white screen. So, I was not able to navigate it somehow, but I was still able to open a new document.
When I tested the same behaviour on the newly opened documents the issue reproduced.

Selection_109
bug-sioyek

The log for an example:

~/dev/sioyek/build$ ./sioyek 
default_config_path: ~/dev/sioyek/build/prefs.config
default_keys_path: ~/dev/sioyek/build/keys.config
user_config_path: ~/.local/share/Sioyek/prefs_user.config
user_keys_path: ~/.local/share/Sioyek/keys_user.config
database_file_path: ~/.local/share/Sioyek/test.db
tutorial_path: ~/.local/share/Sioyek/tutorial.pdf
last_opened_file_address_path~/.local/share/Sioyek/last_document_path.txt
shader_path~/dev/sioyek/build/shaders
config file change listener constructor called1starting index thread ...
Figure 1: Mandlebrot Set
figure indexing finished ... 
warning! calling open() on an open document
texture: 2
texture: 3
texture: 5
getting links .... for 0
getting links .... for 1
texture: 6
deleting cached texture ... 
deleting cached texture ... 
deleting cached texture ... 
texture: 2
texture: 3
texture: 7
texture: 8
deleting cached texture ... 
deleting cached texture ... 
deleting cached texture ... 
getting links .... for 3
[xcb] Unknown request in queue while appending request
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.

Ask me any questions to help you reproduce and fix it!
I'm really excited to have such a nice thing in my toolbox.

Cheers,
Sergei

Annotations

It would be nice if it has annotations like Adobe Reader/Okular.

An option to jump to the True end of a document

Currently, When you press End key it will show the top part of the last page (correct me if that's wrong) so If I want to to reach the true end page I still have to press the "down" arrow key multiple times to achieve that.

I wonder if there is an option in Sioyek to allow this behaviour (in parallel with the current bahviour, or maybe allowing to override it).

Thanks

VimTeX "integration"

First, congratulations with developing something that immediately looks very promising as a PDF reader for scientists! It seems you have already implemented a lot of novel and very interesting features.

I'm the developer of a Vim plugin for writing LaTeX: VimTeX. If (and when) you think this viewer is suitable for working with PDFs generated from LaTeX e.g. with synctex support, I would be happy to add sections for how to properly configure Vim with VimTeX to use this viewer. Perhaps also add a full layer similar to what I've done with Skim, Zathura and MuPDF.

Let me know if you are interested in a collaboration for this type of direction; and of course, feel free to close the issue if you think this is better addressed by others/the community/at a later time/...

AppImage Crashing

When I try to open specific files with the Sioyek Appimage it immediatly crashes:

Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
"/tmp/.mount_SioyekLyVQ11/usr/bin/prefs.config"
"/tmp/.mount_SioyekLyVQ11/usr/bin/keys.config"
"/home/max/.local/share/Sioyek/prefs_user.config"
"/home/max/.local/share/Sioyek/keys_user.config"
"/home/max/.local/share/Sioyek/test.db"
"/home/max/.local/share/Sioyek/tutorial.pdf"
"/home/max/.local/share/Sioyek/last_document_path.txt"
"/tmp/.mount_SioyekLyVQ11/usr/bin/shaders"
config file change listener constructor called1starting index thread ...
Compiling shader : 
Compiling shader : �jYMV
Compiling shader : �YMV
Compiling shader : �YMV
Compiling shader : MV
Compiling shader : 03ZMV
Compiling shader : ��ZMV
Compiling shader : PEZMV
Compiling shader : ��ZMV
Compiling shader : @�ZMV
Compiling shader : @[MV
Compiling shader : �[MV
texture: 5
texture: 6
figure indexing finished ... 
getting links .... for 12
config file change listener constructor called1getting links .... for 13
config file change listener destructor called1invalid command; resetting to root
terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
  what():  filesystem error: Cannot convert character sequence: Ungültiges oder unvollständiges Multi-Byte- oder Wide-Zeichen

I have narrowed the problem down to mutated vowels.

The name of the file was: "Schönleber Verfahren zur Charakterisierung des Niederfrequenzverhaltens von.pdf"

changed filename : "Schonleber Verfahren zur Charakterisierung des Niederfrequenzverhaltens von.pdf"

since I changed the filename, it didn't crash anymore

Using this PDF viewer with Mendeley

Hello,
I would like to thank you for this piece of software: very helpful!
However, AFAIK, Most researchers are using some tools such as Mendeley to manage their documents/citations, etc.

Personally, I find it hard to transition from Mendeley to Sioyek and give up all the notes/highlight of each paper in my database of papers.

So, if Sioyek offers a solution to this problem, a lot of Mendeley will happily transition but It is still not clear how given that sioyek is not a library management software.

Isn't that possible?
Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.