几个小时前,Xubuntu 14.04 中的 dropbox 图标停止工作。图标是黑色的,上面有一个红色的斜线零。我无法点击它来调出 dropbox 菜单。我相信在发生这种情况之前有一个更新。我重新安装了 dropbox,然后清除了它。我甚至删除了所有相关文件和隐藏文件夹,然后再次安装了它。但图标仍然不起作用。尝试停止并启动服务......还是没有用。
答案1
我的 Xubuntu 15.10 上刚刚出现这个错误,图标损坏,无法打开菜单。我认为这个错误与 Dropbox 开始使用“指示区域”而不是“通知区域”作为托盘图标有关,而 sudo-fix 恰好起作用,因为某些环境变量未在 sudo 会话中使用。
至少对于我来说,可以通过运行以下命令解决此问题:
dropbox stop && DBUS_SESSION_BUS_ADDRESS="" dropbox start
这似乎将图标移回“通知区域”,从而修复了图标和菜单。这样守护进程就可以以普通用户身份运行,而不是以 root 身份运行。
编辑:如果您根据此修复程序为 Dropbox 创建自己的启动脚本,请记住使用“ dropbox autostart n
”命令禁用默认启动脚本(感谢 StockBreak 提供这个脚本,为我今天早上节省了一些时间)。
编辑 2:...出于某种原因,我仍然必须从 Dropbox GUI 中删除自动启动设置(单击图标 >> 首选项 >> 在系统启动时启动 Dropbox)。希望在此之后它保持关闭状态。
编辑:要在每次会话启动时运行的脚本中实现此修复,请尝试以下解决方案:https://askubuntu.com/a/795864/496493
答案2
A新的解决方法,由文件 C。, 是“dbus-launch dropbox启动-i”。
据用户报告,以下修改至少可以在 Linux 发行版 Fedora、Gentoo、Kubuntu、Linux Mint、openSUSE、Slackware、Ubuntu、Xubuntu... 和桌面环境 Cinnamon、KDE 4、KDE 5、Mate、Unity、Xfce... 上运行。
这个新的dbus 启动与之前的方法相比,这种方法似乎运行速度更快、更可靠,适用范围也更广。DBUS_SESSION_BUS_ADDRESS解决方法。
作为命令行:
dropbox stop && dbus-launch dropbox start
或者作为 shell 脚本文件:
#!/bin/bash
dropbox stop && dbus-launch dropbox start
答案3
感谢 kk78 的解决方案,我完成了这个完整的解决方法(另请参阅我的其他帖子):
我已复制*我的桌面条目:
cp ~/.config/autostart/dropbox.desktop ~/.config/autostart/start_dropbox.desktop
将条目改成如下形式(请注意这个env
词):
[Desktop Entry]
Name=Dropbox
GenericName=File Synchronizer
Comment=Sync your files across computers and to the web
#Exec=dropbox start -i
Exec=env DBUS_SESSION_BUS_ADDRESS="" dropbox start -i
Terminal=false
Type=Application
Icon=dropbox
Categories=Network;FileTransfer;
StartupNotify=false
并禁用 Dropbox 的自动启动:
dropbox autostart n
* 您不能直接编辑它,因为每次登录时 Dropbox 都会替换该文件。
答案4
我~/.dropbox-dist/dropboxd
按如下方式修改了脚本,然后重新启动,图标就恢复了。由于此文件会被更新覆盖,所以我认为如果他们在下次更新时修复了这个问题,我就不必撤消任何操作了。
#!/bin/sh
export DBUS_SESSION_BUS_ADDRESS=""
PAR=$(dirname "$(readlink -f "$0")")
exec "$PAR/dropbox-lnx.x86-3.14.7/dropboxd" "$@"
更新:当我在笔记本电脑上尝试此操作时,它最初不起作用。我意识到我遇到了与“复制”相同的问题,其中 XFCE4 会话保存在执行官方启动文件之前启动了 dropbox。我修改了我的 ~/.profile 文件以删除任何 *.state 和 *session* 文件~./cache/sessions
rm -f /home/jhm/.cache/sessions/*.state
rm -f /home/jhm/.cache/sessions/*session*
更新 #2:现在使用版本 3.18.1 问题仍然存在。我知道是因为,正如我所预料的,~/.dropbox-dist/dropboxd
每次更新都会覆盖脚本,导致问题每次都会再次出现。上述修复在 Xubuntu 14.04 启动时可靠地工作,前提是会话恢复不会直接启动二进制文件:
/home/<user>/.dropbox-dist/dropbox-lnx.x86-3.18.1/dropbox
使用“系统/会话和启动”,在“会话”选项卡下,我可以看到二进制文件是可见的,如果我不删除*session 和*state 文件,它将重新启动。
作为实验,我尝试在会话跟踪开始之前使用 Upstart 启动 Dropbox。首先,我创建了文件夹,然后向其中添加了/home/jhm/.init
一个名为的文件,其中包含:dropbox.conf
description "Dropbox"
start on desktop-start
expect daemon
exec /usr/bin/dropbox start
我在我的戴尔笔记本电脑 Xubuntu 14.04 上使用此方法,该程序现在对会话跟踪隐藏,因此我不需要删除文件。
由于dbus-launch
创建了一个新的私有 DBUS 会话总线,DropBox 永远不会找到 appindicator 服务,因为它将是该总线上的唯一进程(DBUS 除外),所以这与export DBUS_SESSION_BUS_ADDRESS=""
两种解决方案都导致 DropBox 回退到系统托盘 API 大致相同。这在 XFCE 面板项目选项卡中称为“通知区域”。确保它没有从面板中删除。
使用d-feet
和dbus-monitor
,我发现问题是 DropBox 无法在不存在的 '/MenuBar' DBUS 路径上实现 'Menu' 接口。DBUS 爱好者可以org.kde.StatusNotifierWatcher
使用进行探索d-feet
以了解更多信息。由于 dropbox 二进制文件负责支持这些接口,因此除了等待下一次更新外,无需做任何事情。顺便说一句,所有需要的 QT5.5 库都包含在程序中。无需下载开发包。
我还发现只有 GUI 对话框似乎可以可靠地阻止启动文件重新安装。一旦取消选中“系统启动时启动 DropBox”,它就会保持这种状态。