错误报告

错误报告

首先我要说一下,我是 Linux 新手,但我愿意尝试你们这些巫师能想到的任何东西(最好是键盘快捷键)!

当我在全屏模式下使用 Evince 3.10.3 时,我看到了这个好看但有点烦人的工具栏,它占用了我屏幕顶部的部分空间......:

那个漂亮的工具栏妨碍了我……

在 Evince 文档中,我看到工具栏上的部分提到显示、隐藏或编辑工具栏;当我转到该页面时,我看到的只是工具栏相应功能的布局,但没有提供有关如何隐藏工具栏的信息:

好的,看起来不错! 等一下,技巧和窍门在哪里?!

如何在 Evince 3.10.3 版本或包含类似工具栏设置的版本中隐藏工具栏?

PS 有时工具栏会神奇地消失。我只想找到一种方法来按需调用此行为。谢谢!

答案1

简短的回答是:你不能。

Evince 3.4.0(12.04 版)有从菜单中隐藏工具栏的选项视图 > 工具栏然后选择全屏从菜单或通过F11键将在全屏模式下隐藏工具栏。

显然,此功能已从新版本的 Evince 中删除,据报道启动板上有错误以及邮件列表也一样。

也许新版本会修复这个问题,但是谁知道呢。

立即的解决方法可以是:

  • 按照@zarnaik 的建议使用窗口管理器
  • 使用其他 PDF 查看器,例如多媒体PDF, ETC。

我已经在 Xubuntu 14.04 上使用过 MuPDF,它似乎实现了您想要的功能:没有工具栏,并且能够缩放到任意宽度,同时以全屏方式查看。

答案2

我遇到了和你一模一样的问题。我有无法成功隐藏工具栏,不过我已经想出了一个办法模仿行为

我只是将 evince 窗口最大化。然后使用键盘快捷键Alt+Space打开窗口上下文菜单。

调整大小

随后z在菜单中选择“调整大小”(英文,可能因使用的语言而异)。进入调整大小模式后,您应该能够使用箭头键Up放大窗口。您只需将其拉长,直到菜单和工具栏都“超出”屏幕即可。

或者,您只需将窗口稍微向下拖动并根据需要将其拉长,然后将其拖回。

evince 可能会出现在您正在运行的任何 dock 或任务栏下,这个问题可以通过将窗口层设置为 来解决always on top

总在最前面

我不熟悉您使用的 dock/任务栏,因此结果可能会有所不同。如果它对您有用,请告诉我。(我使用带有 tint2 dock 的 openbox)

答案3

无论是在 Ubuntu 14.04 还是 16.04 中的 evince,还是在上游/vanilla evince(未经 Ubuntu 修改)中都无法隐藏工具栏,不过,如果您迫切需要,可以修补源代码并重新编译。

在 vanilla evince 中,在全屏模式下,工具栏会自动隐藏,这有一定帮助,但并不完全足够(半智能行为永远不会完全按照您的意愿进行,而且如果能够在非全屏模式下隐藏工具栏也会非常方便 — — 可以说,这时节省屏幕空间尤为重要)。

不幸的是,对于 Ubuntu(14.04 和 16.04)中打包的 evince,这甚至是不可能的。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 错误报告中提供了可用的补丁(由 Reinis Danne 提供),但未被接受。直接链接3.12当代主分支3.14

幸运的是,这些补丁仍然可以手动应用(复制粘贴代码)到 evince 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">&lt;Primary&gt;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到in定义的末尾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基于usr.bin.evince并订阅的apparmor 配置文件Ubuntu 安全声明,因为您将不会收到针对您的 evince 版本的安全修复。或者,您可以考虑使用类似 的东西apt-src

答案4

我到处都使用没有标题栏的 maximus。

我解决了辅助功能选项中放大镜的缩放问题。快捷方式:Alt+Scroll

相关内容