mirror of
https://github.com/danth/stylix
synced 2024-11-10 06:34:15 +00:00
treewide: add support for fallback fonts
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.
This commit is contained in:
parent
c9c6134bbe
commit
9503b1e5d3
26 changed files with 141 additions and 72 deletions
|
@ -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;
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{ config, lib, options, ... }:
|
||||
|
||||
with config.lib.stylix.colors;
|
||||
with config.stylix.fonts;
|
||||
let
|
||||
aviOpacity = toString config.stylix.opacity.popups;
|
||||
in
|
||||
|
|
|
@ -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 = {
|
||||
|
@ -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)}'"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
with config.stylix.fonts;
|
||||
|
||||
let
|
||||
inherit (config.lib.formats.rasi) mkLiteral;
|
||||
mkRgba = opacity: color:
|
||||
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
@ -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}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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}
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
let colors = config.lib.stylix.colors.withHashtag;
|
||||
let
|
||||
colors = config.lib.stylix.colors.withHashtag;
|
||||
|
||||
inherit (config.stylix) fonts;
|
||||
inherit (fonts) sizes;
|
||||
|
||||
fontList = lib.strings.concatMapStringsSep ", " ({name,...}: "\"${name}\"") (fonts.monospace ++ fonts.emoji);
|
||||
in {
|
||||
options.stylix.targets.wezterm.enable =
|
||||
config.lib.stylix.mkEnableTarget "wezterm" config.programs.wezterm.enable;
|
||||
|
@ -47,7 +53,6 @@ in {
|
|||
};
|
||||
|
||||
xdg.configFile."wezterm/wezterm.lua".text = with colors;
|
||||
with config.stylix.fonts;
|
||||
lib.mkForce ''
|
||||
-- Generated by Stylix
|
||||
local wezterm = require("wezterm")
|
||||
|
@ -62,10 +67,7 @@ in {
|
|||
-- See https://github.com/wez/wezterm/issues/2615
|
||||
use_fancy_tab_bar = false,
|
||||
color_scheme = "stylix",
|
||||
font = wezterm.font_with_fallback {
|
||||
"${monospace.name}",
|
||||
"${emoji.name}",
|
||||
},
|
||||
font = wezterm.font_with_fallback { ${fontList} },
|
||||
font_size = ${builtins.toString sizes.terminal},
|
||||
window_background_opacity = ${
|
||||
builtins.toString config.stylix.opacity.terminal
|
||||
|
|
|
@ -6,7 +6,12 @@
|
|||
config.lib.stylix.mkEnableTarget "Xfce" false;
|
||||
|
||||
config = lib.mkIf config.stylix.targets.xfce.enable {
|
||||
xfconf.settings = with config.stylix.fonts; {
|
||||
xfconf.settings = let
|
||||
inherit (config.stylix) fonts;
|
||||
inherit (fonts) sizes;
|
||||
sansSerif = builtins.head fonts.sansSerif;
|
||||
monospace = builtins.head fonts.monospace;
|
||||
in {
|
||||
xfwm4 = {
|
||||
"general/title_font" = "${sansSerif.name} ${toString sizes.desktop}";
|
||||
};
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
{ config, lib, ... }:
|
||||
|
||||
{
|
||||
let
|
||||
inherit (config.stylix) fonts;
|
||||
inherit (fonts) sizes;
|
||||
monospace = builtins.head fonts.monospace;
|
||||
in {
|
||||
options.stylix.targets.xresources.enable =
|
||||
config.lib.stylix.mkEnableTarget "Xresources" true;
|
||||
|
||||
config = lib.mkIf config.stylix.targets.xresources.enable {
|
||||
xresources.properties = with config.lib.stylix.colors.withHashtag; with config.stylix.fonts; {
|
||||
xresources.properties = with config.lib.stylix.colors.withHashtag; {
|
||||
"*.faceName" = monospace.name;
|
||||
"*.faceSize" = sizes.terminal;
|
||||
"*.renderFont" = true;
|
||||
|
|
Loading…
Reference in a new issue