Skip to content

Commit

Permalink
treewide: add support for fallback fonts
Browse files Browse the repository at this point in the history
This modifies the modules to add support for fallback fonts. Some of
them just use the default fonts (the first font in the list), some also
respect the fallback.
  • Loading branch information
jalil-salame committed May 5, 2024
1 parent 5f53889 commit 26fd862
Show file tree
Hide file tree
Showing 26 changed files with 141 additions and 72 deletions.
12 changes: 12 additions & 0 deletions modules/alacritty/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@

let
colors = config.lib.stylix.colors.withHashtag;
useYaml = (builtins.compareVersions config.programs.alacritty.package.version "0.13.0") < 0;
templateRepo = config.lib.stylix.templates.
"base16-alacritty${if useYaml then "-yaml" else ""}";

inherit (config.stylix) fonts;
inherit (fonts) sizes;

monospace = builtins.head fonts.monospace;

themeFile = config.lib.stylix.colors {
inherit templateRepo;
};
in
{
options.stylix.targets.alacritty.enable = config.lib.stylix.mkEnableTarget "Alacritty" true;
Expand Down
1 change: 0 additions & 1 deletion modules/avizo/hm.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{ config, lib, options, ... }:

with config.lib.stylix.colors;
with config.stylix.fonts;
let
aviOpacity = toString config.stylix.opacity.popups;
in
Expand Down
45 changes: 22 additions & 23 deletions modules/bemenu/hm.nix
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
{pkgs, config, lib, ... }:
{ pkgs, config, lib, ... }:

with config.lib.stylix.colors.withHashtag;
with config.stylix.fonts;
let
inherit (config.stylix) fonts;
inherit (fonts) sizes;
sansSerif = builtins.head fonts.sansSerif;
bemenuOpacity = lib.toHexString ((((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100));
in {
options.stylix.targets.bemenu = {
Expand All @@ -26,26 +28,23 @@ in {
};

config = lib.mkIf config.stylix.targets.bemenu.enable {
programs.bemenu.settings = with config.stylix.targets.bemenu; {
tb = "${base01}${bemenuOpacity}"; # Title bg
nb = "${base01}${bemenuOpacity}"; # Normal bg
fb = "${base01}${bemenuOpacity}"; # Filter bg
hb = "${base03}${bemenuOpacity}"; # Highlighted bg
sb = "${base03}${bemenuOpacity}"; # Selected bg
scb = "${base01}"; # Scrollbar bg

hf = "${base0A}"; # Highlighted fg
sf = "${base0B}"; # Selected fg
tf = "${base05}"; # Title fg
ff = "${base05}"; # Filter fg
nf = "${base05}"; # Normal fg
scf = "${base03}"; # Scrollbar fg

ab = "${if alternate then base00 else base01}"; # Alternate bg
af = "${if alternate then base04 else base05}"; # Alternate fg

# Font name
fn = "${sansSerif.name} ${lib.optionalString (fontSize != null) (builtins.toString fontSize)}";
};
home.sessionVariables.BEMENU_OPTS = with config.stylix.targets.bemenu; builtins.concatStringsSep " " [
# Inspired from https://git.sr.ht/~h4n1/base16-bemenu_opts
"--tb '${base01}${bemenuOpacity}'"
"--nb '${base01}${bemenuOpacity}'"
"--fb '${base01}${bemenuOpacity}'"
"--hb '${base03}${bemenuOpacity}'"
"--sb '${base03}${bemenuOpacity}'"
"--hf '${base0A}'"
"--sf '${base0B}'"
"--tf '${base05}'"
"--ff '${base05}'"
"--nf '${base05}'"
"--scb '${base01}'"
"--scf '${base03}'"
"--ab '${if alternate then base00 else base01}'"
"--af '${if alternate then base04 else base05}'"
"--fn '${sansSerif.name} ${lib.optionalString (fontSize != null) (builtins.toString fontSize)}'"
];
};
}
4 changes: 3 additions & 1 deletion modules/dunst/hm.nix
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
{ config, lib, ... }:

with config.lib.stylix.colors.withHashtag;
with config.stylix.fonts;
let
dunstOpacity = lib.toHexString ((((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100));
inherit (config.stylix) fonts;
inherit (fonts) sizes;
sansSerif = builtins.head sansSerif;
in {
options.stylix.targets.dunst.enable =
config.lib.stylix.mkEnableTarget "Dunst" true;
Expand Down
3 changes: 2 additions & 1 deletion modules/emacs/hm.nix
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
{ pkgs, config, lib, ... }:

with config.lib.stylix.colors.withHashtag;
with config.stylix.fonts;

let
inherit (config.stylix) fonts;
monospace = builtins.head fonts.monospace;
emacsOpacity = builtins.toString (builtins.ceil (config.stylix.opacity.applications * 100));
in
{
Expand Down
10 changes: 6 additions & 4 deletions modules/firefox/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

let
profileSettings = {
settings = {
"font.name.monospace.x-western" = config.stylix.fonts.monospace.name;
"font.name.sans-serif.x-western" = config.stylix.fonts.sansSerif.name;
"font.name.serif.x-western" = config.stylix.fonts.serif.name;
settings = let
inherit (config.stylix) fonts;
in {
"font.name.monospace.x-western" = (builtins.head fonts.monospace).name;
"font.name.sans-serif.x-western" = (builtins.head fonts.sansSerif).name;
"font.name.serif.x-western" = (builtins.head fonts.serif).name;
};
};
makeProfileSettingsPair = profileName:
Expand Down
7 changes: 5 additions & 2 deletions modules/foot/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ in {
config.programs.foot.settings = lib.mkIf cfg.enable {
main = {
include = theme;
font =
with config.stylix.fonts;
font = let
inherit (config.stylix) fonts;
inherit (fonts) sizes;
monospace = builtins.head fonts.monospace;
in
"${monospace.name}:size=${toString sizes.terminal}";
dpi-aware = "no";
};
Expand Down
7 changes: 5 additions & 2 deletions modules/fuzzel/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,11 @@ in {
border = "${base0D-hex}ff";
};

main = {
font = "${config.stylix.fonts.sansSerif.name}:size=${toString config.stylix.fonts.sizes.popups}";
main = let
inherit (config.stylix) fonts;
sansSerif = builtins.head fonts.sansSerif;
in {
font = "${sansSerif.name}:size=${toString fonts.sizes.popups}";
dpi-aware = "no";
};
};
Expand Down
9 changes: 7 additions & 2 deletions modules/gnome/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,13 @@ with lib;
picture-uri = "file://${config.stylix.image}";
picture-uri-dark = "file://${config.stylix.image}";
};

"org/gnome/desktop/interface" = with config.stylix.fonts ; {
"org/gnome/desktop/interface" = let
inherit (config.stylix) fonts;
inherit (fonts) sizes;
serif = builtins.head fonts.serif;
sansSerif = builtins.head fonts.sansSerif;
monospace = builtins.head fonts.monospace;
in {
# We show the same colours regardless of this setting, and the quick
# settings tile is removed. The value is still used by Epiphany to
# request dark mode for websites which support it.
Expand Down
6 changes: 5 additions & 1 deletion modules/grub/nixos.nix
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
{ pkgs, config, lib, ... }:

with config.lib.stylix;
with config.stylix.fonts;
with config.lib.stylix.colors.withHashtag;

let
inherit (config.stylix) fonts;
inherit (fonts) sizes;
monospace = builtins.head fonts.monospace;
sansSerif = builtins.head fonts.sansSerif;

# Grub requires fonts to be converted to "PFF2 format"
# This function takes a font { name, package } and produces a .pf2 file
mkGrubFont = font:
Expand Down
11 changes: 7 additions & 4 deletions modules/gtk/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,13 @@ in {
# programs.dconf.enable = true; required in system config
gtk = {
enable = true;
font = {
inherit (config.stylix.fonts.sansSerif) package name;
size = config.stylix.fonts.sizes.applications;
};
font = let
inherit (config.stylix) fonts;
sansSerif = builtins.head fonts.sansSerif;
in {
inherit (sansSerif) package name;
size = fonts.sizes.applications;
};
theme = {
package = pkgs.adw-gtk3;
name = "adw-gtk3";
Expand Down
4 changes: 2 additions & 2 deletions modules/i3/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ let
unfocused = base03;

fonts = let
fonts = config.stylix.fonts;
inherit (config.stylix) fonts;
in {
names = [ fonts.sansSerif.name ];
names = lib.catAttrs "name" fonts.sansSerif;
size = fonts.sizes.desktop * 1.0;
};

Expand Down
5 changes: 4 additions & 1 deletion modules/kde/hm.nix
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
{ pkgs, config, lib, ... }:

with config.stylix.fonts;
with config.lib.stylix.colors;

let
inherit (config.stylix) fonts;
inherit (fonts) sizes;
sansSerif = builtins.head fonts.sansSerif;
monospace = builtins.head fonts.monospace;
formatValue = value:
if builtins.isBool value
then if value then "true" else "false"
Expand Down
9 changes: 6 additions & 3 deletions modules/kitty/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@ in {

config = lib.mkIf cfg.enable {
programs.kitty = {
font = {
inherit (config.stylix.fonts.monospace) package name;
size = config.stylix.fonts.sizes.terminal;
font = let
inherit (config.stylix) fonts;
monospace = builtins.head fonts.monospace;
in {
inherit (monospace) package name;
size = fonts.sizes.terminal;
};
settings.background_opacity = with config.stylix.opacity; "${builtins.toString terminal}";
extraConfig = ''
Expand Down
2 changes: 1 addition & 1 deletion modules/kmscon/nixos.nix
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
config.lib.stylix.mkEnableTarget "the kmscon virtual console" true;

config.services.kmscon = lib.mkIf config.stylix.targets.kmscon.enable {
fonts = [config.stylix.fonts.monospace];
fonts = config.stylix.fonts.monospace;
extraConfig =
let
formatBase = name:
Expand Down
4 changes: 3 additions & 1 deletion modules/mako/hm.nix
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
{pkgs, config, lib, options, ... }:

with config.lib.stylix.colors.withHashtag;
with config.stylix.fonts;
let
inherit (config.stylix) fonts;
inherit(fonts) sizes;
sansSerif = builtins.head fonts.sansSerif;
makoOpacity = lib.toHexString ((((builtins.ceil (config.stylix.opacity.popups * 100)) * 255) / 100));
in {
options.stylix.targets.mako.enable =
Expand Down
6 changes: 5 additions & 1 deletion modules/qutebrowser/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,15 @@ let
inverted-foreground = base00;

error = base08;

info = base0B;
secondary-info = base0C;

warning = base0E;
inherit (config.stylix) fonts;
inherit (fonts) sizes;
serif = builtins.head fonts.serif;
sansSerif = builtins.head fonts.sansSerif;
monospace = builtins.head fonts.monospace;
in {
options.stylix.targets.qutebrowser.enable =
config.lib.stylix.mkEnableTarget "Qutebrowser" true;
Expand Down
6 changes: 4 additions & 2 deletions modules/rofi/hm.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
{ config, lib, ... }:

with config.stylix.fonts;

let
inherit (config.lib.formats.rasi) mkLiteral;
mkRgba = opacity: color:
Expand All @@ -14,6 +12,10 @@ let
mkLiteral
"rgba ( ${r}, ${g}, ${b}, ${opacity} % )";
mkRgb = mkRgba "100";
inherit (config.stylix) fonts;
inherit (fonts) sizes;
monospace = builtins.head fonts.monospace;

rofiOpacity = builtins.toString (builtins.ceil (config.stylix.opacity.popups * 100));
in
{
Expand Down
9 changes: 6 additions & 3 deletions modules/sway/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ let
focused = base0A;
unfocused = base03;

fonts = {
names = [ config.stylix.fonts.sansSerif.name ];
size = config.stylix.fonts.sizes.desktop + 0.0;
fonts = let
inherit (config.stylix) fonts;
inherit (fonts) sizes;
in {
names = lib.catAttrs "name" fonts.sansSerif;
size = sizes.desktop + 0.0;
};

in {
Expand Down
7 changes: 4 additions & 3 deletions modules/sxiv/hm.nix
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{ config, lib, ... }:

let
colors = config.lib.stylix.colors;
fonts = config.stylix.fonts;
inherit (config.lib.stylix) colors;
inherit (config.stylix) fonts;
sansSerif = builtins.head fonts.sansSerif;
in {
options.stylix.targets.sxiv.enable =
config.lib.stylix.mkEnableTarget "Sxiv" true;
Expand All @@ -12,7 +13,7 @@ in {
properties = {
"Sxiv.foreground" = "#${colors.base01}";
"Sxiv.background" = "#${colors.base04}";
"Sxiv.font" = "${fonts.sansSerif.name}-${toString fonts.sizes.applications}";
"Sxiv.font" = "${sansSerif.name}-${toString fonts.sizes.applications}";
};
};
};
Expand Down
6 changes: 4 additions & 2 deletions modules/vim/hm.nix
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,16 @@ let
};

vimOptions = let
fonts = config.stylix.fonts;
inherit (config.stylix) fonts;
inherit (fonts) sizes;
monospace = builtins.head fonts.monospace;
in {
plugins = [ themePlugin ];
extraConfig = ''
set termguicolors
colorscheme base16-stylix
unlet g:colors_name
set guifont=${escape [" "] fonts.monospace.name}:h${toString fonts.sizes.terminal}
set guifont=${escape [" "] monospace.name}:h${toString sizes.terminal}
'';
};

Expand Down
5 changes: 3 additions & 2 deletions modules/vscode/hm.nix
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
{pkgs, config, lib, ... }:

with config.stylix.fonts;

let
inherit (config.stylix) fonts;
monospace = builtins.head fonts.monospace;

themeFile = config.lib.stylix.colors {
template = ./template.mustache;
extension = ".json";
Expand Down
6 changes: 5 additions & 1 deletion modules/waybar/hm.nix
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
{ config, lib, ... }:
with config.lib.stylix.colors.withHashtag;
with config.stylix.fonts;
let
inherit (config.stylix) fonts;
inherit (fonts) sizes;

sansSerif = builtins.head fonts.sansSerif;

colorlessModules = place: ''
.modules-${place} #workspaces button {
border-bottom: 3px solid transparent;
Expand Down
Loading

0 comments on commit 26fd862

Please sign in to comment.