Скрывать панель инструментов невозможно в evince ни в Ubuntu 14.04 или 16.04, ни в upstream / vanilla evince (без изменений в Ubuntu), хотя, если вы в отчаянии, вы можете исправить исходный код и перекомпилировать.
В режиме полного просмотра в полноэкранном режиме панель инструментов автоматически скрывается, что несколько полезно, если не совсем достаточно (полуинтеллектуальное поведение никогда не делает именно то, что вам нужно, плюс было бы очень удобно иметь возможность скрывать панель инструментов не в а также полноэкранный режим - возможно, это особенно важно для экономии места на экране).
К сожалению, для evince, упакованного в Ubuntu (14.04 и 16.04), даже это невозможно. Кажется, что (в противном случае очень полезные) специфичные для Ubuntu патчи, возвращающие нормальную строку меню и нормальное расположение панели инструментов, нарушают поведение автоматического скрытия, усугубляя проблему.
Отчеты об ошибках
Соответствующие ошибки (специфичные для Ubuntu и апстрима) находятся здесь:
https://bugs.launchpad.net/ubuntu/+source/evince/+bug/1522527
https://bugs.launchpad.net/ubuntu/+source/evince/+bug/1409291
https://bugzilla.gnome.org/show_bug.cgi?id=714996
Патчи
Рабочие исправления были предоставлены (Рейнис Данн) в отчете об ошибках GNOME, но они не были приняты. Прямые ссылки на 3.12 , современную мастер ветку и 3.14 .
К счастью, эти патчи все еще могут быть применены вручную (копирование-вставка кода), чтобы показать 3.18, как это было в Ubuntu 16.04. Применение их напрямую с помощью, patch
кажется, не работает, вероятно, из-за небольших изменений в окружающем коде.
Чтобы получить источник:
apt-get source evince
cd evince-3.18.2/
Если это не работает, раскомментируйте deb-src
строки в /etc/apt/sources.list
.
Примените следующий патч (адаптированный из предоставленных Reinis Danne, приведенных выше и предоставленных здесь для полноты):
--- a/shell/ev-application.c 2018-01-02 23:00:00.502095551 +0100
+++ b/shell/ev-application.c 2018-01-03 23:15:00.713553169 +0100
@@ -1059,9 +1059,24 @@
}
static void
+app_toggle_toolbar_cb (GSimpleAction *action,
+ GVariant *parameter,
+ gpointer user_data)
+{
+ EvApplication *application = user_data;
+ EvWindow *window = EV_WINDOW (gtk_application_get_active_window (GTK_APPLICATION (application)));
+ GActionMap *action_map = G_ACTION_MAP (window);
+ GAction *gaction = g_action_map_lookup_action (action_map, "toggle-toolbar");
+
+ g_action_activate (gaction, NULL);
+}
+
+
+static void
ev_application_startup (GApplication *gapplication)
{
const GActionEntry app_menu_actions[] = {
+ { "toggle-toolbar", app_toggle_toolbar_cb, NULL, NULL, NULL },
{ "new", app_new_cb, NULL, NULL, NULL },
{ "help", app_help_cb, NULL, NULL, NULL },
{ "about", app_about_cb, NULL, NULL, NULL }
@@ -1095,6 +1110,7 @@
"win.caret-navigation", "F7", NULL,
"win.zoom-in", "plus", "<Ctrl>plus", "KP_Add", "<Ctrl>KP_Add", "equal", "<Ctrl>equal", NULL,
"win.zoom-out", "minus", "<Ctrl>minus", "KP_Subtract", "<Ctrl>KP_Subtract", NULL,
+ "win.toggle-toolbar", "<Ctrl>H", NULL,
"win.show-side-pane", "F9", NULL,
"win.fullscreen", "F11", NULL,
"win.presentation", "F5", NULL,
--- a/shell/ev-window.c 2018-01-02 23:00:00.502095551 +0100
+++ b/shell/ev-window.c 2018-01-02 23:14:36.995706943 +0100
@@ -4907,6 +4907,27 @@
}
static void
+ev_window_view_cmd_toggle_toolbar (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ EvWindow *ev_window = user_data;
+ EvWindowPrivate *priv = ev_window->priv;
+
+ gboolean toolbar;
+ gboolean presentation;
+
+ presentation = EV_WINDOW_IS_PRESENTATION (ev_window);
+
+ toolbar = ((priv->chrome & EV_CHROME_TOOLBAR) != 0 ||
+ (priv->chrome & EV_CHROME_RAISE_TOOLBAR) != 0) && !presentation;
+
+ update_chrome_flag (ev_window, EV_CHROME_TOOLBAR, !toolbar);
+
+ set_widget_visibility (priv->toolbar, !toolbar);
+}
+
+static void
ev_window_view_cmd_toggle_sidebar (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -5697,6 +5718,7 @@
{ "continuous", NULL, NULL, "true", ev_window_cmd_continuous },
{ "dual-page", NULL, NULL, "false", ev_window_cmd_dual },
{ "dual-odd-left", NULL, NULL, "false", ev_window_cmd_dual_odd_pages_left },
+ { "toggle-toolbar", NULL, NULL, "true", ev_window_view_cmd_toggle_toolbar },
{ "show-side-pane", NULL, NULL, "false", ev_window_view_cmd_toggle_sidebar },
{ "inverted-colors", NULL, NULL, "false", ev_window_cmd_view_inverted_colors },
{ "fullscreen", NULL, NULL, "false", ev_window_cmd_view_fullscreen },
--- a/shell/evince-menus.ui 2018-01-02 23:00:00.502095551 +0100
+++ b/shell/evince-menus.ui 2018-01-03 23:16:02.969635772 +0100
@@ -21,6 +21,12 @@
<menu id="appmenu">
<section>
<item>
+ <attribute name="label" translatable="yes">_Toggle toolbar</attribute>
+ <attribute name="action">app.toggle-toolbar</attribute>
+ <attribute name="accel"><Primary>H</attribute>
+ </item>
+ </section> <section>
+ <item>
<attribute name="label" translatable="yes">_New Window</attribute>
<attribute name="action">app.new</attribute>
</item>
@@ -41,6 +47,10 @@
<menu id="view-menu">
<section>
<item>
+ <attribute name="label" translatable="yes">_Toolbar</attribute>
+ <attribute name="action">win.toggle-toolbar</attribute>
+ </item>
+ <item>
<attribute name="label" translatable="yes">_Continuous</attribute>
<attribute name="action">win.continuous</attribute>
</item>
с patch -p1 < name_of_patch_file.patch
помощью или с помощью quilt
(и в идеале читайте патч до / после его применения - это на самом деле вполне понятно, особенно в контексте).
Наконец, скомпилируйте evince со стандартом ./configure; make; sudo make install
для установки пропатченного evince /usr/local/
. Для установки в другом месте, например, чтобы избежать необходимости использовать sudo
, используйте ./configure --prefix=/full/path/to/alternative/location/
.
У пропатченного evince будет возможность скрыть панель инструментов Ctrl+h
. Панель меню не будет скрыта, что может или не может быть то, что вы хотите.
Скрытие строки меню
В дополнение к вышеприведенному патчу вам необходимо добавить:
gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (ev_window), !toolbar);
до конца определения ev_window_view_cmd_toggle_toolbar
в shell/ev-window.c
и изменить:
gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (window), !presentation);
чтобы:
gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (window), !presentation && toolbar);
в определении update_chrome_visibility
, также в shell/ev-window.c
.
Безопасность
Я также рекомендую добавить /etc/apparmor.d/usr.local.bin.evince
профиль apparmor на основе уведомлений о безопасности Ubuntuusr.bin.evince
и подписаться на них , поскольку вы не будете получать исправления безопасности для своей версии evince. В качестве альтернативы, вы можете рассмотреть возможность использования чего-то вроде .apt-src