LingmoOS / lingmo-settings

The system settings application for LingmoOS uses LingmoUI as the interface style
GNU General Public License v3.0
3 stars 6 forks source link

「Gtk應用程式」的「Icon Theme」沒有跟隨「暗色系」的設定 #27

Closed samwhelp closed 1 month ago

samwhelp commented 1 month ago

測試環境

測試範例

以「Mousepad」這個「Gtk應用程式」為例。

執行下面指令,安裝「mousepad」。

sudo apt-get install mousepad

說明

亮色系

透過「lingmo-settings -m appearance」,當設定是「亮色系」的時候,顯示如下圖

亮色系

關於「~/.config/gtk-3.0/settings.ini」的內容如下

[Settings]
gtk-application-prefer-dark-theme=false
gtk-enable-animations=true
gtk-font-name=Noto Sans 9
gtk-icon-theme-name=Crule
gtk-theme-name=Lingmo-light

暗色系/ 非預期

透過「lingmo-settings -m appearance」,當設定是「暗色系」的時候,顯示如下圖

暗色系/ 非預期

關於「~/.config/gtk-3.0/settings.ini」的內容如下

[Settings]
gtk-application-prefer-dark-theme=true
gtk-enable-animations=true
gtk-font-name=Noto Sans 9
gtk-icon-theme-name=Crule
gtk-theme-name=Lingmo-dark

非預期的是「gtk-icon-theme-name=Crule」這一行。

icons

執行

ls /usr/share/icons/ -1

顯示

Adwaita
breeze
breeze-dark
Crule
Crule-dark
default
desktop-base
gnome
hicolor
HighContrast
lingmo-dark
lingmo-light
locolor
Tango
vendor

暗色系 / 預期

手動編輯「~/.config/gtk-3.0/settings.ini」的內容如下

[Settings]
gtk-application-prefer-dark-theme=true
gtk-enable-animations=true
gtk-font-name=Noto Sans 9
gtk-icon-theme-name=Crule-dark
gtk-theme-name=Lingmo-dark

也就是設定「gtk-icon-theme-name=Crule-dark」,

Mousepad 就會如下圖我們預期的顯示,可以看到工具列那裡的圖示就會是套用「暗色系」的「Icon Theme」。

暗色系 / 預期

samwhelp commented 1 month ago

剛剛我收到通知,看到專案程式碼有修正了,非常感謝。

不過我看了一下修改後的程式碼,額外產生了一個疑問,

修正前的程式碼片段

    settings.setValue("gtk-icon-theme-name", m_iconTheme);

修正後的程式碼片段如下

    settings.setValue("gtk-icon-theme-name", isDarkMode() ? "Crule-dark" : "Crule");

我的疑問是,上面的程式碼,雖然可以滿足修正我原本提到的議題

不過我猜好像會讓另一個功能會部份失效了。

也就是讓「設定Icon Theme」的功能不如預期,參考下面的說明。

參考下面的「程式碼片段

QString ThemeManager::iconTheme() const
{
    return m_iconTheme;
}

void ThemeManager::setIconTheme(const QString &iconTheme)
{
    if (m_iconTheme == iconTheme)
        return;

    m_iconTheme = iconTheme;
    m_settings->setValue("IconTheme", m_iconTheme);
    updateGtk3Config();
    emit iconThemeChanged();
}

對照我在另一篇討論串提到的概念,

原本在「Lingmo」環境,也可以透過「dbus」來設定「Icon Theme」,

以下是參考指令

dbus-icon-theme-set

執行下面指令,將「Icon Theme」設定為「Crule-dark」。

qdbus com.lingmo.Settings /Theme com.lingmo.Theme.setIconTheme "Crule-dark"

dbus-icon-theme-get

執行下面指令,獲得目前設定的「Icon Theme」。

qdbus com.lingmo.Settings /Theme com.lingmo.Theme.iconTheme

顯示

Crule-dark

~/.config/gtk-3.0/settings.ini

在「dbus-icon-theme-set」後,在「~/.config/gtk-3.0/settings.ini」也會被設定。

執行

grep '^gtk-icon-theme-name=' ~/.config/gtk-3.0/settings.ini

顯示

gtk-icon-theme-name=Crule-dark

以上補充說明,報告完畢

elysia-best commented 1 month ago

ok 收到

elysia-best commented 1 month ago

https://github.com/LingmoOS/lingmo-core/pull/17 修复了。提供了一个新的接口来设置dark模式下的theme