我已经尝试设置 Mendeley 桌面 UI 的 GTK 主题一段时间了,但没有成功。我想这样做的原因是我正在使用深色主题,并且 Mendeley 无法阅读此主题(深色背景上深色字体)。我使用的两个相关信息来源是这里和这里。
他们基本上都说像这样调用可执行文件
$ GTK_THEME=MyFancyTheme my_stubborn_app
应该覆盖当前用户的默认 GTK 主题,并且可以.../share/my_stubborn_app.desktop
通过改变以下EXEC
行来集成永久主题更改:
Exec=env GTK_THEME=MyFancyTheme /path/to/my_stubborn_app %u
在我的情况下,这些方法都不起作用。Ubuntu 上的 Mendeley 桌面 UI(我的情况是 Trusty Tahr 14.04,Mendeley UI v1.14)的特殊之处在于:
- 它作为一个独立包出现,有自己的
bin
和文件夹,并且使用 Qt。share
lib
- 实际的二进制文件在
lib/mendeleydesktop/libexec/mendeleydesktop.x86_64
(对于 Ubuntu 64 位)但不能直接调用,因为它需要由 python 脚本定义的环境变量bin/mendeleydesktop
。 - 该
mendeleydesktop.desktop
文件(允许在 Unity 启动器中拥有一个图标)bin/install-mendeley-link-handler.sh
每次bin/mendeleydesktop
被调用时都会被覆盖。 - 该
mendeleydesktop.desktop
文件是在 中创建/覆盖的$HOME/.local/share/applications
。
到目前为止,我所做的就是进行编辑bin/install-mendeley-link-handler.sh
,以便.desktop
每次调用时覆盖的文件都会包含修改后的Exec=env GTK_THEME...
行。这似乎不起作用。有人能帮忙吗?
答案1
我终于设法完成了,尽管感觉有点笨重。如下所示:
$MENDELEY_FOLDER
是 Mendeley 文件夹,$CURRENT_GTK_THEME
是您当前正在使用的 GTK 主题的名称$MENDELEY_GTK_THEME
是您想要在 Mendeley 中使用的主题的名称
注意:要获取当前使用的主题的名称,请gsettings get org.gnome.desktop.interface gtk-theme
在终端中输入。适合与 Mendeley 一起使用的主题是Ambiance
。
创建一个新的主题目录
我们将从本质上欺骗 Mendeley,让它认为根 GTK 主题文件夹在其他地方。
mkdir $MENDELEY_FOLDER/share/themes/
ln -s /usr/share/themes/$MENDELEY_GTK_THEME $MENDELEY_FOLDER/share/themes/$CURRENT_GTK_THEME
修改脚本install-mendeley-link-handler.sh
它应该位于$MENDELEY_FOLDER/bin/install-mendeley-link-handler.sh
。您需要编辑覆盖文件的行mendeleydesktop.desktop
,在我的例子中是:
cat > $DESKTOP_PATH/mendeleydesktop.desktop <<EOF
[Desktop Entry]
Name=Mendeley Desktop
GenericName=Research Paper Manager
Comment=Mendeley Desktop is software for managing and sharing research papers
Exec=env GTK_DATA_PREFIX=$MENDELEY_FOLDER $MENDELEYDESKTOP_BIN %u
Icon=mendeleydesktop
Terminal=false
Type=Application
Categories=Education;Literature;Qt;
X-SuSE-translate=false;
MimeType=x-scheme-handler/mendeley;application/pdf;text/x-bibtex;
X-Mendeley-Version=1
EOF
注意线条的变化Exec=...
。
创建新的 mendeley 可执行文件
无论您在何处保存本地二进制文件(例如),请创建一个包含以下内容的$HOME/local/bin
新文件:mendeley
GTK_DATA_PREFIX=$MENDELEY_FOLDER \
$MENDELEY_FOLDER/bin/mendeleydesktop
然后通过运行使其可执行chmod +x mendeley
,并运行它以更新mendeleydesktop.desktop
文件。
如果你安装了 Mendeley 系统范围
最后一步只有一点点不同,系统范围的脚本(最有可能位于)实际上创建了到中的可执行文件/opt/mendeleydesktop
的链接,而这正是前一个脚本需要调用的。mendeleydesktop
$HOME/.local/share
将这些更改应用于 Unity 图标
要编辑的文件应该是/usr/share/applications/mendeleydesktop.desktop
。在此文件中,您应该像以前一样修改行Exec
,方法是在调用前加上 的定义GTK_DATA_PREFIX
。这应该可以解决问题 :)
答案2
我想补充一个在 kde plasma(manjaro linux)上对我很有用的答案。它确实不是需要任何管理员权限。
免责声明:仅于 2018-12-04 使用 Mendeley 1.19 在我的系统上测试过一次,
下面的命令和结果可能因不同的 DE 和/或 OS 或不同的 Mendeley 版本而异。
- 创建一个空文件夹,例如
mkdir $HOME/.config.theme_override
。 - 将您的 Mendeley 配置符号链接到新文件夹:
ln -s "$HOME/.config/Mendeley Ltd." "$HOME/.config.theme_override/Mendeley Ltd."
- 使用以下命令从命令行启动 mendeleydesktop:
XDG_CONFIG_HOME="$HOME/.config.theme_override" mendeleydesktop
然后 mendeley 会在 中寻找 plasma 主题设置$HOME/.config.theme_override
,如果找不到任何主题,则会退回到可读的 bright 主题。
现在桌面条目:
- 确保 mendeley 是关闭
- 编辑文件
$HOME/.local/share/applications/mendeleydesktop.desktop
使其看起来像下面(**) - 删除文件的写权限
.desktop
:
chmod -w $HOME/.local/share/applications/mendeleydesktop.desktop
- 从应用程序启动器启动 mendeleydesktop 并查看清晰易读的界面。
一些可以帮助未来侦探的注释/见解:
- 默认的 Mendeley 配置文件夹是
$HOME/.config/Mendeley Ltd.
,更改配置文件夹不会改变 Mendeley 数据库所在的位置($HOME/.local/share/data/Mendeley Ltd.
)。 $HOME/.local/share/Mendeley Ltd.
Mendeley 还在和中存储了一些数据$HOME/.cache/Mendeley Ltd.
,更改配置文件夹不会改变 Mendeley 查找这些文件夹的位置。看起来这些文件夹可以毫无风险地删除,Mendeley 会自动恢复它们。如果上述方法对更改主题不起作用,那么删除这些文件夹可能会有所帮助,但我不确定,请自行承担风险。- 每次启动 Mendeley 时,都会运行一个脚本来覆盖该
.desktop
文件,该文件使 mendeley 显示在应用程序菜单和启动器中。这就是为什么我们需要上面的步骤 (3.)。该文件位于:$HOME/.local/share/applications/mendeleydesktop.desktop
,它将执行文件$HOME/.local/share/mendeleydesktop
,默认情况下,该文件符号链接到/opt/mendeleydesktop/bin/mendeleydesktop
。不要问我为什么 Mendeley 开发人员选择了这种复杂的设置。
(** 的内容$HOME/.local/share/applications/mendeleydesktop.desktop
)
[Desktop Entry]
Name=Mendeley Desktop
GenericName=Research Paper Manager
Comment=Mendeley Desktop is software for managing and sharing research papers
Exec=env XDG_CONFIG_HOME="$HOME/.config.theme_override" $HOME/.local/share/mendeleydesktop %f
Icon=mendeleydesktop
Terminal=false
Type=Application
Categories=Education;Literature;Qt;
X-SuSE-translate=false
MimeType=x-scheme-handler/mendeley;application/pdf;text/x-bibtex;
X-Mendeley-Version=1
答案3
我的方法略有不同。我的 KDE Plasma 风格设置为 Breeze Dark,并带有一些自定义字体大小设置。我希望 mendeleydesktop 使用所有这些字体大小设置,但不使用深色设置。
根据以上帖子的建议,我创建了一个空文件夹:
mkdir $HOME/.config.theme_override
然后我跑
XDG_CONFIG_HOME="$HOME/.config.theme_override" mendeleydesktop
...查看其配置文件夹中默认使用哪些文件夹。结果发现,就我而言,mendeleydesktop 在以下文件夹中创建了三个新文件夹$HOME/.config.theme_override
:
libreoffice 'Mendeley Ltd.' pulse
我删除了这些新文件夹:
rmdir libreoffice
rmdir 'Mendeley Ltd.'
rmdir pulse
然后我将它们替换为指向相应旧文件夹的符号链接$HOME/.config
:
ln -s "$HOME/.config/Mendeley Ltd." "$HOME/.config.theme_override/Mendeley Ltd."
ln -s "$HOME/.config/libreoffice" "$HOME/.config.theme_override/libreoffice"
ln -s "$HOME/.config/pulse" "$HOME/.config.theme_override/pulse"
接下来,我将kdeglobals
文件从$HOME/.config
复制到$HOME/.config.theme_override
:
cp $HOME/.config/kdeglobals $HOME/.config.theme_override/
最后,我删除了所有关于颜色的部分$HOME/.config.theme_override/kdeglobals
:
[ColorEffects:Inactive]
ChangeSelectionColor=true
Color=112,111,110
ColorAmount=0.025
ColorEffect=2
ContrastAmount=0.1
ContrastEffect=2
Enable=false
IntensityAmount=0
IntensityEffect=0
[Colors:Button]
BackgroundAlternate=77,77,77
BackgroundNormal=49,54,59
DecorationFocus=61,174,233
DecorationHover=61,174,233
ForegroundActive=61,174,233
ForegroundInactive=189,195,199
ForegroundLink=41,128,185
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=239,240,241
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[Colors:Complementary]
BackgroundAlternate=59,64,69
BackgroundNormal=49,54,59
DecorationFocus=30,146,255
DecorationHover=61,174,230
ForegroundActive=246,116,0
ForegroundInactive=175,176,179
ForegroundLink=61,174,230
ForegroundNegative=237,21,21
ForegroundNeutral=201,206,59
ForegroundNormal=239,240,241
ForegroundPositive=17,209,22
ForegroundVisited=61,174,230
[Colors:Selection]
BackgroundAlternate=29,153,243
BackgroundNormal=61,174,233
DecorationFocus=61,174,233
DecorationHover=61,174,233
ForegroundActive=252,252,252
ForegroundInactive=239,240,241
ForegroundLink=253,188,75
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=239,240,241
ForegroundPositive=39,174,96
ForegroundVisited=189,195,199
[Colors:Tooltip]
BackgroundAlternate=77,77,77
BackgroundNormal=49,54,59
DecorationFocus=61,174,233
DecorationHover=61,174,233
ForegroundActive=61,174,233
ForegroundInactive=189,195,199
ForegroundLink=41,128,185
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=239,240,241
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[Colors:View]
BackgroundAlternate=49,54,59
BackgroundNormal=35,38,41
DecorationFocus=61,174,233
DecorationHover=61,174,233
ForegroundActive=61,174,233
ForegroundInactive=189,195,199
ForegroundLink=41,128,185
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=239,240,241
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
[Colors:Window]
BackgroundAlternate=77,77,77
BackgroundNormal=49,54,59
DecorationFocus=61,174,233
DecorationHover=61,174,233
ForegroundActive=61,174,233
ForegroundInactive=189,195,199
ForegroundLink=41,128,185
ForegroundNegative=218,68,83
ForegroundNeutral=246,116,0
ForegroundNormal=239,240,241
ForegroundPositive=39,174,96
ForegroundVisited=127,140,141
删除上述部分后,mendeleydesktop 使用自己的颜色而不是 KDE Plasma 样式颜色,但它使用来自的所有其他样式设置$HOME/.config.theme_override/kdeglobals
。