Rename fluorescence -> alucard

Since it's dracula inspired 'n all...
This commit is contained in:
Henrik Lissner 2020-10-23 20:53:34 -04:00
parent 74a8b35b88
commit c50a51f987
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
31 changed files with 228 additions and 150 deletions

View file

@ -0,0 +1,14 @@
#+TITLE: Alucard
#+AUTHOR: Henrik Lissner
#+DATE: October 1, 2019
A regal dracula-inspired theme for piles of miserable secrets.
* Wallpaper
![Alucard wallpaper](config/wallpaper.jpg)
* Screenshots
![My desktop, pretending to look busy, with gaps](/../screenshots/alucard/fakebusy.png?raw=true)
![My desktop, unfettered by windows](/../screenshots/alucard/desktop.png?raw=true)
![My app launcher, rofi](/../screenshots/alucard/rofi.png?raw=true)
![The gapless experience](/../screenshots/alucard/tiling.png?raw=true)

View file

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View file

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

View file

@ -0,0 +1,99 @@
# modules/themes/alucard/default.nix --- a regal dracula-inspired theme
{ options, config, lib, pkgs, ... }:
with lib;
with lib.my;
let cfg = config.modules.theme;
in {
config = mkIf (cfg.active == "alucard") (mkMerge [
# Desktop-agnostic configuration
{
modules = {
theme = {
wallpaper = mkDefault ./config/wallpaper.png;
gtk = {
theme = "Dracula";
iconTheme = "Paper";
cursorTheme = "Paper";
};
};
shell.zsh.rcFiles = [ ./config/zsh/prompt.zsh ];
shell.tmux.rcFiles = [ ./config/tmux.conf ];
desktop.browsers = {
firefox.userChrome = concatMapStringsSep "\n" readFile [
./config/firefox/userChrome.css
];
qutebrowser.userStyles = concatMapStringsSep "\n" toCSSFile [
./config/qutebrowser/github.scss
./config/qutebrowser/monospace-textareas.scss
./config/qutebrowser/quora.scss
./config/qutebrowser/stackoverflow.scss
./config/qutebrowser/xkcd.scss
./config/qutebrowser/youtube.scss
];
};
};
}
# Desktop (X11) theming
(mkIf config.services.xserver.enable {
user.packages = with pkgs; [
unstable.dracula-theme
paper-icon-theme # for rofi
];
fonts.fonts = [ pkgs.jetbrains-mono ];
# Compositor
services.picom = {
fade = true;
fadeDelta = 1;
fadeSteps = [ 0.01 0.012 ];
shadow = true;
shadowOffsets = [ (-10) (-10) ];
shadowOpacity = 0.22;
# activeOpacity = "1.00";
# inactiveOpacity = "0.92";
settings = {
shadow-radius = 12;
# blur-background = true;
# blur-background-frame = true;
# blur-background-fixed = true;
blur-kern = "7x7box";
blur-strength = 320;
};
};
# Login screen theme
services.xserver.displayManager.lightdm.greeters.mini.extraConfig = ''
text-color = "#ff79c6"
password-background-color = "#1E2029"
window-color = "#181a23"
border-color = "#181a23"
'';
# Other dotfiles
home.configFile = mkMerge [
{
# Sourced from sessionCommands in modules/themes/default.nix
"xtheme/90-theme".source = ./config/Xresources;
}
(mkIf m.desktop.bspwm.enable {
"bspwm/rc.d/polybar".source = ./config/polybar/run.sh;
"bspwm/rc.d/theme".source = ./config/bspwmrc;
})
(mkIf m.desktop.apps.rofi.enable {
"rofi/theme" = { source = ./config/rofi; recursive = true; };
})
(mkIf (m.desktop.bspwm.enable || m.desktop.stumpwm.enable) {
"polybar" = { source = ./config/polybar; recursive = true; };
"dunst/dunstrc".source = ./config/dunstrc;
})
(mkIf m.desktop.media.graphics.vector.enable {
"inkscape/templates/default.svg".source = ./config/inkscape/default-template.svg;
})
];
})
]);
}

View file

@ -2,14 +2,123 @@
# intertwined with others, and are solely responsible for aesthetics. Disabling
# a theme module should never leave a system non-functional.
{ config, lib, ... }:
{ options, config, lib, pkgs, ... }:
with lib;
with lib.my;
let cfg = config.modules.themes;
let cfg = config.modules.theme;
in {
assertions = [{
assertion = countAttrs (_: x: x.enable) cfg < 2;
message = "Can't have more than one theme enabled at a time";
}];
options.modules.theme = with types; {
active = mkOption {
type = nullOr str;
default = null;
apply = v: let theme = builtins.getEnv "THEME"; in
if theme != "" then theme else v;
description = ''
Name of the theme to enable. Can be overridden by the THEME environment
variable. Themes can also be hot-swapped with 'hey theme $THEME'.
'';
};
wallpaper = mkOpt (either path null) null;
loginWallpaper = mkOpt (either path null)
(if cfg.wallpaper != null
then toFilteredImage cfg.wallpaper "-gaussian-blur 0x2 -modulate 70 -level 5%"
else null);
gtk = {
theme = mkOpt str "";
iconTheme = mkOpt str "";
cursorTheme = mkOpt str "";
};
onReload = mkOpt (attrsOf lines) {};
};
config = mkIf (cfg.active != null) (mkMerge [
# Read xresources files in ~/.config/xtheme/* to allow modular
# configuration of Xresources.
(let xrdb = ''xrdb -merge "$XDG_CONFIG_HOME"/xtheme/*'';
in {
services.xserver.displayManager.sessionCommands = xrdb;
modules.theme.onReload.xtheme = xrdb;
})
{
home.configFile = {
# GTK
"gtk-3.0/settings.ini".text = ''
[Settings]
${optionalString (cfg.gtk.theme != "")
''gtk-theme-name="${cfg.gtk.theme}"''}
${optionalString (cfg.gtk.iconTheme != "")
''gtk-icon-theme-name="${cfg.gtk.iconTheme}"''}
${optionalString (cfg.gtk.cursorTheme != "")
''gtk-cursor-theme-name="${cfg.gtk.cursorTheme}"''}
gtk-fallback-icon-theme=gnome
gtk-application-prefer-dark-theme=true
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=none
'';
# GTK2 global theme (widget and icon theme)
"gtk-2.0/gtkrc".text = ''
${optionalString (cfg.gtk.theme != "")
''gtk-theme-name="${cfg.gtk.theme}"''}
${optionalString (cfg.gtk.iconTheme != "")
''gtk-icon-theme-name="${cfg.gtk.iconTheme}"''}
gtk-font-name="Sans 10"
'';
# QT4/5 global theme
"Trolltech.conf".text = ''
[Qt]
${optionalString (cfg.gtk.theme != "")
''style="${cfg.gtk.theme}"''}
'';
};
}
(mkIf (cfg.wallpaper != null)
(let wCfg = config.services.xserver.desktopManager.wallpaper;
command = ''
if [ -e "$XDG_DATA_HOME/wallpaper" ]; then
${pkgs.feh}/bin/feh --bg-${wCfg.mode} \
${optionalString wCfg.combineScreens "--no-xinerama"} \
--no-fehbg \
$XDG_DATA_HOME/wallpaper
fi
'';
in {
# Set the wallpaper ourselves so we don't need .background-image and/or
# .fehbg polluting $HOME
services.xserver.displayManager.sessionCommands = command;
modules.theme.onReload.wallpaper = command;
home.dataFile = mkIf (cfg.wallpaper != null) {
"wallpaper".source = cfg.wallpaper;
};
}))
(mkIf (cfg.loginWallpaper != null) {
services.xserver.displayManager.lightdm.background = cfg.loginWallpaper;
})
(mkIf (cfg.onReload != {}) {
user.packages = [
(pkgs.writeScriptBin "reloadTheme" ''
#!${stdenv.shell}
echo "Reloading current theme: ${cfg.active}"
${concatStrings "\n"
(mapAttrsToList (name: script: ''
echo "[${name}]"
${script}
'') cfg.onReload)}
'')
];
system.userActivationScripts.reloadTheme = ''
[ -z "$NORELOAD" ] && reloadTheme
'';
})
]);
}

View file

@ -1,14 +0,0 @@
#+TITLE: Fluorescence
#+AUTHOR: Henrik Lissner
#+DATE: October 1, 2019
A regal dracula-inspired theme.
* Wallpaper
![Fluorescence wallpaper](config/wallpaper.jpg)
* Screenshots
![My desktop, pretending to look busy, with gaps](/../screenshots/fluorescence/fakebusy.png?raw=true)
![My desktop, unfettered by windows](/../screenshots/fluorescence/desktop.png?raw=true)
![My app launcher, rofi](/../screenshots/fluorescence/rofi.png?raw=true)
![The gapless experience](/../screenshots/fluorescence/tiling.png?raw=true)

View file

@ -1,130 +0,0 @@
# modules/themes/fluorescence/default.nix --- a regal dracula-inspired theme
{ options, config, lib, pkgs, ... }:
with lib;
with lib.my;
let m = config.modules;
cfg = m.themes.fluorescence;
in {
options.modules.themes.fluorescence = with types; {
enable = mkBoolOpt false;
wallpaper = mkOpt (either path null) ./config/wallpaper.png;
loginWallpaper = mkOpt (either path null)
(toFilteredImage cfg.wallpaper "-gaussian-blur 0x2 -modulate 70 -level 5%");
};
config = mkIf cfg.enable (mkMerge [
# Desktop-agnostic configuration
{
home.configFile = mkIf m.shell.tmux.enable {
"tmux/theme".source = ./config/tmux.conf;
};
modules.shell.zsh.rcFiles = [ ./config/zsh/prompt.zsh ];
}
# Desktop (X11) theming
(mkIf config.services.xserver.enable {
user.packages = with pkgs; [
unstable.dracula-theme
paper-icon-theme # for rofi
];
fonts.fonts = [ pkgs.jetbrains-mono ];
# Compositor
services.picom = {
fade = true;
fadeDelta = 1;
fadeSteps = [ 0.01 0.012 ];
shadow = true;
shadowOffsets = [ (-10) (-10) ];
shadowOpacity = 0.22;
# activeOpacity = "1.00";
# inactiveOpacity = "0.92";
settings = {
shadow-radius = 12;
# blur-background = true;
# blur-background-frame = true;
# blur-background-fixed = true;
blur-kern = "7x7box";
blur-strength = 320;
};
};
services.xserver.displayManager.lightdm = mkMerge [
# Login screen theme
{
greeters.mini.extraConfig = ''
text-color = "#ff79c6"
password-background-color = "#1E2029"
window-color = "#181a23"
border-color = "#181a23"
'';
}
(mkIf (cfg.loginWallpaper != null) {
background = cfg.loginWallpaper;
})
];
home.dataFile = mkIf (cfg.wallpaper != null) {
"wallpaper".source = cfg.wallpaper;
};
modules.desktop.browsers = {
firefox.userChrome = concatMapStringsSep "\n" readFile [
./config/firefox/userChrome.css
];
qutebrowser.userStyles = concatMapStringsSep "\n" toCSSFile [
./config/qutebrowser/github.scss
./config/qutebrowser/monospace-textareas.scss
./config/qutebrowser/quora.scss
./config/qutebrowser/stackoverflow.scss
./config/qutebrowser/xkcd.scss
./config/qutebrowser/youtube.scss
];
};
home.configFile = mkMerge [
{
# This is sourced in the displayManager (see
# modules/desktop/default.nix) to modularize my Xresources config.
"xtheme/90-theme".source = ./config/Xresources;
# GTK
"gtk-3.0/settings.ini".text = ''
[Settings]
gtk-theme-name=Dracula
gtk-icon-theme-name=Paper
gtk-fallback-icon-theme=gnome
gtk-application-prefer-dark-theme=true
gtk-cursor-theme-name=Paper
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=none
'';
# GTK2 global theme (widget and icon theme)
"gtk-2.0/gtkrc".text = ''
gtk-theme-name="Dracula"
gtk-icon-theme-name="Paper-Mono-Dark"
gtk-font-name="Sans 10"
'';
# QT4/5 global theme
"Trolltech.conf".text = "[Qt]\nstyle=Dracula";
}
(mkIf m.desktop.bspwm.enable {
"bspwm/rc.d/polybar".source = ./config/polybar/run.sh;
"bspwm/rc.d/theme".source = ./config/bspwmrc;
})
(mkIf m.desktop.apps.rofi.enable {
"rofi/theme" = { source = ./config/rofi; recursive = true; };
})
(mkIf (m.desktop.bspwm.enable || m.desktop.stumpwm.enable) {
"polybar" = { source = ./config/polybar; recursive = true; };
"dunst/dunstrc".source = ./config/dunstrc;
})
(mkIf m.desktop.media.graphics.vector.enable {
"inkscape/templates/default.svg".source = ./config/inkscape/default-template.svg;
})
];
})
]);
}