From b3e54574bccc9cfd57e9fce5b9c277588833286c Mon Sep 17 00:00:00 2001 From: Buliway Date: Tue, 27 Aug 2024 22:04:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=B0=D0=BB=20polybar=20=D0=B8=20sxhkd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/home-manager/wm/bspwm/bspwm.nix | 12 +- modules/home-manager/wm/polybar.nix | 619 ++++++++++++------------ modules/home-manager/wm/sxhkd.nix | 253 +++++++--- 3 files changed, 495 insertions(+), 389 deletions(-) diff --git a/modules/home-manager/wm/bspwm/bspwm.nix b/modules/home-manager/wm/bspwm/bspwm.nix index 3b4ee7d..3307d99 100644 --- a/modules/home-manager/wm/bspwm/bspwm.nix +++ b/modules/home-manager/wm/bspwm/bspwm.nix @@ -11,8 +11,16 @@ xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2 ''; + # Эти команды выполняются в конце bspwmrc + extraConfig = '' + for m in $(polybar --list-monitors | cut -d":" -f1); do + MONITOR=$m polybar --reload bottom & + done + ''; + startupPrograms = [ - # "lxqt-policykit-agent" # Заменил нагномовский + # "lxqt-policykit-agent" # Заменил на гномовский + "sxhkd" "nm-applet" "ksnip" # "nekoray" @@ -57,8 +65,10 @@ # "Polybar" = { layer = "below"; }; "Screenkey" = { manage = false; }; "gcolor3" = floating; + "obs" = floating; "steam" = floating; "steam:steamwebhelper:Steam" = { state = "tiled"; }; + "librewolf:librewolf:Save Image" = floating; "SshAskpass" = floating; "Nm-connection-editor" = floating; "ksnip" = floating1600x900; diff --git a/modules/home-manager/wm/polybar.nix b/modules/home-manager/wm/polybar.nix index 04808be..33e4d83 100644 --- a/modules/home-manager/wm/polybar.nix +++ b/modules/home-manager/wm/polybar.nix @@ -21,322 +21,309 @@ # double-click-middle # double-click-right -{ config, ... }: { # Статус бар внизу - services.polybar = { - enable = true; - script = '' - for m in $(polybar --list-monitors | cut -d":" -f1); do - MONITOR=$m polybar --reload bottom & - done +{ pkgs, config, ... }: { # Статус бар внизу + home.package = [ sxhkd ]; + + xdg.configFile."polybar/config.ini" = { + # executable = true; + text = '' + [bar/bottom] + monitor=$\{env:MONITOR:} + tray-position=right + + bottom=true + fixed-center=true + enable-ipc=true + double-click-interval=400 + offset-x=0 + offset-y=0 + + width=100% + height=16pt + radius=0 + dpi=0 + background=${config.lib.stylix.colors.base00} + foreground=${config.lib.stylix.colors.base07} + border-color=${config.lib.stylix.colors.base00} + border-size=4pt + module-margin=4pt + separator=| + separator-foreground=${config.lib.stylix.colors.base0F} + + modules-center=time + modules-left=bspwm title + modules-right=cpu memory alsa tray xkeyboard rofi + + wm-restack=bspwm + + font-0=NotoSans Nerd Font:style=Regular:size=12;3 + + ; Выблядки не могут юзать все Noto Sans при указании одного шрифта + font-1=Noto Sans:size=12;3 + font-2=Noto Sans CJK HK:size=12;3 + font-3=Noto Sans CJK JP:size=12;3 + font-4=Noto Sans CJK KR:size=12;3 + font-5=Noto Sans CJK SC:size=12;3 + font-6=Noto Sans CJK TC:size=12;3 + font-7=Noto Color Emoji:style=Regular:size=12;3 + font-8=Noto Sans Balinese:size=12;3 + font-9=Noto Sans Bamum:size=12;3 + font-10=Noto Sans Zanabazar Square:size=12;3 + font-11=Noto Sans Bassa Vah:size=12;3 + font-12=Noto Sans Batak:size=12;3 + font-13=Noto Sans Bengali:size=12;3 + font-14=Noto Sans Bhaiksuki:size=12;3 + font-15=Noto Sans Brahmi:size=12;3 + font-16=Noto Sans Buginese:size=12;3 + font-17=Noto Sans Buhid:size=12;3 + font-18=Noto Sans Canadian Aboriginal:size=12;3 + font-19=Noto Sans Carian:size=12;3 + font-20=Noto Sans Caucasian Albanian:size=12;3 + font-21=Noto Sans Chakma:size=12;3 + font-22=Noto Sans Cham:size=12;3 + font-23=Noto Sans Cherokee:size=12;3 + font-24=Noto Sans Chorasmian:size=12;3 + font-25=Noto Sans Adlam:size=12;3 + font-26=Noto Sans Anatolian Hieroglyphs:size=12;3 + font-27=Noto Sans Arabic:size=12;3 + font-28=Noto Sans Armenian:size=12;3 + font-29=Noto Sans Avestan:size=12;3 + font-30=Noto Sans Elymaic:size=12;3 + font-31=Noto Sans Coptic:size=12;3 + font-32=Noto Sans Cuneiform:size=12;3 + font-33=Noto Sans Cypriot:size=12;3 + font-34=Noto Sans Cypro Minoan:size=12;3 + font-35=Noto Sans Deseret:size=12;3 + font-36=Noto Sans Devanagari:size=12;3 + font-37=Noto Sans Duployan:size=12;3 + font-38=Noto Sans Egyptian Hieroglyphs:size=12;3 + font-39=Noto Sans Elbasan:size=12;3 + font-40=Noto Sans Hanunoo:size=12;3 + font-41=Noto Sans Ethiopic:size=12;3 + font-42=Noto Sans Georgian:size=12;3 + font-43=Noto Sans Glagolitic:size=12;3 + font-44=Noto Sans Gothic:size=12;3 + font-45=Noto Sans Grantha:size=12;3 + font-46=Noto Sans Gujarati:size=12;3 + font-47=Noto Sans Gunjala Gondi:size=12;3 + font-48=Noto Sans Gurmukhi:size=12;3 + font-49=Noto Sans Hanifi Rohingya:size=12;3 + font-50=Noto Sans Kawi:size=12;3 + font-51=Noto Sans Hatran:size=12;3 + font-52=Noto Sans Hebrew:size=12;3 + font-53=Noto Sans Imperial Aramaic:size=12;3 + font-54=Noto Sans Indic Siyaq Numbers:size=12;3 + font-55=Noto Sans Inscriptional Pahlavi:size=12;3 + font-56=Noto Sans Inscriptional Parthian:size=12;3 + font-57=Noto Sans Javanese:size=12;3 + font-58=Noto Sans Kaithi:size=12;3 + font-59=Noto Sans Kannada:size=12;3 + font-60=Noto Sans Linear B:size=12;3 + font-61=Noto Sans Kayah Li:size=12;3 + font-62=Noto Sans Kharoshthi:size=12;3 + font-63=Noto Sans Khmer:size=12;3 + font-64=Noto Sans Khojki:size=12;3 + font-65=Noto Sans Khudawadi:size=12;3 + font-66=Noto Sans Lao:size=12;3 + font-67=Noto Sans Lepcha:size=12;3 + font-68=Noto Sans Limbu:size=12;3 + font-69=Noto Sans Linear A:size=12;3 + font-70=Noto Sans Math:size=12;3 + font-71=Noto Sans Lisu:size=12;3 + font-72=Noto Sans Lycian:size=12;3 + font-73=Noto Sans Lydian:size=12;3 + font-74=Noto Sans Mahajani:size=12;3 + font-75=Noto Sans Malayalam:size=12;3 + font-76=Noto Sans Mandaic:size=12;3 + font-77=Noto Sans Manichaean:size=12;3 + font-78=Noto Sans Marchen:size=12;3 + font-79=Noto Sans Masaram Gondi:size=12;3 + font-80=Noto Sans Mono CJK HK:size=12;3 + font-81=Noto Sans Mayan Numerals:size=12;3 + font-82=Noto Sans Medefaidrin:size=12;3 + font-83=Noto Sans Meetei Mayek:size=12;3 + font-84=Noto Sans Mende Kikakui:size=12;3 + font-85=Noto Sans Meroitic:size=12;3 + font-86=Noto Sans Miao:size=12;3 + font-87=Noto Sans Modi:size=12;3 + font-88=Noto Sans Mongolian:size=12;3 + font-89=Noto Sans Mono:size=12;3 + font-90=Noto Sans Nandinagari:size=12;3 + font-91=Noto Sans Mono CJK JP:size=12;3 + font-92=Noto Sans Mono CJK KR:size=12;3 + font-93=Noto Sans Mono CJK SC:size=12;3 + font-94=Noto Sans Mono CJK TC:size=12;3 + font-95=Noto Sans Mro:size=12;3 + font-96=Noto Sans Multani:size=12;3 + font-97=Noto Sans Myanmar:size=12;3 + font-98=Noto Sans Nabataean:size=12;3 + font-99=Noto Sans Nag Mundari:size=12;3 + font-100=Noto Sans Old Permic:size=12;3 + font-101=Noto Sans Newa:size=12;3 + font-102=Noto Sans New Tai Lue:size=12;3 + font-103=Noto Sans NKo:size=12;3 + font-104=Noto Sans Nushu:size=12;3 + font-105=Noto Sans Ogham:size=12;3 + font-106=Noto Sans Ol Chiki:size=12;3 + font-107=Noto Sans Old Hungarian:size=12;3 + font-108=Noto Sans Old Italic:size=12;3 + font-109=Noto Sans Old North Arabian:size=12;3 + font-110=Noto Sans Pau Cin Hau:size=12;3 + font-111=Noto Sans Old Persian:size=12;3 + font-112=Noto Sans Old Sogdian:size=12;3 + font-113=Noto Sans Old South Arabian:size=12;3 + font-114=Noto Sans Old Turkic:size=12;3 + font-115=Noto Sans Oriya:size=12;3 + font-116=Noto Sans Osage:size=12;3 + font-117=Noto Sans Osmanya:size=12;3 + font-118=Noto Sans Pahawh Hmong:size=12;3 + font-119=Noto Sans Palmyrene:size=12;3 + font-120=Noto Sans Shavian:size=12;3 + font-121=Noto Sans Phags-Pa:size=12;3 + font-122=Noto Sans PhagsPa:size=12;3 + font-123=Noto Sans Phoenician:size=12;3 + font-124=Noto Sans Psalter Pahlavi:size=12;3 + font-125=Noto Sans Rejang:size=12;3 + font-126=Noto Sans Runic:size=12;3 + font-127=Noto Sans Samaritan:size=12;3 + font-128=Noto Sans Saurashtra:size=12;3 + font-129=Noto Sans Sharada:size=12;3 + font-130=Noto Sans Symbols 2:size=12;3 + font-131=Noto Sans Siddham:size=12;3 + font-132=Noto Sans SignWriting:size=12;3 + font-133=Noto Sans Sinhala:size=12;3 + font-134=Noto Sans Sogdian:size=12;3 + font-135=Noto Sans Sora Sompeng:size=12;3 + font-136=Noto Sans Soyombo:size=12;3 + font-137=Noto Sans Sundanese:size=12;3 + font-138=Noto Sans Syloti Nagri:size=12;3 + font-139=Noto Sans Symbols:size=12;3 + font-140=Noto Sans Telugu:size=12;3 + font-141=Noto Sans Syriac:size=12;3 + font-142=Noto Sans Tagalog:size=12;3 + font-143=Noto Sans Tagbanwa:size=12;3 + font-144=Noto Sans Tai Le:size=12;3 + font-145=Noto Sans Tai Tham:size=12;3 + font-146=Noto Sans Tai Viet:size=12;3 + font-147=Noto Sans Takri:size=12;3 + font-148=Noto Sans Tamil:size=12;3 + font-149=Noto Sans Tangsa:size=12;3 + font-150=Noto Sans Warang Citi:size=12;3 + font-151=Noto Sans Test:size=12;3 + font-152=Noto Sans Thaana:size=12;3 + font-153=Noto Sans Thai:size=12;3 + font-154=Noto Sans Tifinagh:size=12;3 + font-155=Noto Sans Tirhuta:size=12;3 + font-156=Noto Sans Ugaritic:size=12;3 + font-157=Noto Sans Vai:size=12;3 + font-158=Noto Sans Vithkuqi:size=12;3 + font-159=Noto Sans Wancho:size=12;3 + font-160=Noto Sans Yi:size=12;3 + + [module/alsa] + type=internal/alsa + master-soundcard=default + speaker-soundcard=default + headphone-soundcard=default + master-mixer=Master + interval=5 + format-volume= + format-muted= + label-muted= %percentage% + label-volume= %percentage% + click-right=exec pavucontrol + + [module/bspwm] + type=internal/bspwm + pin-workspaces=true + inline-mode=true + enable-click=true + enable-scroll=false + reverse-scroll=false + occupied-scroll=true + + ws-icon-1=1;1 + ws-icon-2=2;2 + ws-icon-3=3;3 + ws-icon-4=4;4 + ws-icon-5=5;5 + ws-icon-6=6;6 + ws-icon-7=7;7 + ws-icon-8=8;8 + ws-icon-9=9;9 + ws-icon-10=10;10 + + format= + + label-empty=%name% + label-empty-background=${config.lib.stylix.colors.base03} + label-empty-foreground=${config.lib.stylix.colors.base00} + label-empty-padding=5pt + + label-focused=%name% + label-focused-background=${config.lib.stylix.colors.base09} + label-focused-foreground=${config.lib.stylix.colors.base00} + label-focused-padding=5pt + + label-occupied=%name% + label-occupied-background=${config.lib.stylix.colors.base04} + label-occupied-foreground=${config.lib.stylix.colors.base00} + label-occupied-padding=5pt + + label-urgent=%name% + label-urgent-background=${config.lib.stylix.colors.base08} + label-urgent-foreground=${config.lib.stylix.colors.base00} + label-urgent-padding=5pt + + label-separator=" " + label-separator-foreground=${config.lib.stylix.colors.base00} + label-separator-padding=0 + + [module/cpu] + type=internal/cpu + interval=1 + warn-percentage=95 + label=CPU %percentage%% + label-warn=CPU %percentage%% + + [module/memory] + interval=5 + label=RAM: %gb_used% + %gb_swap_used% + type=internal/memory + + [module/rofi] + type=custom/text + click-left=exec rofi -show drun -show-icons + click-right=exec rofi -show powermenu -modi powermenu:${pkgs.rofi-power-menu}/bin/rofi-power-menu + label=" " + + [module/time] + type=internal/date + interval=1 + date=%d %B %Y + date-alt=%d-%m-%Y + time=%H:%M:%S + time-alt=%H:%M + label=%date% %time% + + [module/title] + type=internal/xwindow + label=%title% + label-maxlen=40 + label-foreground=${config.lib.stylix.colors.base07} + + [module/tray] + type=internal/tray + format= + tray-spacing=8px + tray-size=90% + + [module/xkeyboard] + type=internal/xkeyboard + format= + label-layout=%icon% + layout-icon-0=ru;RU + layout-icon-1=us;EN ''; - - settings = { # Или переимоневать в "config"? Не понял в чём разница - "bar/bottom" = { - monitor = "\${env:MONITOR:}"; - # monitor-strict = false; - # monitor-exact = true; - - bottom = true; - fixed-center = true; - enable-ipc = true; - double-click-interval = 400; - offset-x = 0; - offset-y = 0; - - width = "100%"; - height = "16pt"; - radius = 0; - dpi = 0; - background = config.lib.stylix.colors.base00; - foreground = config.lib.stylix.colors.base07; - border-color = config.lib.stylix.colors.base00; - border-size = "4pt"; - module-margin = "4pt"; - separator = "|"; - separator-foreground = config.lib.stylix.colors.base0F; - - modules-left = "bspwm title"; - modules-center = "time"; - modules-right = "cpu memory alsa tray xkeyboard rofi"; - wm-restack = "bspwm"; - - font-0 = "NotoSans Nerd Font:style=Regular:size=12;3"; - font-1 = "Noto Color Emoji:style=Regular:pixelsize=12;3"; - - # Я проклинал пидарасов, которые не могут юзать все Noto Sans при указании этого шрифта - font-2 = "Noto Sans:size=12;3"; - font-3 = "Noto Sans CJK HK:size=12;3"; - font-4 = "Noto Sans CJK JP:size=12;3"; - font-5 = "Noto Sans CJK KR:size=12;3"; - font-6 = "Noto Sans CJK SC:size=12;3"; - font-7 = "Noto Sans CJK TC:size=12;3"; - font-8 = "Noto Sans Balinese:size=12;3"; - font-9 = "Noto Sans Bamum:size=12;3"; - font-10 = "Noto Sans Zanabazar Square:size=12;3"; - font-11 = "Noto Sans Bassa Vah:size=12;3"; - font-12 = "Noto Sans Batak:size=12;3"; - font-13 = "Noto Sans Bengali:size=12;3"; - font-14 = "Noto Sans Bhaiksuki:size=12;3"; - font-15 = "Noto Sans Brahmi:size=12;3"; - font-16 = "Noto Sans Buginese:size=12;3"; - font-17 = "Noto Sans Buhid:size=12;3"; - font-18 = "Noto Sans Canadian Aboriginal:size=12;3"; - font-19 = "Noto Sans Carian:size=12;3"; - font-20 = "Noto Sans Caucasian Albanian:size=12;3"; - font-21 = "Noto Sans Chakma:size=12;3"; - font-22 = "Noto Sans Cham:size=12;3"; - font-23 = "Noto Sans Cherokee:size=12;3"; - font-24 = "Noto Sans Chorasmian:size=12;3"; - font-25 = "Noto Sans Adlam:size=12;3"; - font-26 = "Noto Sans Anatolian Hieroglyphs:size=12;3"; - font-27 = "Noto Sans Arabic:size=12;3"; - font-28 = "Noto Sans Armenian:size=12;3"; - font-29 = "Noto Sans Avestan:size=12;3"; - font-30 = "Noto Sans Elymaic:size=12;3"; - font-31 = "Noto Sans Coptic:size=12;3"; - font-32 = "Noto Sans Cuneiform:size=12;3"; - font-33 = "Noto Sans Cypriot:size=12;3"; - font-34 = "Noto Sans Cypro Minoan:size=12;3"; - font-35 = "Noto Sans Deseret:size=12;3"; - font-36 = "Noto Sans Devanagari:size=12;3"; - font-37 = "Noto Sans Duployan:size=12;3"; - font-38 = "Noto Sans Egyptian Hieroglyphs:size=12;3"; - font-39 = "Noto Sans Elbasan:size=12;3"; - font-40 = "Noto Sans Hanunoo:size=12;3"; - font-41 = "Noto Sans Ethiopic:size=12;3"; - font-42 = "Noto Sans Georgian:size=12;3"; - font-43 = "Noto Sans Glagolitic:size=12;3"; - font-44 = "Noto Sans Gothic:size=12;3"; - font-45 = "Noto Sans Grantha:size=12;3"; - font-46 = "Noto Sans Gujarati:size=12;3"; - font-47 = "Noto Sans Gunjala Gondi:size=12;3"; - font-48 = "Noto Sans Gurmukhi:size=12;3"; - font-49 = "Noto Sans Hanifi Rohingya:size=12;3"; - font-50 = "Noto Sans Kawi:size=12;3"; - font-51 = "Noto Sans Hatran:size=12;3"; - font-52 = "Noto Sans Hebrew:size=12;3"; - font-53 = "Noto Sans Imperial Aramaic:size=12;3"; - font-54 = "Noto Sans Indic Siyaq Numbers:size=12;3"; - font-55 = "Noto Sans Inscriptional Pahlavi:size=12;3"; - font-56 = "Noto Sans Inscriptional Parthian:size=12;3"; - font-57 = "Noto Sans Javanese:size=12;3"; - font-58 = "Noto Sans Kaithi:size=12;3"; - font-59 = "Noto Sans Kannada:size=12;3"; - font-60 = "Noto Sans Linear B:size=12;3"; - font-61 = "Noto Sans Kayah Li:size=12;3"; - font-62 = "Noto Sans Kharoshthi:size=12;3"; - font-63 = "Noto Sans Khmer:size=12;3"; - font-64 = "Noto Sans Khojki:size=12;3"; - font-65 = "Noto Sans Khudawadi:size=12;3"; - font-66 = "Noto Sans Lao:size=12;3"; - font-67 = "Noto Sans Lepcha:size=12;3"; - font-68 = "Noto Sans Limbu:size=12;3"; - font-69 = "Noto Sans Linear A:size=12;3"; - font-70 = "Noto Sans Math:size=12;3"; - font-71 = "Noto Sans Lisu:size=12;3"; - font-72 = "Noto Sans Lycian:size=12;3"; - font-73 = "Noto Sans Lydian:size=12;3"; - font-74 = "Noto Sans Mahajani:size=12;3"; - font-75 = "Noto Sans Malayalam:size=12;3"; - font-76 = "Noto Sans Mandaic:size=12;3"; - font-77 = "Noto Sans Manichaean:size=12;3"; - font-78 = "Noto Sans Marchen:size=12;3"; - font-79 = "Noto Sans Masaram Gondi:size=12;3"; - font-80 = "Noto Sans Mono CJK HK:size=12;3"; - font-81 = "Noto Sans Mayan Numerals:size=12;3"; - font-82 = "Noto Sans Medefaidrin:size=12;3"; - font-83 = "Noto Sans Meetei Mayek:size=12;3"; - font-84 = "Noto Sans Mende Kikakui:size=12;3"; - font-85 = "Noto Sans Meroitic:size=12;3"; - font-86 = "Noto Sans Miao:size=12;3"; - font-87 = "Noto Sans Modi:size=12;3"; - font-88 = "Noto Sans Mongolian:size=12;3"; - font-89 = "Noto Sans Mono:size=12;3"; - font-90 = "Noto Sans Nandinagari:size=12;3"; - font-91 = "Noto Sans Mono CJK JP:size=12;3"; - font-92 = "Noto Sans Mono CJK KR:size=12;3"; - font-93 = "Noto Sans Mono CJK SC:size=12;3"; - font-94 = "Noto Sans Mono CJK TC:size=12;3"; - font-95 = "Noto Sans Mro:size=12;3"; - font-96 = "Noto Sans Multani:size=12;3"; - font-97 = "Noto Sans Myanmar:size=12;3"; - font-98 = "Noto Sans Nabataean:size=12;3"; - font-99 = "Noto Sans Nag Mundari:size=12;3"; - font-100 = "Noto Sans Old Permic:size=12;3"; - font-101 = "Noto Sans Newa:size=12;3"; - font-102 = "Noto Sans New Tai Lue:size=12;3"; - font-103 = "Noto Sans NKo:size=12;3"; - font-104 = "Noto Sans Nushu:size=12;3"; - font-105 = "Noto Sans Ogham:size=12;3"; - font-106 = "Noto Sans Ol Chiki:size=12;3"; - font-107 = "Noto Sans Old Hungarian:size=12;3"; - font-108 = "Noto Sans Old Italic:size=12;3"; - font-109 = "Noto Sans Old North Arabian:size=12;3"; - font-110 = "Noto Sans Pau Cin Hau:size=12;3"; - font-111 = "Noto Sans Old Persian:size=12;3"; - font-112 = "Noto Sans Old Sogdian:size=12;3"; - font-113 = "Noto Sans Old South Arabian:size=12;3"; - font-114 = "Noto Sans Old Turkic:size=12;3"; - font-115 = "Noto Sans Oriya:size=12;3"; - font-116 = "Noto Sans Osage:size=12;3"; - font-117 = "Noto Sans Osmanya:size=12;3"; - font-118 = "Noto Sans Pahawh Hmong:size=12;3"; - font-119 = "Noto Sans Palmyrene:size=12;3"; - font-120 = "Noto Sans Shavian:size=12;3"; - font-121 = "Noto Sans Phags\-Pa:size=12;3"; - font-122 = "Noto Sans PhagsPa:size=12;3"; - font-123 = "Noto Sans Phoenician:size=12;3"; - font-124 = "Noto Sans Psalter Pahlavi:size=12;3"; - font-125 = "Noto Sans Rejang:size=12;3"; - font-126 = "Noto Sans Runic:size=12;3"; - font-127 = "Noto Sans Samaritan:size=12;3"; - font-128 = "Noto Sans Saurashtra:size=12;3"; - font-129 = "Noto Sans Sharada:size=12;3"; - font-130 = "Noto Sans Symbols 2:size=12;3"; - font-131 = "Noto Sans Siddham:size=12;3"; - font-132 = "Noto Sans SignWriting:size=12;3"; - font-133 = "Noto Sans Sinhala:size=12;3"; - font-134 = "Noto Sans Sogdian:size=12;3"; - font-135 = "Noto Sans Sora Sompeng:size=12;3"; - font-136 = "Noto Sans Soyombo:size=12;3"; - font-137 = "Noto Sans Sundanese:size=12;3"; - font-138 = "Noto Sans Syloti Nagri:size=12;3"; - font-139 = "Noto Sans Symbols:size=12;3"; - font-140 = "Noto Sans Telugu:size=12;3"; - font-141 = "Noto Sans Syriac:size=12;3"; - font-142 = "Noto Sans Tagalog:size=12;3"; - font-143 = "Noto Sans Tagbanwa:size=12;3"; - font-144 = "Noto Sans Tai Le:size=12;3"; - font-145 = "Noto Sans Tai Tham:size=12;3"; - font-146 = "Noto Sans Tai Viet:size=12;3"; - font-147 = "Noto Sans Takri:size=12;3"; - font-148 = "Noto Sans Tamil:size=12;3"; - font-149 = "Noto Sans Tangsa:size=12;3"; - font-150 = "Noto Sans Warang Citi:size=12;3"; - font-151 = "Noto Sans Test:size=12;3"; - font-152 = "Noto Sans Thaana:size=12;3"; - font-153 = "Noto Sans Thai:size=12;3"; - font-154 = "Noto Sans Tifinagh:size=12;3"; - font-155 = "Noto Sans Tirhuta:size=12;3"; - font-156 = "Noto Sans Ugaritic:size=12;3"; - font-157 = "Noto Sans Vai:size=12;3"; - font-158 = "Noto Sans Vithkuqi:size=12;3"; - font-159 = "Noto Sans Wancho:size=12;3"; - font-161 = "Noto Sans Yi:size=12;3"; - }; - - "module/rofi" = { - type = "custom/text"; - click-left = "exec rofi -show drun -show-icons"; - label = " "; - }; - - "module/bspwm" = { - type = "internal/bspwm"; - pin-workspaces = true; - inline-mode = true; - enable-click = true; - enable-scroll = false; - reverse-scroll = false; - occupied-scroll = true; - - ws-icon-1 = "1;1"; - ws-icon-2 = "2;2"; - ws-icon-3 = "3;3"; - ws-icon-4 = "4;4"; - ws-icon-5 = "5;5"; - ws-icon-6 = "6;6"; - ws-icon-7 = "7;7"; - ws-icon-8 = "8;8"; - ws-icon-9 = "9;9"; - ws-icon-10 = "10;10"; - - format = ""; - - label-empty = "%name%"; - label-empty-foreground = config.lib.stylix.colors.base00; - label-empty-background= config.lib.stylix.colors.base03; - label-empty-padding = "5pt"; - - label-focused = "%name%"; - label-focused-foreground = config.lib.stylix.colors.base00; - label-focused-background= config.lib.stylix.colors.base09; - label-focused-padding = "5pt"; - - label-occupied = "%name%"; - label-occupied-foreground = config.lib.stylix.colors.base00; - label-occupied-background= config.lib.stylix.colors.base04; - label-occupied-padding = "5pt"; - - label-urgent = "%name%"; - label-urgent-foreground = config.lib.stylix.colors.base00; - label-urgent-background= config.lib.stylix.colors.base08; - label-urgent-padding = "5pt"; - - label-separator = " "; - label-separator-padding = 0; - label-separator-foreground = config.lib.stylix.colors.base00; - }; - - "module/title" = { - type = "internal/xwindow"; - label = "%title%"; - label-maxlen = 40; - label-foreground = config.lib.stylix.colors.base07; - }; - - "module/time" = { - type = "internal/date"; - interval = 1; - date = "%d %B %Y"; - time = "%H:%M:%S"; - date-alt = "%d-%m-%Y"; - time-alt = "%H:%M"; - label = "%date% %time%"; - }; - - "module/xkeyboard" = { - type = "internal/xkeyboard"; - format = ""; - label-layout = "%icon%"; - layout-icon-0 = "ru;RU"; - layout-icon-1 = "us;EN"; - }; - - "module/tray" = { - type = "internal/tray"; - format = ""; - tray-spacing = "8px"; - tray-size = "90%"; - }; - - "module/alsa" = { - type = "internal/alsa"; - master-soundcard = "default"; - speaker-soundcard = "default"; - headphone-soundcard = "default"; - master-mixer = "Master"; - interval = 5; - format-volume = ""; - format-muted = ""; - label-volume = " %percentage%"; - label-muted = " %percentage%"; - click-right = "exec pavucontrol"; - }; - - "module/memory" = { - type = "internal/memory"; - interval = 5; - label = "RAM: %gb_used% + %gb_swap_used%"; - }; - - "module/cpu" = { - type = "internal/cpu"; - interval = 1; - warn-percentage = 95; - label = "CPU %percentage%%"; - label-warn = "CPU %percentage%%"; - }; - }; }; } diff --git a/modules/home-manager/wm/sxhkd.nix b/modules/home-manager/wm/sxhkd.nix index fbabead..749fe95 100644 --- a/modules/home-manager/wm/sxhkd.nix +++ b/modules/home-manager/wm/sxhkd.nix @@ -1,144 +1,253 @@ +# Бинды системы https://manpages.org/sxhkd + # Можно запускать софт через "${pkgs.betterlockscreen}/bin/betterlockscreen -l dimblur"; # Но мне лень столько текста делать. И так сойдёт # Стандартный конфиг https://github.com/baskerville/bspwm/blob/master/examples/sxhkdrc -let - notifyMute = ''dunstify -a "$(if [ "$(pamixer --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000''; - notifyMicMute = ''dunstify -a "$(if [ "$(pamixer --default-source --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000''; - notifyVolume = ''dunstify -a " Volume: $(pamixer --get-volume)" -r 91190 -t 800''; - # notifyMute = ''dunstify "t2" -a "$(if [ "$(pamixer --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000''; - # notifyMicMute = ''dunstify "t2" -a "$(if [ "$(pamixer --default-source --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000''; - # notifyVolume = ''dunstify "t2" -a " Volume: $(pamixer --get-volume)" -r 91190 -t 800''; - # Если указать "t2" перед "-a", то заголовок будет огромным. +{ pkgs, ... }: let + notifyMute = ''dunstify "$(if [ "$(pamixer --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000''; + notifyMicMute = ''dunstify "$(if [ "$(pamixer --default-source --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000''; + notifyVolume = ''dunstify " Volume: $(pamixer --get-volume)" -r 91190 -t 800''; # -r 91190: Это идентификатор уведомления (notification ID). Уведомления с одинаковым ID будут заменять друг друга. # -t 800: Это время в миллисекундах, через которое уведомление будет автоматически закрыто. terminalFirst = "alacritty"; terminalSecond = "kitty"; in { - services.sxhkd = { # Бинды системы https://manpages.org/sxhkd - enable = true; + home.package = [ sxhkd ]; - keybindings = { + xdg.configFile."sxhkd/sxhkdrc" = { + # executable = true; + text = '' ######################################################### ## bspwm (описание параметров есть в файле "bspwm.md") ## ######################################################### - "super + shift + ctrl + r" = "pkill -USR1 -x sxhkd; dunstify \"t2\" -a \"󰑓 Sxhkd reloaded\""; # Make sxhkd reload its config files - "super + shift + ctrl + alt + {q,r}" = "bspc {quit,wm -r}"; # Quit/Restart bspwm + # Make sxhkd reload its config files + super + shift + ctrl + r + pkill -USR1 -x sxhkd; dunstify "t2" -a "󰑓 Sxhkd reloaded" - # "super + return" = "bspc desktop -l next"; # Fullscreen toggle (немного не тот) - # "super + ctrl + {m,x,y,z}" = "bspc node -g {marked,locked,sticky,private}"; # Set the node flags + # Quit/Restart bspwm + super + shift + ctrl + alt + {q,r} + bspc {quit,wm -r} - "super + l" = "betterlockscreen -l dimblur"; # Lock screen - "super + q" = "bspc node -c"; # Quit. Закрыть приложение - "super + shift + q" = "bspc node -k"; # Kill. Убить приложение, если оно не отвечает - "super + f" = "bspc node -t ~floating"; # Floating toggle - "super + shift + f" = "bspc node -t ~tiled"; # Tiled toggle - "super + Return" = "bspc node -t ~fullscreen"; # Fullscreen toggle + # Fullscreen toggle (немного не тот) + # super + Return + # bspc desktop -l next + + # Set the node flags + # super + ctrl + {m,x,y,z} + # bspc node -g {marked,locked,sticky,private} + + # Lock screen + super + l + betterlockscreen -l dimblur + + # Quit. Закрыть приложение + super + q + bspc node -c + + # Kill. Убить приложение, если оно не отвечает + super + shift + q + bspc node -k + + # Floating toggle + super + f + bspc node -t ~floating + + # Tiled toggle + super + shift + f + bspc node -t ~tiled + + # Fullscreen toggle + super + Return + bspc node -t ~fullscreen # Перекидывает активное окно на предыдущий/следующий воркспейс и следует за ним - "super + ctrl + alt + {Left,Right}" = "bspc node -d {prev,next}.local --follow"; + super + ctrl + alt + {Left,Right} + bspc node -d {prev,next}.local --follow # Менять фокус приложения в указанном направлении - "super + {Left,Down,Up,Right}" = "bspc node -f {west,south,north,east}"; + super + {Left,Down,Up,Right} + bspc node -f {west,south,north,east} # Move a floating window - "super + alt + {Left,Down,Up,Right}" = "bspc node -v {-30 0,0 30,0 -30,30 0}"; + super + alt + {Left,Down,Up,Right} + bspc node -v {-30 0,0 30,0 -30,30 0} # Свапает активное окно с самым большим на экране - "super + ctrl + alt + Down" = "bspc node -s biggest.window --follow"; + super + ctrl + alt + Down + bspc node -s biggest.window --follow # Перемещает активное окно в указанном направлении (либо -s, чтоб менять соседние окна местами) - "super + shift + ctrl + {Left,Down,Up,Right}" = "bspc node -n {west,south,north,east}.window --follow"; + super + shift + ctrl + {Left,Down,Up,Right} + bspc node -n {west,south,north,east}.window --follow # Expand a window by moving one of its side outward - "super + shift + {Left,Down,Up,Right}" = "bspc node -z {left -30 0,bottom 0 30,top 0 -30,right 30 0}"; + super + shift + {Left,Down,Up,Right} + bspc node -z {left -30 0,bottom 0 30,top 0 -30,right 30 0} # Contract a window by moving one of its side inward - "super + shift + alt + {Left,Down,Up,Right}" = "bspc node -z {right -30 0,top 0 30,bottom 0 -30,left 30 0}"; + super + shift + alt + {Left,Down,Up,Right} + bspc node -z {right -30 0,top 0 30,bottom 0 -30,left 30 0} # Переключает на предыдущий/следующий воркспейс внутри одного монитора. - "super + ctrl + {Left,Right}" = "bspc desktop -f {prev,next}.local"; + super + ctrl + {Left,Right} + bspc desktop -f {prev,next}.local # Прошлый воркспейс внутри одного монитора. - "super + Escape" = "bspc desktop -f last.local"; + super + Escape + bspc desktop -f last.local # Focus or send to the given desktop - "super + {_,shift + }{1-9,0}" = "bspc {desktop -f,node -d} {1-9,10}.local"; + super + {_,shift + }{1-9,0} + bspc {desktop -f,node -d} {1-9,10}.local # Переключает на первый пустой воркспейс - "super + ctrl + Down" = "bspc desktop -f next.!occupied"; - - - + super + ctrl + Down + bspc desktop -f next.!occupied # Меняет позиционирование с горизонтального на вертикальный и обратно. Мб надо -R # (хуй, и то и то требует аргументы, а не делает toggle, и даже с аргументами нихуя не работает) - # "super + s" = "bspc node -F"; + # super + s + # bspc node -F ########## ## rofi ## ########## + + # Applications. Запускатор софта + super + a + rofi -show drun -show-icons - "super + a" = "rofi -show drun -show-icons"; # Applications. Запускатор софта - "super + c" = "rofi -show calc -modi calc -no-show-match -no-sort"; # Calculator имбовый. Можно даже написать `5600 USD to BTC` или `500 + 25%`. - "super + p" = "rofi-pass"; # Passwords. Пароли из утилиты pass - "super + v" = "clipmenu"; # История буфера обмена. Как ctrl+v, но через win. - #"super + tab" = ""; # Как alt+tab, переключение окон. На нужный воркспейс само перекинет - #"super + alt + t" = ""; # Timer. Думаю сделать через утилиту timer - #"super + shift + n" = ""; # Notification history. История оповещений. Мб не делать - #"super + backspace" = ""; # PowerMenu. Выключение пк + # Calculator имбовый. Можно даже написать `5600 USD to BTC` или `500 + 25%`. + super + c + rofi -show calc -modi calc -no-show-match -no-sort + + # Passwords. Пароли из утилиты pass + super + p + rofi-pass + + # История буфера обмена. Как ctrl+v, но через win. + super + v + clipmenu + + # Как alt+tab, переключение окон. На нужный воркспейс само перекинет + super + tab + rofi -show window -show-icons + + # PowerMenu. Выключение пк + super + BackSpace + rofi -show powermenu -modi powermenu:${pkgs.rofi-power-menu}/bin/rofi-power-menu + + # Timer. Думаю сделать через утилиту timer + # super + alt + t + # команда + + # Notification history. История оповещений. Мб не делать + # super + shift + n + # команда ################## ## applications ## ################## - "super + b" = "librewolf"; # Browser LibreWolf. Основа - "super + shift + b" = "firefox"; # Browser Firefox. Паблик активность - "super + shift + ctrl + b" = "chromium"; # Browser Chromium. Пусть будет - "super + n" = "obsidian"; # Note taking app (obsidian) - "super + e" = "thunar"; # Explorer. Thunar file manager - "super + i" = "code"; # IDE, text editor - "super + m" = "${terminalFirst} -e btop"; # Monitor of resources (btop) - "super + g" = "io.github.alainm23.planify"; # Goals. Todo manager. Task tracker - "super + shift + c" = "xcolor -s"; # Color picker. Получить hex в буфер обмена - "super + ctrl + c" = "xcolor -s -f rgb"; # Color picker. Получить rgb в буфер обмена + # Browser LibreWolf. Основа + super + b + librewolf + + # Browser Firefox. Паблик активность + super + shift + b + firefox + + # Browser Chromium. Пусть будет + super + shift + ctrl + b + chromium + + # Note taking app (obsidian) + super + n + obsidian + + # Explorer. Thunar file manager + super + e + thunar + + # IDE, text editor + super + i + code + + # Monitor of resources (btop) + super + m + ${terminalFirst} -e btop + + # Goals. Todo manager. Task tracker + super + g + io.github.alainm23.planify + + # Color picker. Получить hex в буфер обмена + super + shift + c + xcolor -s + + # Color picker. Получить rgb в буфер обмена + super + ctrl + c + xcolor -s -f rgb + ############## ## terminal ## ############## - "super + t" = terminalFirst; # Терминал alacritty - "super + shift + t" = "${terminalFirst} --class floating-terminal"; # Floating терминал alacritty в центре экрана 600x300px - "super + ctrl + t" = terminalSecond; # Tерминал kitty - "super + ctrl + shift + t" = "${terminalSecond} --class floating-terminal"; # Floating терминал kitty в центре экрана 600x300px + # Терминал alacritty + super + t + ${terminalFirst} + + # Floating терминал alacritty в центре экрана + super + shift + t + ${terminalFirst} --class floating-terminal + + # Терминал kitty + super + ctrl + t + ${terminalSecond} + + # Floating терминал kitty в центре экрана + super + ctrl + shift + t + ${terminalSecond} --class floating-terminal + ####################### ## Колдунские кнопки ## ####################### - # В pamixer для настроек микро надо добавлять "--default-source" + + # Toggle mute + XF86AudioMute + pamixer -t; ${notifyMute} - "XF86AudioMute" = "pamixer -t; ${notifyMute}"; # Toggle mute - "XF86AudioMicMute" = "pamixer --default-source -t; ${notifyMicMute}"; # Toggle microphone mute - "XF86Audio{Lower,Raise}Volume" = "pamixer -{d,i} 5; ${notifyVolume}"; # Decrease/Increase volume - "XF86Audio{Play,Pause}" = "playerctl play-pause"; # Play/Pause - "XF86Audio{Next,Prev}" = "playerctl {next,previous}"; # Next/Previous track + # Toggle microphone mute + XF86AudioMicMute + pamixer --default-source -t; ${notifyMicMute} + + # Decrease/Increase volume + XF86Audio{Lower,Raise}Volume + pamixer -{d,i} 5; ${notifyVolume} + + # Play/Pause + XF86Audio{Play,Pause} + playerctl play-pause + + # Next/Previous track + XF86Audio{Next,Prev} + playerctl {next,previous} # Простое редактирование яркости будет менять на 1% (Символ _ означает ничего, просто бинд яркости) # С зажатым шифтом будет редактировать яркость на 10% # С зажатой клавишей win будет менять между минимальным и максимальным значениями # Не знаю работает ли эта команда, у меня не ноут. Добавил как написано в "man sxhkd" - "{_,shift + ,super + }XF86MonBrightness{Down,Up}" = "bright {-1,-10,min,+1,+10,max}"; # Increase/Decrease brightness - - - ########### - ## other ## - ########### - - }; + # Increase/Decrease brightness + {_,shift + ,super + }XF86MonBrightness{Down,Up} + bright {-1,-10,min,+1,+10,max} + ''; }; }