diff --git a/commands.c b/commands.c index 055989a..a8882c0 100644 --- a/commands.c +++ b/commands.c @@ -239,7 +239,7 @@ cmd_open(girara_session_t* session, girara_list_t* argument_list) } document_open(zathura, girara_list_nth(argument_list, 0), - (argc == 2) ? girara_list_nth(argument_list, 1) : NULL, + (argc == 2) ? girara_list_nth(argument_list, 1) : NULL, ZATHURA_PAGE_NUMBER_UNSPECIFIED); } else { girara_notify(session, GIRARA_ERROR, _("No arguments given.")); diff --git a/main.c b/main.c index 104d6b0..fa2b484 100644 --- a/main.c +++ b/main.c @@ -45,6 +45,7 @@ main(int argc, char* argv[]) gchar* password = NULL; gchar* synctex_editor = NULL; gchar* synctex_fwd = NULL; + gchar* mode = NULL; bool forkback = false; bool print_version = false; bool synctex = false; @@ -66,6 +67,7 @@ main(int argc, char* argv[]) { "synctex-editor-command", 'x', 0, G_OPTION_ARG_STRING, &synctex_editor, _("Synctex editor (forwarded to the synctex command)"), "cmd" }, { "synctex-forward", '\0', 0, G_OPTION_ARG_STRING, &synctex_fwd, _("Move to given synctex position"), "position" }, { "synctex-pid", '\0', 0, G_OPTION_ARG_INT, &synctex_pid, _("Highlight given position in the given process"), "pid" }, + { "mode", '\0', 0, G_OPTION_ARG_STRING, &mode, _("Start in a non-default mode"), "mode" }, { NULL, '\0', 0, 0, NULL, NULL, NULL } }; @@ -91,6 +93,7 @@ main(int argc, char* argv[]) girara_set_debug_level(GIRARA_ERROR); } + /* handle synctex forward synchronization */ if (synctex_fwd != NULL) { if (argc != 2) { girara_error("Too many arguments or missing filename while running with --synctex-forward"); @@ -113,6 +116,11 @@ main(int argc, char* argv[]) } } + /* check mode */ + if (mode != NULL && g_strcmp0(mode, "presentation") != 0 && g_strcmp0(mode, "fullscreen") != 0) { + girara_error("Invalid argument for --mode: %s", mode); + return -1; + } /* Fork into the background if the user really wants to ... */ if (forkback == true) { @@ -164,7 +172,7 @@ main(int argc, char* argv[]) if (argc > 1) { if (page_number > 0) --page_number; - document_open_idle(zathura, argv[1], password, page_number); + document_open_idle(zathura, argv[1], password, page_number, mode); /* open additional files */ for (int i = 2; i < argc; i++) { diff --git a/zathura.1.rst b/zathura.1.rst index 3222359..18f704a 100644 --- a/zathura.1.rst +++ b/zathura.1.rst @@ -67,6 +67,9 @@ OPTIONS If not -1, forward synctex input to process with the given pid. Otherwise, try all zathura process to find the correct one. +--mode [mode] + Switch to mode (presentation, fullscreen) after opening a document. + MOUSE AND KEY BINDINGS ====================== diff --git a/zathura.c b/zathura.c index 2373d6c..842cde2 100644 --- a/zathura.c +++ b/zathura.c @@ -41,6 +41,7 @@ typedef struct zathura_document_info_s { const char* path; const char* password; int page_number; + const char* mode; } zathura_document_info_t; @@ -481,6 +482,18 @@ document_info_open(gpointer data) document_open(document_info->zathura, file, document_info->password, document_info->page_number); g_free(file); + + if (document_info->mode != NULL) { + if (g_strcmp0(document_info->mode, "presentation") == 0) { + sc_toggle_presentation(document_info->zathura->ui.session, NULL, NULL, + 0); + } else if (g_strcmp0(document_info->mode, "fullscreen") == 0) { + sc_toggle_fullscreen(document_info->zathura->ui.session, NULL, NULL, + 0); + } else { + girara_error("Unknown mode: %s", document_info->mode); + } + } } } @@ -819,7 +832,7 @@ error_out: void document_open_idle(zathura_t* zathura, const char* path, const char* password, - int page_number) + int page_number, const char* mode) { if (zathura == NULL || path == NULL) { return; @@ -834,6 +847,7 @@ document_open_idle(zathura_t* zathura, const char* path, const char* password, document_info->path = path; document_info->password = password; document_info->page_number = page_number; + document_info->mode = mode; gdk_threads_add_idle(document_info_open, document_info); } diff --git a/zathura.h b/zathura.h index 00f7852..bc77e83 100644 --- a/zathura.h +++ b/zathura.h @@ -304,7 +304,8 @@ bool document_open(zathura_t* zathura, const char* path, const char* password, * @param password The password of the file */ void document_open_idle(zathura_t* zathura, const char* path, - const char* password, int page_number); + const char* password, int page_number, + const char* mode); /** * Save a open file