tema Force Mendeley Desktop GTK

3

Estou tentando há algum tempo definir o tema GTK da interface de usuário do Mendeley para desktop, sem sucesso. A razão pela qual eu quero fazer isso é porque eu estou usando um tema sombrio , e que Mendeley é ilegível (fonte escura em bg escuro) com este tema. As duas fontes relevantes de informação que estou usando são aqui e aqui .

Ambos basicamente dizem que chamar um executável assim

$ GTK_THEME=MyFancyTheme my_stubborn_app

deve substituir o tema padrão do GTK para o usuário atual e as alterações permanentes do tema podem ser integradas no .../share/my_stubborn_app.desktop alterando a EXEC line:

Exec=env GTK_THEME=MyFancyTheme /path/to/my_stubborn_app %u

Nenhum desses métodos funciona no meu caso. As coisas especiais sobre a interface de usuário do Mendeley no Ubuntu (Trusty Tahr 14.04, Mendeley UI v1.14 no meu caso) são:

  • Ele vem como um pacote independente com suas próprias pastas bin e share e lib e usa o Qt.
  • O binário real está em lib/mendeleydesktop/libexec/mendeleydesktop.x86_64 (para o Ubuntu 64 bits), mas não pode ser chamado diretamente porque requer variáveis de ambiente definidas pelo script python bin/mendeleydesktop .
  • O arquivo mendeleydesktop.desktop (que permite ter um ícone no iniciador do Unity) é sobrescrito por bin/install-mendeley-link-handler.sh cada vez que bin/mendeleydesktop é chamado.
  • Este arquivo mendeleydesktop.desktop é criado / sobrescrito em $HOME/.local/share/applications .

O que eu fiz até agora foi editar bin/install-mendeley-link-handler.sh para que o arquivo .desktop substituído em cada chamada incluísse a linha Exec=env GTK_THEME... modificada. Isso não parece funcionar. Alguém pode ajudar?

    
por Sheljohn 12.08.2015 / 12:32

1 resposta

3

Eu finalmente consegui terminar, embora pareça um pouco desajeitado. No seguinte:

  • $MENDELEY_FOLDER é a pasta do Mendeley,
  • $CURRENT_GTK_THEME é o nome do tema GTK que você está usando atualmente
  • $MENDELEY_GTK_THEME é o nome do tema que você gostaria de usar com o Mendeley

NOTA: Para obter o nome do tema que você está usando atualmente, digite gsettings get org.gnome.desktop.interface gtk-theme em um terminal. Um bom tema para usar com o Mendeley é Ambiance .

Crie um novo diretório de temas

Vamos essencialmente enganar Mendeley para que pense que a pasta de temas raiz do GTK está em outro lugar.

mkdir $MENDELEY_FOLDER/share/themes/
ln -s  /usr/share/themes/$MENDELEY_GTK_THEME  $MENDELEY_FOLDER/share/themes/$CURRENT_GTK_THEME

Modifique o script install-mendeley-link-handler.sh

Ele deve estar localizado em $MENDELEY_FOLDER/bin/install-mendeley-link-handler.sh . Você precisa editar as linhas que sobrescrevem o arquivo mendeleydesktop.desktop , no meu caso:

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

Observe a mudança na linha Exec=... .

Crie um novo executável mendeley

Sempre que você mantiver seus binários locais (por exemplo, $HOME/local/bin ), crie um novo arquivo mendeley com o seguinte:

GTK_DATA_PREFIX=$MENDELEY_FOLDER \
    $MENDELEY_FOLDER/bin/mendeleydesktop

Em seguida, torne-o executável executando chmod +x mendeley e execute-o para atualizar o arquivo mendeleydesktop.desktop .

Se você instalou o sistema de todo o Mendeley

A última etapa é apenas ligeiramente diferente, pois o script do sistema (provavelmente localizado em /opt/mendeleydesktop ) cria um link para o executável mendeleydesktop em $HOME/.local/share , e é isso que o script anterior precisa para ligar em vez disso.

Aplicar essas alterações ao ícone do Unity

O arquivo a ser editado deve ser /usr/share/applications/mendeleydesktop.desktop . Nesse arquivo, você deve modificar a linha Exec como anteriormente, prefixando a chamada com a definição de GTK_DATA_PREFIX . Isso deve fazer o truque:)

    
por Sheljohn 12.08.2015 / 13:28