fix qt6 dolphin and kde theming

A small sample of the massive uncommitted change hoard
This commit is contained in:
outfoxxed 2025-01-05 22:11:49 -08:00
parent 945793973e
commit 546298220a
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
5 changed files with 523 additions and 59 deletions

View file

@ -14,61 +14,31 @@
};
home-manager.users.${config.main-user} = {
home.file.".icons/default/index.theme".text = ''
[Icon Theme]
Inherits=breeze_cursors
'';
xdg.configFile = let
qtctConf = colors: ''
[Appearance]
style=Breeze
icon_theme=breeze-dark
standard_dialogs=xdgdesktopportal
# Cantata misbehaves without color overrides. This overrides the breeze colors with the
# exact same colors.
color_scheme_path=${colors}
custom_palette=true
[Interface]
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=2
double_click_interval=400
gui_effects=General, AnimateMenu, AnimateCombo
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
toolbutton_style=4
underline_shortcut=1
wheel_scroll_lines=3
'';
in {
# fixes dolphin background colors
"kdeglobals".source = "${pkgs.kdePackages.breeze}/share/color-schemes/BreezeDark.colors";
"qt5ct/qt5ct.conf".text = qtctConf ./colors-qt5ct.conf;
"qt6ct/qt6ct.conf".text = qtctConf ./colors-qt6ct.conf;
};
gtk = {
enable = true;
theme = {
package = pkgs.kdePackages.breeze-gtk;
name = "Breeze-Dark";
};
iconTheme = {
package = pkgs.kdePackages.breeze-icons;
name = "breeze-dark";
};
cursorTheme = {
package = pkgs.kdePackages.breeze-gtk;
name = "breeze_cursors";
};
gtk3.extraConfig.gtk-xft-rgba = "rgb";
gtk4.extraConfig.gtk-xft-rgba = "rgb";
};
imports = [ ./home.nix ];
};
nixpkgs.overlays = [(final: prev: {
qt6Packages = prev.qt6Packages.overrideScope (qfinal: qprev: {
qt6ct = qprev.qt6ct.overrideAttrs (ctprev: {
src = pkgs.fetchFromGitHub {
owner = "ilya-fedin";
repo = "qt6ct";
rev = "refs/heads/shenanigans";
sha256 = "2RlzcjGx4vBs+r/kXd1kP3o5tQ5hWdlu4J/tWmd7FVk=";
};
nativeBuildInputs = (builtins.filter (p: p != qfinal.qmake) ctprev.nativeBuildInputs) ++ [ final.cmake ];
buildInputs = ctprev.buildInputs ++ (with final.kdePackages; [
kconfig
kcolorscheme
kiconthemes
]);
cmakeFlags = [
(lib.cmakeFeature "PLUGINDIR" "lib/qt-6/plugins")
];
});
});
})];
}

70
modules/theme/home.nix Normal file
View file

@ -0,0 +1,70 @@
{ pkgs, ... }: {
home.file.".icons/default/index.theme".text = ''
[Icon Theme]
Inherits=breeze_cursors
'';
xdg.configFile = let
qtctConf = kdecolors: ''
[Appearance]
${if kdecolors then ''
color_scheme_path=${pkgs.kdePackages.breeze}/share/color-schemes/BreezeDark.colors
'' else ''
color_scheme_path=${./colors-qt5ct.conf}
''}
custom_palette=true
icon_theme=breeze-dark
standard_dialogs=xdgdesktopportal
style=Breeze
[Fonts]
fixed="JetBrainsMono Nerd Font,12,-1,5,500,0,0,0,0,0,0,0,0,0,0,1,Medium"
general="DejaVu Sans,12,-1,5,400,0,0,0,0,0,0,0,0,0,0,1"
[Interface]
activate_item_on_single_click=1
buttonbox_layout=0
cursor_flash_time=1000
dialog_buttons_have_icons=2
double_click_interval=400
keyboard_scheme=2
menus_have_icons=true
show_shortcuts_in_context_menus=true
toolbutton_style=2
underline_shortcut=1
wheel_scroll_lines=3
[Troubleshooting]
force_raster_widgets=0
'';
in {
# fixes dolphin background colors
"kdeglobals".source = "${pkgs.kdePackages.breeze}/share/color-schemes/BreezeDark.colors";
"qt5ct/qt5ct.conf".text = qtctConf false;
"qt6ct/qt6ct.conf".text = qtctConf true;
};
home.packages = [
pkgs.kdePackages.breeze
];
gtk = {
enable = true;
theme = {
package = pkgs.kdePackages.breeze-gtk;
name = "Breeze-Dark";
};
iconTheme = {
package = pkgs.kdePackages.breeze-icons;
name = "breeze-dark";
};
cursorTheme = {
package = pkgs.kdePackages.breeze-gtk;
name = "breeze_cursors";
};
gtk3.extraConfig.gtk-xft-rgba = "rgb";
gtk4.extraConfig.gtk-xft-rgba = "rgb";
};
}

View file

@ -3,14 +3,30 @@
kdePackages.dolphin
libssh # sftp
kdePackages.dolphin-plugins
# open with
kdePackages.kservice
kdePackages.kde-cli-tools
# thumbnails
ffmpegthumbs
kdePackages.kio
kdePackages.kio-extras
kdePackages.kio-fuse
kdePackages.kimageformats
kdePackages.kdegraphics-thumbnailers
# compress menu
kdePackages.ark
];
xdg.configFile."dolphinrc".source = ./dolphinrc;
xdg.configFile = {
"dolphinrc".source = ./dolphinrc;
# taken from plasma-workspace. required for dolphin to be able to open any files.
# https://github.com/KDE/plasma-workspace/blob/master/menu/desktop/plasma-applications.menu
"menus/applications.menu".source = ./plasma-applications.menu;
};
xdg.dataFile = {
"kxmlgui5/dolphin/dolphinui.rc".source = ./dolphinui.rc;
"dolphin/view_properties/global/.directory".source = ./view_properties;

View file

@ -1,5 +1,3 @@
MenuBar=Disabled
[General]
BrowseThroughArchives=true
OpenExternallyCalledFolderInNewTab=false

View file

@ -0,0 +1,410 @@
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/1.0/menu.dtd">
<Menu>
<Name>Applications</Name>
<Directory>kde-main.directory</Directory>
<!-- Search the default locations -->
<DefaultAppDirs/>
<DefaultDirectoryDirs/>
<DefaultLayout>
<Merge type="menus"/>
<Merge type="files"/>
<Separator/>
<Menuname>More</Menuname>
</DefaultLayout>
<Layout>
<Merge type="menus"/>
<Menuname>Applications</Menuname>
<Merge type="files"/>
</Layout>
<Menu>
<Name>Applications</Name>
<Directory>kf5-unknown.directory</Directory>
<OnlyUnallocated/>
<Include>
<Not>
<!-- Don't list non-KDE core applications -->
<And>
<Category>Core</Category>
<Not><Category>KDE</Category></Not>
</And>
<!-- Don't list SUSE's YaST in here -->
<Category>X-SuSE-YaST</Category>
<Category>X-KDE-settings-hardware</Category>
<Category>X-KDE-settings-accessibility</Category>
<Category>X-KDE-settings-components</Category>
<Category>X-KDE-settings-desktop</Category>
<Category>X-KDE-settings-looknfeel</Category>
<Category>X-KDE-settings-network</Category>
<Category>X-KDE-settings-webbrowsing</Category>
<Category>X-KDE-settings-peripherals</Category>
<Category>X-KDE-settings-hardware</Category>
<Category>X-KDE-settings-power</Category>
<Category>X-KDE-settings-security</Category>
<Category>X-KDE-settings-sound</Category>
<Category>X-KDE-settings-system</Category>
<Category>X-KDE-information</Category>
<Filename>kde-kcm_knetworkconfmodule_ss.desktop</Filename>
<Filename>kde-medianotifications.desktop</Filename>
<Filename>kde-audioencoding.desktop</Filename>
</Not>
</Include>
</Menu>
<Menu>
<Name>Development</Name>
<Directory>kf5-development.directory</Directory>
<Menu>
<Name>Translation</Name>
<Directory>kf5-development-translation.directory</Directory>
<Include>
<And>
<Category>Development</Category>
<Category>Translation</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>Web Development</Name>
<Directory>kf5-development-webdevelopment.directory</Directory>
<Include>
<And>
<Category>Development</Category>
<Category>WebDevelopment</Category>
</And>
</Include>
</Menu>
<Include>
<And>
<Category>Development</Category>
<Not><Category>Translation</Category></Not>
<Not><Category>WebDevelopment</Category></Not>
</And>
</Include>
</Menu>
<Menu>
<Name>Science</Name>
<Directory>kf5-science.directory</Directory>
<Include>
<And><!-- Include /any/ Science app which is not an Education app -->
<Or>
<Category>Astronomy</Category>
<Category>Biology</Category>
<Category>Chemistry</Category>
<Category>Geology</Category>
<Category>MedicalSoftware</Category>
<Category>Physics</Category>
<Category>Math</Category>
<Category>Science</Category>
</Or>
<Not><Category>Education</Category></Not>
</And>
</Include>
</Menu>
<Menu>
<Name>Education</Name>
<Directory>kf5-education.directory</Directory>
<Menu>
<Name>Languages</Name>
<Directory>kf5-edu-languages.directory</Directory>
<Include>
<And>
<Category>Education</Category>
<Category>Languages</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>Mathematics</Name>
<Directory>kf5-edu-mathematics.directory</Directory>
<Include>
<And>
<Category>Education</Category>
<Category>Math</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>Miscellaneous</Name>
<Directory>kf5-edu-miscellaneous.directory</Directory>
<Include>
<And>
<Category>Education</Category>
<Not>
<Category>Languages</Category>
<Category>Math</Category>
<Category>Science</Category>
<Category>Teaching</Category>
</Not>
</And>
</Include>
</Menu>
<Menu>
<Name>Science</Name>
<Directory>kf5-edu-science.directory</Directory>
<Include>
<And>
<Category>Education</Category>
<Category>Science</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>Tools</Name>
<Directory>kf5-edu-tools.directory</Directory>
<Include>
<And>
<Category>Education</Category>
<Category>Teaching</Category>
</And>
</Include>
</Menu>
</Menu>
<Menu>
<Name>Games</Name>
<Directory>kf5-games.directory</Directory>
<Menu>
<Name>Arcade</Name>
<Directory>kf5-games-arcade.directory</Directory>
<Include>
<And>
<Category>Game</Category>
<Category>ArcadeGame</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>Board</Name>
<Directory>kf5-games-board.directory</Directory>
<Include>
<And>
<Category>Game</Category>
<Category>BoardGame</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>Card</Name>
<Directory>kf5-games-card.directory</Directory>
<Include>
<And>
<Category>Game</Category>
<Category>CardGame</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>Kidsgames</Name>
<Directory>kf5-games-kids.directory</Directory>
<Include>
<And>
<Category>Game</Category>
<Category>KidsGame</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>TacticStrategy</Name>
<Directory>kf5-games-strategy.directory</Directory>
<Include>
<And>
<Category>Game</Category>
<Category>StrategyGame</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>Logic</Name>
<Directory>kf5-games-logic.directory</Directory>
<Include>
<And>
<Category>Game</Category>
<Category>LogicGame</Category>
</And>
</Include>
</Menu>
<Include>
<And>
<Category>Game</Category>
<Not>
<Category>ArcadeGame</Category>
<Category>BoardGame</Category>
<Category>CardGame</Category>
<Category>KidsGame</Category>
<Category>StrategyGame</Category>
<Category>LogicGame</Category>
</Not>
</And>
</Include>
</Menu>
<Menu>
<Name>Graphics</Name>
<Directory>kf5-graphics.directory</Directory>
<Include>
<And>
<Category>Graphics</Category>
<Not><Category>X-KDE-More</Category></Not>
</And>
</Include>
<Menu>
<Name>More</Name>
<Directory>kf5-more.directory</Directory>
<Include>
<And>
<Category>Graphics</Category>
<Category>X-KDE-More</Category>
</And>
</Include>
</Menu>
</Menu>
<Menu>
<Name>Internet</Name>
<Directory>kf5-internet.directory</Directory>
<Include>
<And>
<Category>Network</Category>
<Not><Category>X-KDE-More</Category></Not>
</And>
</Include>
<Menu>
<Name>Terminal</Name>
<Directory>kf5-internet-terminal.directory</Directory>
</Menu>
<Menu>
<Name>More</Name>
<Directory>kf5-more.directory</Directory>
<Include>
<And>
<Category>Network</Category>
<Category>X-KDE-More</Category>
</And>
</Include>
</Menu>
</Menu>
<Menu>
<Name>Multimedia</Name>
<Directory>kf5-multimedia.directory</Directory>
<Include>
<And>
<Category>AudioVideo</Category>
<Not><Category>X-KDE-More</Category></Not>
</And>
</Include>
<Menu>
<Name>More</Name>
<Directory>kf5-more.directory</Directory>
<Include>
<And>
<Category>AudioVideo</Category>
<Category>X-KDE-More</Category>
</And>
</Include>
</Menu>
</Menu>
<Menu>
<Name>Office</Name>
<Directory>kf5-office.directory</Directory>
<Layout>
<Merge type="menus"/>
<Filename>kde-koshell.desktop</Filename>
<Filename>kde-Kontact.desktop</Filename>
<Separator/>
<Filename>kde-kword.desktop</Filename>
<Filename>kde-kspread.desktop</Filename>
<Filename>kde-kpresenter.desktop</Filename>
<Merge type="files"/>
<Separator/>
<Menuname>More</Menuname>
</Layout>
<Include>
<And>
<Category>Office</Category>
<Not><Category>X-KDE-More</Category></Not>
</And>
</Include>
<Menu>
<Name>More</Name>
<Directory>kf5-more.directory</Directory>
<Include>
<And>
<Category>Office</Category>
<Category>X-KDE-More</Category>
</And>
</Include>
</Menu>
</Menu>
<Menu>
<Name>Settingsmenu</Name>
<Directory>kf5-settingsmenu.directory</Directory>
<Include>
<Category>Settings</Category>
</Include>
</Menu>
<Menu>
<Name>System</Name>
<Directory>kf5-system.directory</Directory>
<Include>
<And>
<Category>System</Category>
<Not><Category>X-KDE-More</Category></Not>
</And>
</Include>
<Menu>
<Name>More</Name>
<Directory>kf5-more.directory</Directory>
<Include>
<And>
<Category>System</Category>
<Category>X-KDE-More</Category>
</And>
</Include>
</Menu>
<Menu>
<Name>ScreenSavers</Name>
<Directory>kf5-system-screensavers.directory</Directory>
</Menu>
<Menu>
<Name>Terminal</Name>
<Directory>kf5-system-terminal.directory</Directory>
</Menu>
</Menu>
<Menu>
<Name>Utilities</Name>
<Directory>kf5-utilities.directory</Directory>
<Include>
<And>
<Category>Utility</Category>
<Not><Category>X-KDE-More</Category></Not>
</And>
<Category>TextEditor</Category>
<Category>Accessibility</Category>
<Category>X-KDE-Utilities-Desktop</Category>
<Category>X-KDE-Utilities-File</Category>
<Category>X-KDE-Utilities-Peripherals</Category>
<Category>X-KDE-Utilities-PIM</Category>
</Include>
<Menu>
<Name>XUtilities</Name>
<Directory>kf5-utilities-xutils.directory</Directory>
</Menu>
<Menu>
<Name>More</Name>
<Directory>kf5-more.directory</Directory>
<Include>
<And>
<Category>Utility</Category>
<Category>X-KDE-More</Category>
</And>
</Include>
</Menu>
</Menu>
<Include>
<And>
<Category>KDE</Category>
<Category>Core</Category>
</And>
</Include>
<DefaultMergeDirs/>
<MergeFile>applications-kmenuedit.menu</MergeFile>
</Menu>