Sioyek is a PDF viewer designed for reading research papers and technical books.

Overview

Sioyek

Sioyek is a PDF viewer designed for reading research papers and technical books.

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/shif+middle clicking on their name.

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.

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.conf and prefs_user.conf. The default configurations are in keys.conf and prefs.conf.

Comments
  • Text rendering issue on linux build / release

    Text rendering issue on linux build / release

    Hi there,

    I just tried to use a fresh build image for here and also built from the master, but in both cases had such a rendering issue: Selection_221 Could you please help me to fix it? My env: Xubuntu 20.04.1

    Thanks in advance!

    opened by szobov 24
  • Standardised location for config files

    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!

    opened by d-miketa 20
  • installation issue

    installation issue

    I am pretty noob to linux so excuse this probably simple question. image I have dependencies installed.

    I just installed qtdeclarative5-dev and still having this issue.

    opened by tokisuno 18
  • Mouse hovering a reference doesn't show the reference

    Mouse hovering a reference doesn't show the reference

    Hello, The recently implemented feature--- When you hover on a referece, a figure, etc. to display it as adressed here: #43

    However, this feature works on some PDF files (such as those who have hyperlinks on the reference numbers). But for some documents it doesn't work (see the attached PDF).

    Thank you

    document.zip

    opened by A3EKV 18
  • PDF doesn't render on Arch

    PDF doesn't render on Arch

    I installed sioyek from the AUR with yay -S sioyek and after installation all I get is a white screen with a bar below which denotes the page numbers. The TOC works, and also the settings menu but the PDF doesn't load. Here's what I get when I run sioyek:

    ❯ sioyek
    default_config_path: /etc/sioyek/prefs.config
    default_keys_path: /etc/sioyek/keys.config
    user_config_path: [ 0 ] /etc/xdg/sioyek/prefs_user.config
    user_config_path: [ 1 ] /home/divya/.config/sioyek/prefs_user.config
    user_keys_path: [ 0 ] /etc/xdg/sioyek/keys_user.config
    user_keys_path: [ 1 ] /home/divya/.config/sioyek/keys_user.config
    database_file_path: /home/divya/.local/share/sioyek/test.db
    local_database_file_path: /home/divya/.local/share/sioyek/local.db
    global_database_file_path: /home/divya/.local/share/sioyek/shared.db
    tutorial_path: /usr/share/sioyek/tutorial.pdf
    last_opened_file_address_path: /home/divya/.local/share/sioyek/last_docum
    shader_path: /usr/share/sioyek/shaders
    Creating shared memory block...
    Shared memory created: this is the primary application.
    Starting IPC server...
    IPC server started.
    

    I have looked at other issues like Issue#50, but nothing really changes for me when I do:

    cp -r /usr/share/sioyek/shaders /home/divya/.local/share/sioyek/shaders
    cp /usr/share/sioyek/tutorial.pdf /home/divya/.local/share/sioyek/tutorial.pdf
    

    I have tried to install the git version with yay -S sioyek-git but that isn't any different. I have tried to build and compile myself but I get stuck with the following:

    g++ -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -Wl,-rpath-link,/usr/lib -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 checksum.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 -lmupdf-threads -lharfbuzz -lz /usr/lib/libQt5OpenGL.so /usr/lib/libQt5QuickWidgets.so /usr/lib/libQt5Widgets.so /usr/lib/libQt5Quick.so /usr/lib/libQt53DAnimation.so /usr/lib/libQt53DExtras.so /usr/lib/libQt53DRender.so /usr/lib/libQt53DInput.so /usr/lib/libQt53DLogic.so /usr/lib/libQt53DCore.so /usr/lib/libQt5OpenGLExtensions.a /usr/lib/libQt5Gui.so /usr/lib/libQt5Sql.so /usr/lib/libQt5QmlModels.so /usr/lib/libQt5Qml.so /usr/lib/libQt5Network.so /usr/lib/libQt5Core.so -lGL -lpthread
    /usr/bin/ld: cannot find -lmupdf-threads
    collect2: error: ld returned 1 exit status
    make: *** [Makefile:267: sioyek] Error 1
    

    even though I have libmupdf installed.

    What am I doing wrong, or missing?

    opened by divyaranjan1905 16
  • latest release (in fork) for macOS has blurry font

    latest release (in fork) for macOS has blurry font

    This refers to the latest release in this fork

    As soon as I opened it, I noticed that the PDF fonts are blurry. I can see the pixels of the characters while previously I saw smooth font.

    I have already rolled back.

    opened by SichangHe 16
  • Highlights not visible in other apps

    Highlights not visible in other apps

    So I marked up a document with sioyek, I open the resulting PDF in another app (in my instance Xodo desktop version, https://pdf.online/?from=xodo), and the highlights are not visible. Reopening the PDF in sioyek shows the highlights. Also, PDFs highlighted in Xodo shows the highlights in sioyek.

    Is there some problem with the highlighting that is not standard across the PDF specification?

    opened by DOFfactory 16
  • Sioyek is not responding

    Sioyek is not responding

    Sometimes when I load a larger PDF I get this error:

    image

    I do not know what is causing the issue, but if you want to troubleshoot/debug, in this case it was this document: https://op.europa.eu/en/publication-detail/-/publication/7769a148-f1f6-11e8-9982-01aa75ed71a1

    I noticed that if one scrolls too quickly, it hogs the system, sometimes sioyek is able to recover from it, sometimes not. My system is updated Windows 10.

    opened by DOFfactory 16
  • AppImage fails on Debian 10

    AppImage fails on Debian 10

    • OS: Debian 10.x buster
    • Version: v0.31.5
      • https://github.com/ahrm/sioyek/releases/download/v0.31.5/sioyek-release-linux-portable.zip
      • https://github.com/ahrm/sioyek/releases/download/v0.31.5/sioyek-release-linux.zip

    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

    • https://stackoverflow.com/questions/52663287/glibcxx-3-4-26-not-found
    • https://stackoverflow.com/questions/63190229/glibcxx-3-4-26-not-found-running-cross-complied-program-on-beaglebone
    opened by Symbian9 16
  • Build error in Linux for 1.4.0

    Build error in Linux for 1.4.0

    I'm trying to update the AUR package for Arch Linux, but when I compile sioyek, I get this error:

    pdf_viewer/document.cpp:552:52: error: cannot convert ‘fz_location’ to ‘int’ in assignment
      552 |                         current_node->page = root->page;
          |                                              ~~~~~~^~~~
          |                                                    |
          |                                                    fz_location
    pdf_viewer/document.cpp: In member function ‘std::optional<std::pair<std::__cxx11::basic_string<wchar_t>, std::__cxx11::basic_string<wchar_t> > > Document::get_generic_link_name_at_position(const std::vector<fz_stext_char*>&, float, float)’:
    pdf_viewer/document.cpp:1211:27: warning: unknown escape sequence: '\.'
     1211 |         std::wregex regex(L"[a-zA-Z]{3,}(\.){0,1}[ \t]+[0-9]+(\.[0-9]+)*");
          |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    pdf_viewer/document.cpp:1211:27: warning: unknown escape sequence: '\.'
    make: *** [Makefile:966: document.o] Error 1
    cp: cannot stat 'sioyek': No such file or directory
    ==> Entering fakeroot environment...
    ==> Starting package()...
    install: cannot stat './build/sioyek': No such file or directory
    ==> ERROR: A failure occurred in package().
        Aborting...
    

    Any idea why?

    opened by goggle 15
  • [SOLVED] Build error on Windows - Related to missing

    [SOLVED] Build error on Windows - Related to missing "zconf.h"

    SOLVED : See here.

    Hello,

    I get several errors when trying to build on Windows, all related to a missing zconf.h.

    I have done the following :

    1. Install VS 2019
    2. Install component C++ for desktop
    3. Install Qt 15
    4. Cloned the repo using git clone --recursive
    5. Launched the build_windows.bat

    Here are some errors I get along the build :

     E:\...\Documents\Mes Documents\Code\sioyek\zlib\zlib.h(34,10): fatal error C1083: Cannot open include file: 'zconf.h': No such file or directory [E:\...\Documents\Mes Documents\Code\sioyek\sioyek.vcxproj]
    
     E:\...\Documents\Mes Documents\Code\sioyek\mupdf\thirdparty\zlib\zlib.h(34,10): fatal error C1083: Cannot open include file: 'zconf.h': No such file or directory [E:\...\Documents\Mes Documents\Code\sioyek\mupdf\platform\win32\libthirdparty.vcxproj]
    
     E:\...\Documents\Mes Documents\Code\sioyek\mupdf\thirdparty\zlib\zlib.h(34,10): fatal error C1083: Cannot open include file: 'zconf.h': No such file or directory [E:\...\Documents\Mes Documents\Code\sioyek\mupdf\platform\win32\libextract.vcxproj]
    

    I can add more details if needed. Thanks for your help.

    opened by Elaws 15
  • [Feature request] Import annotations into current document for better cross PDF workflow.

    [Feature request] Import annotations into current document for better cross PDF workflow.

    Usecase

    embed_annotations and _embed_annotations are really useful because they allow to use Sioyek annotations in other PDF readers (e.g. : Zotero PDF reader).

    However, annotations made in other PDF readers, even if visible in Sioyek, can't be interacted (can't delete or search highlights, can't see bookmark content).

    It would be really useful if we could import annotations from other PDF readers into Sioyek.

    Closer to a better cross PDF workflow

    With a new import_annotation feature, someone that works with multiple PDF readers could simply use this simple workflow when working on a document :

    1. Load PDF in Sioyek.
    2. import_annotation
    3. Add new annotations in Sioyek.
    4. _embed_annotations
    5. Add annotations in another PDF reader.
    6. Back to step 1.
    opened by Elaws 0
  • when having to instances of sioyek open, only the first one uses the user prefs_user.config file

    when having to instances of sioyek open, only the first one uses the user prefs_user.config file

    Hi thank you for an amazing piece of software, finally something good enough to replace zathura but with modern featureset.

    To recreate the bug, it's easy: open to pdfs. use, for example, the

    dark_mode_contrast

    setting, which has easy visual identification of the change. go to dark mode in both pdfs.

    now change dark_mode_contrast to something else. Only the first pdf changes, the second does not (it seems like the second one does not read the user prefs file at all, so it's not only changes to the file, but the file itself, that does not change.

    
    version: sioyek 1.5.0
    
    
    on manjaro w. i3, fully updated,
    
    opened by emilBeBri 2
  • on macOS, Sioyek does not work in command line

    on macOS, Sioyek does not work in command line

    When I do sioyek, I get "command not found". I installed Sioyek using the official instruction (HomeBrew). This bug also prohibits me from using plugins/extensions.

    opened by ibehnam 3
  • Crash

    Crash

    ❯ sioyek publication_list.pdf
    default_config_path: /etc/sioyek/prefs.config
    default_keys_path: /etc/sioyek/keys.config
    user_config_path: [ 0 ] /etc/xdg/sioyek/prefs_user.config
    user_config_path: [ 1 ] /home/raffaele/.config/sioyek/prefs_user.config
    user_keys_path: [ 0 ] /etc/xdg/sioyek/keys_user.config
    user_keys_path: [ 1 ] /home/raffaele/.config/sioyek/keys_user.config
    Error: Could not open config file /mnt/dataint/data/documenti/work/2022-11-15_EPFL/application/dracula.config
    database_file_path: /home/raffaele/.local/share/sioyek/test.db
    local_database_file_path: /home/raffaele/.local/share/sioyek/local.db
    global_database_file_path: /home/raffaele/.local/share/sioyek/shared.db
    tutorial_path: /usr/share/sioyek/tutorial.pdf
    last_opened_file_address_path: /home/raffaele/.local/share/sioyek/last_document_path.txt
    shader_path: /usr/share/sioyek/shaders
    Creating shared memory block...
    Shared memory created: this is the primary application.
    Starting IPC server...
    IPC server started.
    /usr/include/c++/12.2.0/bits/stl_vector.h:1123: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](size_type) [with _Tp = DocumentViewState; _Alloc = std::allocator<DocumentViewState>; reference = DocumentViewState&; size_type = long unsigned int]: Assertion '__n < this->size()' failed.
    fish: Job 2, 'sioyek publication_list.pdf' terminated by signal SIGABRT (Abort)
    
    opened by raffaem 1
  • Custom command resets zoom

    Custom command resets zoom

    Executing a custom command resets the zoom. _custom_command;fit_to_page_height <key> or similar commands which change the zoom as a workaround doesn't work, it first fits to height and then resets the zoom to standard again. Calling sioyek --execute-command fit_to_page_height in the script executed by the custom command doesn't work as a workaround either.

    opened by sandersantema 2
Releases(v1.5.0)
All-in-one library and application for processing and rendering PDF documents.

All-in-one library and application for processing and rendering PDF documents. Contains document viewer/editor application, application for splitting/merging PDF documents and page manipulation, application for comparison of similar PDF documents.

Jakub Melka 32 Nov 16, 2022
libharu - free PDF library

# # URL http://libharu.org/ # # Copyright 2000-2006 (c) Takeshi Kanno # Copyright 2007-2009 (c) Antony Dovgal et al. # See INSTALL for instruction

libharu 1.4k Nov 16, 2022
Convert HTML to PDF using Webkit (QtWebKit)

wkhtmltopdf and wkhtmltoimage wkhtmltopdf and wkhtmltoimage are command line tools to render HTML into PDF and various image formats using the QT Webk

wkhtmltopdf 12.8k Nov 17, 2022
Unix pager (with very rich functionality) designed for work with tables. Designed for PostgreSQL, but MySQL is supported too. Works well with pgcli too. Can be used as CSV or TSV viewer too. It supports searching, selecting rows, columns, or block and export selected area to clipboard.

Unix pager (with very rich functionality) designed for work with tables. Designed for PostgreSQL, but MySQL is supported too. Works well with pgcli too. Can be used as CSV or TSV viewer too. It supports searching, selecting rows, columns, or block and export selected area to clipboard.

Pavel Stehule 1.9k Nov 22, 2022
PDFio is a simple C library for reading and writing PDF files

pdfio - PDF Read/Write Library PDFio is a simple C library for reading and writing PDF files. The primary goals of PDFio are: Read and write any versi

Michael R Sweet 59 Nov 24, 2022
HDRView is a simple research-oriented image viewer with an emphasis on examining and comparing high-dynamic range (HDR) images

HDRView is a simple research-oriented high-dynamic range image viewer with an emphasis on examining and comparing images, and including minimalistic tonemapping capabilities. HDRView currently supports reading EXR, PNG, TGA, BMP, HDR, JPG, GIF, PNM, PFM, and PSD images and writing EXR, HDR, PNG, TGA, PPM, PFM, and BMP images.

Wojciech Jarosz 122 Nov 23, 2022
FCracker is a command line tool designed to brute force encrypted files like zip, 7z, rar, pdf etc.

FCrack is a command-line tool designed to brute force encrypted files like zip, 7z, rar, pdf, gpg etc.

null 21 Oct 3, 2022
A comprehensive catalog of modern and classic books on C++ programming language

A comprehensive catalog of modern and classic books on C++ programming language

Yurii Cherkasov 373 Nov 15, 2022
Read Books On Your Nintendo Switch

eBookReaderSwitch Features: Saves last page number Reads PDF, EPUB, CBZ, and XPS files Dark and light mode Landscape reading view Portrait reading vie

null 50 Nov 12, 2022
collection of articles/books about programing

hacking-material-books My collection of articles/books about programing Metasploit RB/ERB scripting Metasploit API cheat sheet Nmap NSE scripting Com

pedro ubuntu 486 Nov 7, 2022
Concurrency Kit 2.1k Nov 19, 2022
RISCAL is a 32-bit reduced instruction-set computer (RISC) designed for learning and research purposes. It is named after my dog, Rascal.

RISCAL CPU RISCAL is a 32-bit custom instruction set architecture virtual machine. It is intended to be used for learning/research purposes. In a nuts

null 3 Dec 23, 2021
Convenient unified display of the most relevant technical and tag data for video and audio files.

MediaInfoLib README MediaInfo(Lib) is a convenient unified display of the most relevant technical and tag data for video and audio files. MediaInfoLib

MediaArea 489 Nov 24, 2022
XMap is a fast network scanner designed for performing Internet-wide IPv6 & IPv4 network research scanning.

XMap is reimplemented and improved thoroughly from ZMap and is fully compatible with ZMap, armed with the "5 minutes" probing speed and novel scanning techniques. XMap is capable of scanning the 32-bits address space in under 45 minutes.

idealeer 188 Nov 17, 2022
The aim of this repository is to make it a one final stop for revision for technical interviews involving data structures and algorithms .

Hey ??‍♂️ This repository is meant for data structures and algorithms . I will be updating this often and will include all the data structures importa

Prakhar Rai 51 Sep 29, 2022
Code accompanying our SIGGRAPH 2021 Technical Communications paper "Transition Motion Tensor: A Data-Driven Approach for Versatile and Controllable Agents in Physically Simulated Environments"

SIGGRAPH ASIA 2021 Technical Communications Transition Motion Tensor: A Data-Driven Framework for Versatile and Controllable Agents in Physically Simu

null 10 Apr 21, 2022
This is a group project for the unit Technical Software Design.

electoral-project This is a group project for the unit Technical Software Design. Group number: 9 Members of this group: Grace Tang, Lorien Cutler, Jo

Grace Tang 3 May 24, 2021
IO2D Technical Specification Draft Sources

IO2D Technical Specification Draft Sources These are the sources used to generate drafts of the working paper for a proposal for an IO2D TS. These sou

cpp-io2d 20 Nov 20, 2021
TulipCell is an Excel add-in providing 100+ technical analysis indicators.

Tulip Cell Introduction Tulip Cell is an Excel add-in that provides the technical analysis functions from the Tulip Indicators library. Building Build

Tulip Charts LLC 28 Nov 8, 2022