强制使用 Mendeley 桌面 GTK 主题

强制使用 Mendeley 桌面 GTK 主题

我已经尝试设置 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。sharelib
  • 实际的二进制文件在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 版本而异。

  1. 创建一个空文件夹,例如
    mkdir $HOME/.config.theme_override
  2. 将您的 Mendeley 配置符号链接到新文件夹:
    ln -s "$HOME/.config/Mendeley Ltd." "$HOME/.config.theme_override/Mendeley Ltd."
  3. 使用以下命令从命令行启动 mendeleydesktop:
    XDG_CONFIG_HOME="$HOME/.config.theme_override" mendeleydesktop

然后 mendeley 会在 中寻找 plasma 主题设置$HOME/.config.theme_override,如果找不到任何主题,则会退回到可读的 bright 主题。

现在桌面条目:

  1. 确保 mendeley 是关闭
  2. 编辑文件$HOME/.local/share/applications/mendeleydesktop.desktop使其看起来像下面(**)
  3. 删除文件的写权限.desktop
    chmod -w $HOME/.local/share/applications/mendeleydesktop.desktop
  4. 从应用程序启动器启动 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

答案4

这里有一个小更新:在 Ubuntu 中以暗模式阅读的快速更新解决方案现在正在使用 Gnome Extension Inverted Color。

在此处输入图片描述

然后,您可以通过 Super + I 在深色和浅色之间切换应用程序屏幕

在此处输入图片描述

相关内容