Приховувати панель інструментів неможливо ні в evince ні в Ubuntu 14.04 чи 16.04, ні у висхідній / ванільній evince (немодифікований Ubuntu), хоча якщо ви відчайдушні, ви можете виправити джерело та перекомпілювати.
У ванільному доступі в повноекранному режимі панель інструментів автоматично переховується, що дещо корисно, якщо не цілком достатньо (напівінтеллектуальна поведінка ніколи не робить саме те, що ви хочете, плюс було б дуже зручно мати можливість приховати панель інструментів не в повноекранний режим - можливо, саме тоді економія місця на екрані є особливо важливою).
На жаль, для перевірки як упакованого в 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
.
Нанесіть наступний виправлення (адаптований із наданого Рейніса Данна, зв'язаного вище та наданого тут для повноти):
--- 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 на основі usr.bin.evince
та підписки на повідомлення Ubuntu безпеки , оскільки ви не отримаєте виправлень безпеки до своєї версії evince. Можна також скористатися чимось подібним apt-src
.