Discussion:
[zathura] [PATCH] new window-title-page option
Guillaume Duranceau
2013-07-22 13:01:05 UTC
Permalink
When set to 'true', this option displays the page number in the title of
a zathura window.
---
Sorry for the inconvenience, but I'm re-submitting this patch with a
commit message this time. Please disregard my previous mails.

config.c | 2 ++
document.c | 13 +++++++++++++
document.h | 8 ++++++++
zathura.c | 24 ++++++++++++++++++------
zathurarc.5.rst | 16 ++++++++++++++++
5 files changed, 57 insertions(+), 6 deletions(-)

diff --git a/config.c b/config.c
index 4adab3a..88f007d 100644
--- a/config.c
+++ b/config.c
@@ -217,6 +217,8 @@ config_load_default(zathura_t* zathura)
bool_value = false;
girara_setting_add(gsession, "window-title-basename", &bool_value, BOOLEAN, false, _("Use basename of the file in the window title"), NULL, NULL);
bool_value = false;
+ girara_setting_add(gsession, "window-title-page", &bool_value, BOOLEAN, false, _("Display the page number in the window title"), NULL, NULL);
+ bool_value = false;
girara_setting_add(gsession, "statusbar-basename", &bool_value, BOOLEAN, false, _("Use basename of the file in the statusbar"), NULL, NULL);
bool_value = false;
girara_setting_add(gsession, "synctex", &bool_value, BOOLEAN, false, _("Enable synctex support"), NULL, NULL);
diff --git a/document.c b/document.c
index c90c2a5..c529a8d 100644
--- a/document.c
+++ b/document.c
@@ -40,6 +40,7 @@ static const gchar* guess_type(const char* path);
*/
struct zathura_document_s {
char* file_path; /**< File path of the document */
+ char* basename; /**< Basename of the document */
const char* password; /**< Password of the document */
unsigned int current_page_number; /**< Current page number */
unsigned int number_of_pages; /**< Number of pages */
@@ -117,6 +118,7 @@ zathura_document_open(zathura_plugin_manager_t* plugin_manager, const char*
document = g_malloc0(sizeof(zathura_document_t));

document->file_path = real_path;
+ document->basename = g_path_get_basename(real_path);
document->password = password;
document->scale = 1.0;
document->plugin = plugin;
@@ -199,6 +201,7 @@ zathura_document_free(zathura_document_t* document)
if (document->file_path != NULL) {
free(document->file_path);
}
+ g_free(document->basename);

g_free(document);

@@ -216,6 +219,16 @@ zathura_document_get_path(zathura_document_t* document)
}

const char*
+zathura_document_get_basename(zathura_document_t* document)
+{
+ if (document == NULL) {
+ return NULL;
+ }
+
+ return document->basename;
+}
+
+const char*
zathura_document_get_password(zathura_document_t* document)
{
if (document == NULL) {
diff --git a/document.h b/document.h
index 5f18047..2ce1c68 100644
--- a/document.h
+++ b/document.h
@@ -39,6 +39,14 @@ zathura_error_t zathura_document_free(zathura_document_t* document);
const char* zathura_document_get_path(zathura_document_t* document);

/**
+ * Returns the basename of the document
+ *
+ * @param document The document
+ * @return The basename of the document
+ */
+const char* zathura_document_get_basename(zathura_document_t* document);
+
+/**
* Returns the password of the document
*
* @param document The document
diff --git a/zathura.c b/zathura.c
index 70fa5cc..5df34d4 100644
--- a/zathura.c
+++ b/zathura.c
@@ -665,9 +665,7 @@ document_open(zathura_t* zathura, const char* path, const char* password,
if (basename_only == false) {
girara_statusbar_item_set_text(zathura->ui.session, zathura->ui.statusbar.file, file_path);
} else {
- char* tmp = g_path_get_basename(file_path);
- girara_statusbar_item_set_text(zathura->ui.session, zathura->ui.statusbar.file, tmp);
- g_free(tmp);
+ girara_statusbar_item_set_text(zathura->ui.session, zathura->ui.statusbar.file, zathura_document_get_basename(document));
}

/* install file monitor */
@@ -787,9 +785,7 @@ document_open(zathura_t* zathura, const char* path, const char* password,
if (basename_only == false) {
girara_set_window_title(zathura->ui.session, file_path);
} else {
- char* tmp = g_path_get_basename(file_path);
- girara_set_window_title(zathura->ui.session, tmp);
- g_free(tmp);
+ girara_set_window_title(zathura->ui.session, zathura_document_get_basename(document));
}

g_free(file_uri);
@@ -1061,6 +1057,22 @@ statusbar_page_number_update(zathura_t* zathura)
if (zathura->document != NULL) {
char* page_number_text = g_strdup_printf("[%d/%d]", current_page_number + 1, number_of_pages);
girara_statusbar_item_set_text(zathura->ui.session, zathura->ui.statusbar.page_number, page_number_text);
+
+ bool page_number_in_window_title = false;
+ girara_setting_get(zathura->ui.session, "window-title-page", &page_number_in_window_title);
+
+ if (page_number_in_window_title == true) {
+ bool basename_only = false;
+ girara_setting_get(zathura->ui.session, "window-title-basename", &basename_only);
+ char* title = g_strdup_printf("%s %s",
+ (basename_only == true)
+ ? zathura_document_get_basename(zathura->document)
+ : zathura_document_get_path(zathura->document),
+ page_number_text);
+ girara_set_window_title(zathura->ui.session, title);
+ g_free(title);
+ }
+
g_free(page_number_text);
} else {
girara_statusbar_item_set_text(zathura->ui.session, zathura->ui.statusbar.page_number, "");
diff --git a/zathurarc.5.rst b/zathurarc.5.rst
index 9e1f571..17bad11 100644
--- a/zathurarc.5.rst
+++ b/zathurarc.5.rst
@@ -370,6 +370,15 @@ Defines the font that will be used
* Value type: String
* Default value: monospace normal 9

+guioptions
+^^^^^^^^^^
+Shows or hides GUI elements.
+When it contains 'c', the command line is showed.
+When it contains 's', the statusbar is showed.
+
+* Value type: String
+* Default value: s
+
inputbar-bg
^^^^^^^^^^^
Defines the background color for the inputbar
@@ -698,6 +707,13 @@ Use basename of the file in the window title.
* Value type: Boolean
* Default value: false

+window-title-page
+^^^^^^^^^^^^^^^^^
+Display the page number in the window title.
+
+* Value type: Boolean
+* Default value: false
+
statusbar-basename
^^^^^^^^^^^^^^^^^^
Use basename of the file in the statusbar.
--
1.8.3.3
Loading...