Sioyek uses four config files:

  • keys.config which stores the default keybindings

  • keys_user.config which stores the modified keybindings

  • prefs.config which stores the default preferences

  • prefs_user.config which stores the modified preferences

The location of these files are OS-dependent. You can open these files by executing keys, keys_user, prefs and prefs_user commands using the sioyek command line (see Command Menu).

Syntax of keys.config files

  • Lines starting with # are comments and are ignored

command        k             (command is executed when k is pressed)
command        <C-k>         (command is executed when k is pressed while holding control)
command        K             (command is executed when K is entered, which is shift+k)
command        <A-k>         (command is executed when k is pressed while holding alt)
command        +             (command is executed when = is pressed while holding shift)
command        <C-S-k>       (command is executed when k is pressed while holding control and shift)
command        gg            (command is executed when g is pressed twice)
command        gt            (command is executed when g is pressed and then t is pressed)
command        g<C-n>Dt      (command is executed when g is pressed and then n is pressed while holding\
                              control and then d is pressed while holding shift and then t is pressed)

                              you can execute multiple commands using the following syntax:
command1;command2;command3        <keybinding>

Prefrences in prefs.config file


Specifies the background color of the app (this is different from the background color of PDF page which is configured using custom_background_color and custom_text_color, this color is only shown when the displayed page is smaller than the srceen). The syntax to set colors is:

background_color  r  g  b

where r,g and b red, green and blue values between 0 and 1. For example in order to set the background color to gray we can add the following to our prefs_user.config:

background_color  0.5  0.5  0.5


Specifies the background color when dark mode is enabled.


White text in dark mode can be annoying for the eyes. This option allows us to dim the white colors when dark mode is enabled. Allowed values are between 0.0 and 1.0.


Highlight color when text is selected using mouse.


This is the color of the transparent visual mark explained in Visual Mark (this feature originally had an entirely different functionality which is why it is called vertical line even though there is nothing vertical about it!). Allowed values are RGBA colors between 0.0 and 1.0. For example, to set the color to a transparent red we add the following to our prefs_user.config:

visual_mark_color  1.0  0.0  0.0  0.1


If it is 1, we highlight a rectangle around the current line in visual mark mode. Otherwise, we highlight below the current line.

ruler_mode  1

ruler_padding and ruler_x_padding

Additional padding for ruler. Makes the ruler a little larger and more readable.

ruler_padding 1.0
ruler_x_padding 5.0


When we go to the next page while in visual mark mode, this setting determines which location of screen the new line should be located at. The values are between -1 and 1. With 0 being the middle of the screen and 1 and -1 being the top and bottom of the screen respectively.

visual_mark_next_page_fraction  0.5


Determines at which point in screen we move to the next page. Acceptable range is between 0 and visual_mark_next_page_fraction.


The color used to highlight search results.


Highlight color for synctex forward search highlights.

search_url_a to search_url_z

The web addresses used for performing external_search command. (see External Search). Example:


middle_click_search_engine and shift_middle_click_search_engine

The letter corresponding to search_url_* configs to use when middle clicking/shift-middle clicking on text. Example:

middle_click_search_engine           g

This causes the search engine configures using search_url_g to be used when middle clicking on text.


The fraction by which we enlarge the page when zooming in/out.


If set, when using mouse wheel to zoom we zoom in on mouse cursor instead of middle of screen.

vertical_move_amount and horizontal_move_amount

How many inches we move vertically/horizontally when performing move_* commands.


The fraction of screen by which we move when executing screen_down and screen_up commands. (note that despite the name, the values are fractions between 0 and 1, not percentages)


Displays a simplified flat table of contents instead of a hierarchial one. This can improve performance for documents with very large number of table of contents entries (thousands). Acceptable values are 0 and 1.


If set, we initially collapse all table of content entries.


If it is 1, when launching the application if we detect multiple monitors, we automatically launch the helper window in second monitor. Acceptable values are 0 and 1.


If the last opened document is empty, load the tutorial pdf instead.



This is deprecated. Use should_launch_new_window instead.

If it is 0, then we use the previous instance of sioyek when launching a new file, otherwise a new instance is launched every time we open a new file.


If it is 0, then we use the previous window of sioyek when opening a new file, otherwise a new window is opened every time we open a new file.


The command to use when trying to do inverse search into a LaTeX document. %1 expands to the name of the file and %2 expans to the line number. For example:

inverse_search_command               "C:\path\to\vscode\Code.exe" -r -g %1:%2

highlight_color_a to highlight_color_z

The color to use for highlights of type a to z.


If set, we display a checkerboard pattern for unrendered pages (by default we display nothing).


Normally we reuse the rendered page for overview window. This may cause the overview page to be blurry or too sharp if there is a significant difference between the zoom levels of the main window and overview window. If rerender_overview is set, we rerender overview which solves this issue at the cost of some additional computation.

rerender_overview            1


Use dark mode by default.


If set, we sort the bookmarks by their location instead of their creation time.


The path of shared.db database file. You can set this path to be in a synchronized folder (for example a dropbox folder) and sioyek data will be automatically synchronized across your devices.


Size of the UI font.


The font to use for UI text.

ui_font              Segoe UI Emoji


A prefix character to use before list of items (for example can be used to display a checkmark before each of the bookmarks).

item_list_prefix     ✔️


If set, sioyek checkes for new versions on startup and notifies the user if a new version if available.

check_for_updates_on_startup 1

custom_background_color and custom_text_color

Specify the background and text color when using custom color mode (by executing toggle_custom_color command).

custom_background_color              0.18 0.20 0.25
custom_text_color                    1.0 1.0 1.0


Semicolon-separated list of commands to execute on startup. For example, to start in custom color mode and in visual scroll mode, you can add the following (the command names are the same as the ones displayed when opening the command window using :):

startup_commands             toggle_custom_color;toggle_visual_scroll

status_bar_color, status_bar_text_color and status_bar_font_size

Allow you to customize the appearance of status bar.

status_bar_color        0 0 0
status_bar_text_color   1 1 1
status_bar_font_size    10

execute_command_a to execute_command_z

Predefined shell commands to be executed using execute_predefined_command. %1 expands to the path of the current file, %2 expands to name of the current file and %3 expands to current selected text. For example, suppose you have a command named ocr which takes a file path and produces an OCR’d version of the document. You can add the following to you prefs_user.config:

execute_command_o    ocr "%1"

You can later quickly invoke this command by executing execute_predefined_command and then pressing o.


The command parsing code in sioyek is not very good. For example it can not handle multiple commands like command1 args;command2 or commands that include spaces. If you want to run a complex command, first put all commands in a script file and then run the script file using using sioyek like this: /path/to/ %1 %2 %3.


Path to a directory on your computer. Sioyek monitors the changes in this directory and if a new file is added to this directory while we have a pending portal, this file is automatically used as the destination of the portal. This is useful when creating a portal from a reference in a paper to the actual reference file.


Manual resolution scaling. Can be useful for some very high resolution displays which report the wrong resolution.


If set, we use linear texture filtering instead of the normal nearest neighbour filtering. This is useful when using manual display resolution scale which causes the nearest neighbour filter to look bad.

main_window_size, main_window_move, helper_window_size, helper_window_move, single_main_window_size and single_main_window_move

Configures the size and position of the main window and the helper window. single_main_window_* is used when helper window is closed and the other configs are used when both windows are opened. These values are automatically written to auto.cong file when sioyek exits but you can manually override them by setting them in your prefs_user.config.

single_main_window_size    1824 988
single_main_window_move     22 21
main_window_size    1824 988
main_window_move     18 44
helper_window_size    1891 1033
helper_window_move     1951 0


Can be used to adjust the sensitivity of the touchpad.

touchpad_sensitivity    0.1

page_separator_width and page_separator_color

Used to adjust the appearance of page separator.

page_separator_width 2
page_separator_color 0.5 0.5 0.5


Ratio of screen width to use when using fit_to_screen_width_ratio command. Can be useful for very wide screens.

fit_to_page_width_ratio 0.75


If set and the file doesn’t have a table of contents, we use heuristic methods to create a table of contents. You can use max_created_toc_size to prevent creating very large table of contents.

create_table_of_contents_if_not_exists 1
max_created_toc_size 5000


Use legacy line detection algorithm instead of the mupdf one.

overview_size and overview_offset

Adjust the size of overview window. The values are in normalized window coordinates between -1 and 1.

overview_size 0.852604 0.597729
overview_offset -0.0119792 0.120151


Show the full document path instead of just the file name in list of recently opened documents.


If set, we warn the user in command line when overriding already degined keybinds.


If set, single clicking and dragging mouse selects entire words rather than characters.

shift_click_command, control_click_command, alt_click_command, shift_right_click_command, control_right_click_command, and alt_right_click_command

Custom commands to run when mouse click is pressed while modifier keys are held down. For example:

control_click_command overview_under_cursor

If set, single clicking and dragging mouse selects entire words rather than characters.


By default we use legacy keybindings which have some problems. For example to bind the % key, you would have to enter something like this:

command <S-%>

which is a little weird. Also legacy keybinds don’t work well with some keyboard layouts. If you set use_legacy_keybinds to 0, then we use a new method for keybind parsing which allows you to do something like this:

command %

which also works with all keyboard layouts. Since this is a backwards incompatible change, use_legacy_keybinds is activated by default.


If set, we show long menu items in multiple lines rather than truncating them.


Open helper window when sioyek starts.


When in presentation mode, we pre-render the next page to remove flickering when moving between pages.


If enabled, highlights the selected text by middle clicking on it.

smooth_scroll_speed and smooth_scroll_drag

When smooth scrolling is enabled (using toggle_smooth_scroll command), these control the speed and slowdown of movement.

smooth_scroll_speed 3
smooth_scroll_drag 3000


If enabled, displays the text for closest bookmark in the statusbar.


If enabled, it displays a statusbar message when we are close to a portal.


The number of pages to prerender. The larger it is, the more memory we use but there will be less flickering when quickly moving pages.


Displays the document name in sioyek’s statusbar.

ui_background_color and ui_text_color

The background and text color of (unselected) UI elements.

ui_selected_background_color and ui_selected_text_color

The background and text color of selected UI elements.


If enabled we use numeric (instead of alphabetical) tags when executing keyboard_* commands.


Includes another config file, which is useful for themes and extensions.

# includes file.config in this configuration file
source /path/to/file.config