This is great! I love the keyboard-based navigation, and the portals are particularly wonderful, almost making me want to turn my documentation monitor back from vertical to horizontal aspect ratio.
A few questions/feature requests/comments: Is there a way to link to a page/mark/bookmark/figure from outside the document? Can we export the marks/bookmarks/document state to a plaintext-compatible file? And please add a dark mode, full-screen white is just painful after a while. Also, I'm not sure I understand the distinction between marks and bookmarks; are marks single-character only? And can you not jump straight to a bookmark, only bringing up and searching the bookmarks context menu?
I'm an electrical engineer, constantly referencing PDF-based datasheets, application notes, whitepapers, and reference manuals like [this one] or [this other one]. They're similar to the more academic papers that this seems to be targeted towards, and suffer from many of the same problems. The current practice in the industry to make effective use of these PDFs is approximately summed up as "just be really smart and keep track of it all in your head." If you're unusually kind to your coworkers, your co-contributors, and (especially) your future self who haven't recently spent the same hours exhaustively reading these documents you'll mention in a comment in your SPI initialization code to "Set bit 13, CRCEN, before turning on bit 6, SPE, see ref manual page 808" or in your schematic that your PCB needs to "Route for additional 4.7 uF point of load capacitance within 25mm/nH/mOhm, see datasheet page 69".
I see that it can be run from the command line with the file name as an argument, but it doesn't respond to anything beyond argv[1], and the whole point is to be to deep-link inside the file. Ideally, I'd love to see a protocol handler like mailto: or winmerge: so that one could embed links inside PDFs. With that, a user looking at a readme document or code comment could jump to "sioyek://../docs/rm0377*.pdf?808gg" or ".pdf?gb=SPI_CR1".
I also see that it seems to store marks and other persistent data in the "test.db" SQLite file, I'd much rather see this as a JSON/XML/plaintext file (or at least exportable as such) so that I can add it to a project version control repository, allowing me to share my state with others and get it back later.
Regarding dark mode, I understand that some figures, background images, watermarks etc. will make this more difficult. But the most common case of black text on a white background is solved for me in the Firefox PDF viewer with a bookmarklet containing `javascript:(function(){viewer.style = 'filter: grayscale(1) invert(1) sepia(1) contrast(75%)';})()`. Foxit likewise has a night mode.
[this one]: https://www.st.com/resource/en/reference_manual/rm0377-ultra...
[this other one]: https://datasheets.maximintegrated.com/en/ds/MAX77650-MAX776...