如何在Xubuntu 14.04 LTS 64上修复不工作的Dropbox图标?

几个小时前,Xubuntu 14.04中的Dropbox图标停止工作。 图标为黑色,红色为零。 我无法点击它来调出Dropbox菜单。 我相信在此之前有一个更新。 我重新安装然后清除了Dropbox。 我甚至删除了所有相关文件和隐藏文件夹,然后再次安装它。 不过,图标无效。 试图停止并启动服务……再也没有。

刚刚在我的Xubuntu 15.10上出现了这个错误,图标无法打开,无法打开菜单。 我认为这个bug连接到Dropbox开始使用“指标区域”为他们的托盘图标而不是“通知区域”,并且sudo-fix恰好工作,因为一些环境变量没有与sudo会话一起使用。

至少对我来说,这个问题可以通过运行来解决:

dropbox stop && DBUS_SESSION_BUS_ADDRESS="" dropbox start 

这似乎将图标移回“通知区域”,它修复了图标和菜单。 这样,守护程序以普通用户身份运行,而不是以root身份运行。

编辑:如果您基于此修复程序为Dropbox创建自己的启动脚本,请记住使用“ dropbox autostart n ”命令禁用默认启动脚本(感谢StockBreak这个,今天早上节省了一些时间)。

EDIT2:…由于某种原因,我仍然需要从Dropbox GUI中删除自动启动设置(单击图标>>首选项>>在系统启动时启动Dropbox)。 希望它在此之后保持不变。

编辑:要在每次会话开始时运行的脚本中实现此修复,请尝试以下解决方案: https : //askubuntu.com/a/795864/496493

File C提出的一种新的解决方法“dbus-launch dropbox start -i”

用户报告以下改编至少在Linux发行版Fedora,Gentoo,Kubuntu,Linux Mint,openSUSE,Slackware,Ubuntu,Xubuntu ……以及桌面环境Cinnamon,KDE 4,KDE 5,Mate,Unity, XFCE …

这种新的dbus-launch解决方案似乎工作速度更快,可靠性更高,而且比以前的DBUS_SESSION_BUS_ADDRESS解决方案更多。

作为命令行:

 dropbox stop && dbus-launch dropbox start 

或者作为shell脚本文件:

 #!/bin/bash dropbox stop && dbus-launch dropbox start 

与kk78提出的解决方案不同,以下方法一劳永逸地解决了这个问题:

  1. 关闭Dropbox。

  2. 使用文本编辑器(作为管理员)打开/usr/bin/dropbox文件。 例如,在终端运行中

     gksudo gedit /usr/bin/dropbox 
  3. import os后创建一个新行并添加以下内容:

     os.environ['DBUS_SESSION_BUS_ADDRESS'] = "" 
  4. 保存并重新启动

现在Dropbox可以正常工作:

Gif教程

感谢kk78的解决方案,我做了这个完整的解决方法(另见我的另一篇文章 ):

复制了*我的桌面条目:

 cp ~/.config/autostart/dropbox.desktop ~/.config/autostart/start_dropbox.desktop 

改变了这样的条目(请注意环境词):

 [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会在您每次登录时替换该文件。

[这是我不赞成的早期答案,现在继续研究这个和相关的错误; 对于更新更好的解决方法,没有sudo的文件所有权更改/恢复不便,请参阅kk78的答案,或者命令行"dropbox stop && dbus-launch dropbox start"在另一个答案中]

Dropbox托盘图标错误似乎与权限有关。

在它被修复之前,从命令行(Konsole,终端等)进行临时解决,这些工作目前正在为Xubuntu,Linux Mint等用户工作:

 dropbox stop sudo dropbox start 

注意:

关于“sudo” ,以root身份运行Dropbox克服了权限错误,托盘图标再次正常工作。

但是,它有一个小的辅助效果,即在隐藏文件夹中有一些文件〜/ .dropbox /现在由root拥有而不是用户(正如您可以看到的,例如像Dolphin这样的文件管理器),因此root密码启动Dropbox时请求。

这可以作为一个临时的解决方法,让Dropbox托盘图标在Linux上完全正常工作,直到下一次更新有希望修复bug,但是如果修复程序没有恢复正确的权限,那么在假设的情况下快速解决bug修复将是:

 sudo dropbox stop sudo chown -R USER:GROUP /home/USER/.dropbox dropbox start 

当然,替换USER和GROUP。 例如,如果您是Unix,UTF-8,Go语言等的共同创建者;)它将是这样的:

 sudo chown -R ken:ken /home/ken/.dropbox 

更新:

对不起,我刚刚看到一些使这个临时解决方法仍然可行但不太方便的东西:不仅隐藏的〜/ .dropbox文件夹中的那些已经提到的文件由root拥有,也是从Dropbox服务器下载到Dropbox的文件以root身份运行Dropbox的计算机上的文件夹(通常为〜/ Dropbox )。

所以,我仍在使用此解决方法,直到错误修复,但如果我们想要使用它,我们必须将权限恢复行也应用到Dropbox文件夹,至少在我们想要编辑下载的文档时。 例如:

 sudo chown -R USER:GROUP /home/USER/Dropbox 

为了节省时间,并在我们启动计算机时应用它,我们可以将它包含在一个简单的shell脚本中,例如带有可执行属性的dropbox.sh文本文件,我们可以从命令行或鼠标单击运行:

 #!/bin/bash dropbox stop sudo dropbox start sudo chown -R USER:GROUP /home/USER/Dropbox 

简单的替代解决方法:

如果处理文件所有权更改和恢复等过于不方便,最简单的替代方法可能只是等待Dropbox错误修复而不使用图标,而只是不时检查Dropbox状态而不是所有以前的过程。使用命令行:

 dropbox status 

结果,如果Dropbox正在运行,大部分时间将是: “最新”

稍后,您可以使用向上箭头从可以保持打开的小命令行窗口再次快速运行此行。

只需输入以下内容即可查看其他命

 dropbox 

如前所述,要停止使用其他解决方法(sudo),恢复正常的文件所有权,并以普通用户而不是root身份再次开始运行Dropbox,只使用一次(替换USER和GROUP):

 sudo dropbox stop sudo chown -R USER:GROUP /home/USER/Dropbox sudo chown -R USER:GROUP /home/USER/.dropbox sudo chown -R USER:GROUP /home/USER/.dbus dropbox start 

新更新:

请参阅kk78对此问题的回答 ,其解决方法比我的好得多,并且使用Dropbox托盘图标作为普通用户,而不是root用户。 它至少适用于Xubuntu和Linux Mint。

它也可以用作shell脚本:

 #!/bin/bash dropbox stop && DBUS_SESSION_BUS_ADDRESS="" dropbox start 

我决定使用这个脚本而不是小图标,而不是保留旧版本或摆弄其他方面。 它将命令dropbox status的输出直接放在面板中。 但是,当它正在同步或更新时,会有一些复选标记或同步字符。

通过在终端中粘贴以下内容来安装Generic Monitor:

 sudo apt-get install xfce4-genmon-plugin 

将以下脚本设置为使用Generic Monitor面板插件运行。 我没有使用Label并将其设置为每五秒运行一次。

 #!/bin/bash status=$(dropbox status) if [ "$status" = "Up to date" ]; then echo "✔" elif [[ "$status" == "Syncing"* ]] || [[ "$status" == "Indexing"* ]] || [[ "$status" == "Downloading"* ]]; then echo "⟲" else echo "$status" fi 

您需要运行以下命令,以便在登录时不显示密码提示(无论如何都可以忽略):

 sudo chown -R USER:GROUP ~/.dropbox 

USER:GROUP通常只是您的用户名两次。

当我需要更改设置时,我将使用sudo启动Dropbox来更改我的设置。 正如本页中所述,使用sudo启动可以显示小图标和菜单。

此外,如果您愿意,可以回显您自己的Dropbox图标或图像。 如果您的Dropbox命令行不起作用,您可以在此处下载Dropbox python脚本。 (在我的例子中,我没有使用Dropbox python脚本名称的* .py扩展名。)

我按如下方式修改了~/.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文件以清除~./cache/sessions任何* .state和* session *文件

 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//.dropbox-dist/dropbox-lnx.x86-3.18.1/dropbox

使用“系统/会话和启动”,在“会话”选项卡下,我可以看到二进制文件是可见的,如果我没有删除*会话和*状态文件,将重新启动。

作为一项实验,我尝试在会话跟踪开始之前使用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 Panel Items选项卡中称为“通知区域”。 确保它尚未从面板中移除。

使用d-feetdbus-monitor ,我发现问题是DropBox无法在不存在的’/ MenuBar’DBUS路径上实现’Menu’接口。 DBUS粉丝可以用d-feet探索org.kde.StatusNotifierWatcher以了解更多信息。 由于dropbox二进制文件负责支持这些接口,因此无需等待下一次更新。 顺便说一句,所有需要的QT5.5库都包含在程序中。 无需下载开发包。

我还发现只有GUI对话框似乎可以确保重新启动启动文件。 一旦“系统启动时启动DropBox”未经检查,它就会保持这种状态。

我运行相同的操作系统,Xubuntu 14.04 x64,我看到这个图标没有响应点击(没有菜单):

Xfce4-Panel上的Dropbox图标

3.14.5的发行说明(截至2016年2月9日到期并已安装在我的机器上)说明Dropbox已更新为在Linux上使用Qt 5.5。

运行以下命令在我的机器上提供Qt版本:

 ~$ qmake -v QMake version 3.0 Using Qt version 5.2.1 in /usr/lib/x86_64-linux-gnu 

所以,我使用这里的说明升级到Qt 5.5 。

这些是我采取的步骤:

 sudo apt-add-repository ppa:beineri/opt-qt551-trusty sudo apt-get update sudo apt-get install qt-latest qtcreator-latest 

然后我在~/.bashrc设置以下内容并重新启动会话:

 export QT_SELECT=opt-qt55 

我确认我现在安装了Qt 5.5:

 ~$ qmake -v QMake version 3.0 Using Qt version 5.5.1 in /opt/qt55/lib 

然后,重新安装Dropbox并重新启动会话:

 sudo apt-get remove dropbox sudo apt-get install nautilus-dropbox 

不幸的是,这不起作用,托盘图标显示相同。

然后,我想知道从Xfce4面板中删除指标插件是否有效。

  1. 删除指标插件
  2. ~? dropbox stop && dropbox start

然后,突然,通知面板中出现一个狂野的Dropbox图标!

出现Dropbox图标

似乎Dropbox图标喜欢驻留在通知面板中,而不是指标插件。

但是……我喜欢指标插件,因为它给了我电子邮件提醒和音量控制。 所以,我重新添加到面板中。 到现在为止还挺好。

但是,重新开始会话后,我再次得到这个废话:

Xfce4-Panel上的Dropbox图标

所以,现在我被卡住了。 我不知道如何使Dropbox图标出现在Notification Panel而不是Indicator Panel中,我确定每次登录时都不会重复这些步骤!

这解决了它。

在Dropbox菜单上,转到首选项。 取消选择“在系统启动时启动Dropbox”

转到会话和启动>应用程序自动启动并添加以下启动项:

 bash -c 'export DBUS_SESSION_BUS_ADDRESS="" && dropbox start -i' 

(在xbuntu 17.04上测试)

要使用正确的托盘图标重新启动Dropbox: dropbox stop && dbus-launch dropbox start

Dropbox在启动时使用/usr/share/applications/dropbox.desktop替换自动启动文件~/.config/autostart/dropbox.desktop 。 要使修复永久化,请修改后者:

 sudo sed -i 's/Exec=dropbox start -i/Exec=dbus-launch dropbox start -i/' /usr/share/applications/dropbox.desktop 

您可能还想修改主菜单启动器:

 sed 's/Exec=dropbox start -i/Exec=dbus-launch dropbox start -i/' ~/.local/share/applications/dropbox.desktop 

这本身并不是一个答案,但考虑到我们是一个相当大的社区: HERE是Dropbox电子邮件客户支持页面的直接链接。 如果我们都问他们这个问题,他们可能会自己解决这个问题。