diff --git a/README.md b/README.md index cd9381b..abb4994 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ - [Проблемы](#проблемы) - [TODO](#todo) - [Описание](#описание) +- [Нюансы с JetBrains Toolbox](#нюансы-с-jetbrains-toolbox) - [Настройки для игр](#настройки-для-игр) - [MangeHud](#mangohud) - [gamemode](#gamemode) @@ -124,6 +125,13 @@ Надо сделать Nekoray нормально. Пока что только путь пидараса есть. Запускаешь `sudo ~/Downloads/VPN/nekoray-3.26-2023-12-09-linux-x64.AppImage`. В некобоксе офаешь у тян мода стрик роут. Систем тан. В меню жмёшь перезапустить прогу, она отлипла от терминала, перетащил на 10 воркспейс и сижу хуй сосу, ибо меня сайты в пермак кидают за такую хуйню +Надо добавить в polybar отображение: +- Заряд аккума. Сейчас проверить негде. Мб взять готовый вариант [тут](https://github.com/Zproger/bspwm-dotfiles/blob/main/config/polybar/modules.ini#L148) +- Яркость экрана. Тоже ноуты. Хз надо ли +- Температура и нагрузка на гп +- Температура цп +- Блютуз. Не знаю отображается ли он сейчас. Не могу проверить, негде + ## Описание Железо, на котором это работает: @@ -182,6 +190,22 @@ font = lib.mkForce "JetBrainsMono Nerd Font 11"; ip a ``` +## Нюансы с JetBrains Toolbox + +В стоке тулбокс может всегда разлогинивать. Я не проверял, сразу сделал как просили на вики, чтоб это исправить. + +Надо скачать тулбокс (уже стоит), запустить его один раз, а потом: +- Изменить `~/.local/share/JetBrains/Toolbox/.storage.json` и добавить строку `"preferredKeychain": "linux-fallback"` (у меня было в стоке) +- Залогиниться как обычно, но остановиться после того, как JetBrains вебсайт откроется +- Перезапустить JetBrains Toolbox, открыть настройки и нажать `"Troubleshoot..."` +- Следуй инструкциям по ручному входу в систему, как указано в руководстве + +После выполнения этих действий JetBrains Toolbox сохранит учетные данные пользователя в зашифрованном файле (со статическим ключом) по адресу `~/.local/share/JetBrains/Toolbox/.securestorage`. Если этого не сделать, JetBrains Toolbox не сможет получить учетные данные через `libsecret` (из-за bwrap sandboxing?) и постоянно уведомляет пользователя о необходимости повторной авторизации. + +Если что-то не работает, то мб помогут эти ссылки: +- https://nixos.wiki/wiki/Jetbrains_Tools +- https://github.com/NixOS/nixpkgs/issues/240444 + ## Настройки для игр Я установил `MangoHud`, `gamemode` и `gamescope`. Ещё есть `proton-ge` в steam. Всё это можно по разному комбинировать между собой. @@ -243,7 +267,7 @@ xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2 Дальше есть два способа. Оба нужны, чтоб заменить имя юзера на своё перед установкой моих дотсов. Для этого надо открыть файл `nixos/configuration.nix` и заменить переменную `username` на ник своего юзера. -Ещё надо изменить параметры мониторов в `modules/home-manager/wm/bspwm/bspwm.nix`. Для этого через xrandr надо узнать параметры мониторов +Ещё надо изменить параметры мониторов в `modules/home-manager/wm/bspwm/bspwm.nix`. Для этого через xrandr надо узнать параметры мониторов. Либо закомментить настройки мониторов и посмотреть как будет работать из коробки. Так же надо изменить gpu драйвера, если видеокарта не от amd. Самый простой вариант - закомментировать `videoDrivers` в `modules/nixos/xserver.nix` и `boot.initrd.kernelModules` в `modules/nixos/hardware.nix`. Мб он сам подберёт подходящий драйвер. Если же знаешь конкретные настройки, которые надо ставить, то пишешь их. diff --git a/modules/home-manager/bundle.nix b/modules/home-manager/bundle.nix index aed50bf..5def0cb 100644 --- a/modules/home-manager/bundle.nix +++ b/modules/home-manager/bundle.nix @@ -25,7 +25,7 @@ ./wm/rofi.nix ./wm/dunst.nix ./wm/lockscreen.nix - # ./wm/polybar.nix + ./wm/polybar.nix ./wm/sxhkd.nix ./mangohud.nix diff --git a/modules/home-manager/terminal/zsh.nix b/modules/home-manager/terminal/zsh.nix index 47534d9..7d40398 100644 --- a/modules/home-manager/terminal/zsh.nix +++ b/modules/home-manager/terminal/zsh.nix @@ -39,9 +39,9 @@ }; # Environment variables that will be set for zsh session. - # sessionVariables = { - # HISTORY_SUBSTRING_SEARCH_FUZZY = true; # Нечёткий поиск для стрелок вверх/вниз. Не работает - # }; + sessionVariables = { + HISTORY_SUBSTRING_SEARCH_FUZZY = "не работает блять"; # Нечёткий поиск для стрелок вверх/вниз. + }; # Extra commands that should be added to .zshrc # initExtra = '' diff --git a/modules/home-manager/wm/bspwm/bspwm.nix b/modules/home-manager/wm/bspwm/bspwm.nix index acbfdf3..e97c57a 100644 --- a/modules/home-manager/wm/bspwm/bspwm.nix +++ b/modules/home-manager/wm/bspwm/bspwm.nix @@ -47,7 +47,7 @@ rectangle = "900x600+0+0"; }; in { # А тут правила окон - "polybar" = { layer = "above"; }; + # "polybar" = { layer = "above"; }; "Screenkey" = { manage = false; }; "gcolor3" = { state = "floating"; }; "steam" = { state = "floating"; }; @@ -55,7 +55,8 @@ "SshAskpass" = { state = "floating"; }; "Nm-connection-editor" = { state = "floating"; }; "ksnip" = floating1600x900; - "ark" = floating1200x800; + # "ark" = floating1200x800; # Удалил, чтоб blowjob на экран не выдавало + "file-roller" = floating1200x800; "nekoray" = floating1200x800; "floating-terminal" = floating1200x800; "Kvantum Manager" = floating1200x800; diff --git a/modules/home-manager/wm/polybar.nix b/modules/home-manager/wm/polybar.nix index 1aec8f6..b5cd6f6 100644 --- a/modules/home-manager/wm/polybar.nix +++ b/modules/home-manager/wm/polybar.nix @@ -4,28 +4,12 @@ # Если указывать px, то это пиксели, логично # Интересные готовые скрипты для polybar https://github.com/polybar/polybar-scripts -# Указание цветов из темы stylix -# color0 = "${config.lib.stylix.colors.base00}"; -# В случае с gruvbox это будет цвет "#282828" -# Ниже цвета просто dark-meduim, после него material-dark-medium -# base00: "#282828" "#292828" -# base01: "#3c3836" "#32302f" -# base02: "#504945" "#504945" -# base03: "#665c54" "#665c54" -# base04: "#bdae93" "#bdae93" -# base05: "#d5c4a1" "#ddc7a1" -# base06: "#ebdbb2" "#ebdbb2" -# base07: "#fbf1c7" "#fbf1c7" -# base08: "#fb4934" "#ea6962" -# base09: "#fe8019" "#e78a4e" -# base0A: "#fabd2f" "#d8a657" -# base0B: "#b8bb26" "#a9b665" -# base0C: "#8ec07c" "#89b482" -# base0D: "#83a598" "#7daea3" -# base0E: "#d3869b" "#d3869b" -# base0F: "#d65d0e" "#bd6f3e" +# Если в трее не отображаются иконки, то вот вариант решения: +# Put `export XDG_DATA_DIRS=~/.nix-profile/share:$XDG_DATA_DIRS` in `/etc/profile` +# Взято отсюда https://www.reddit.com/r/voidlinux/comments/1apb5d0/comment/kqzabg6 -# Если в коммент коде цвет указан напрямую, то это дотсы zproger с левой темой +# При наведении на имя окна сделать скрол фул имени через zscroll +# Если лень не будет, то потом сделаю # Варианты кликов мыши # click-left @@ -37,32 +21,7 @@ # double-click-middle # double-click-right -{ config, ... }: let - gruvbox = { - black = "#000000"; - dark = "#1d1d1d"; - disabled = "${config.lib.stylix.colors.base00}"; # #282828 - red = "${config.lib.stylix.colors.base08}"; # #fb4934 - red-alt = "#b22222"; - orange = "${config.lib.stylix.colors.base09}"; # #fe8019 - orange-mat = "#e78a4e"; - yellow = "${config.lib.stylix.colors.base0A}"; # #fabd2f - yellow-mat = "#d8a657"; - green = "${config.lib.stylix.colors.base0B}"; # #b8bb26 - green-alt = "#98971a"; - aqua = "${config.lib.stylix.colors.base0C}"; # #8ec07c - aqua-alt = "#689d6a"; - blue = "#458588"; - blue-alt = "${config.lib.stylix.colors.base0D}"; # #83a598 - grey = "#313131"; - dark-grey = "#222222"; - cream = "${config.lib.stylix.colors.base07}"; # #fbf1c7 - white = "#FFFFFF"; - transparent = "#00000000"; - Stransparent = "#CC000000"; - }; -in -{ # Статус бар внизу +{ config, ... }: { # Статус бар внизу services.polybar = { enable = true; script = '' @@ -76,87 +35,214 @@ in ''; settings = { # Или переимоневать в "config"? Не понял в чём разница - # "colors" = {}; - - "global/wm" = { - margin-bottom = 0; - }; - - # bottom это просто имя, это не говорит бару быть внизу, можно написать что угодно "bar/bottom" = { - # monitor = "polybar -M | cut -d ':' -f 1"; # содержит список мониторов - # monitor-strict = false; # Require the monitor to be in connected state - # monitor-exact = true; # Зачем? Нечёткий поиск мониторов, если они называются по разному с разными драйверами - bottom = true; # Put the bar at the bottom of the screen - fixed-center = true; # Мидл модуль будет по центру экрана. При false будет между левым и правым модулями - enable-ipc = true; # Enable support for inter-process messaging - double-click-interval = 400; # If two clicks are received within this interval (ms), they are recognized as a double click. - offset-x = 0; # Offset the bar window in the x and/or y direction. - offset-y = 0; # Supports any percentage with offset relative to the monitor width or height + # monitor = "exec polybar -M | cut -d ':' -f 1"; + # monitor-strict = false; + # monitor-exact = true; - width = "100%"; # Ширина относительно ширины монитора - height = "20pt"; # Высота относительно высоты монитора. Не ебу что значит pt + 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 = 100; # Для ppi монитора - background = gruvbox.transparent; # Фон бара - foreground = gruvbox.cream; # Передний план - border-color = gruvbox.transparent; # Цвет контура - border-size = "3pt"; # Размер контура - module-margin = 0; # Margin to add before/after each module. Можно юзать module-margin-{left,right} - padding = "4pt"; # Padding to add at the beginning/end of the bar. Можно юзать padding-{left,right} - separator-foreground = gruvbox.transparent; - separator = " "; # The separator will be inserted between the output of each module - - # If you don't explicitly set the font-index for a tag, - # the bar will iterate the font list and pick the first one that is able to draw the character - font-0 = "Roboto condensed:size=11:weight=bold;2"; - font-1 = "Font Awesome 6 Free:pixelsize=11;2"; - font-2 = "Font Awesome 6 Free Solid:pixelsize=11;2"; - font-3 = "Font Awesome 6 Brands:pixelsize=11;2"; - font-4 = "JetBrainsMono Nerd Font Mono:size=24:weight=bold;5"; - font-5 = "Noto Sans:size=11:weight=bold;1"; # Мб надо добавить CJK версии + 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 pulseaudio tray xkeyboard rofi"; - # Для модула right ещё можно добавить следующие модули: - # "battery", "" - - # Restack the bar window and put it above the selected window manager's root - # Fixes the issue where the bar is being drawn on top of fullscreen window's - # Currently supported values: - # generic (Tries the ewmh strategy and falls back to the bottom strategy. - # This is a best-effort strategy and may change and be tweaked in - # the future, the individual strategies are available on their own) - # (New in version 3.6.0) - # (Changed in version 3.7.0: Tries the ewmh strategy instead of just the bottom strategy) - # bspwm (Moves the bar window above all bspwm root windows) - # bottom (Moves the bar window above the first window in the window stack. - # Works in xmonad, may not work on other WMs - # New in version 3.7.0) - # ewmh (Moves the bar above the window specified in _NET_SUPPORTING_WM_CHECK, if it is set - # New in version 3.7.0) - # i3 (requires `override-redirect = true`) + 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 = " "; - # click-right= exec ~/.config/i3/scripts/power.sh; - content-foreground = gruvbox.orange; - content-background = gruvbox.black; }; - "module/bspwm" = { # Воркспейсы bspwm + "module/bspwm" = { type = "internal/bspwm"; - pin-workspaces = true; # Only show workspaces defined on the same output as the bar - inline-mode = true; # Output mode flags after focused state label. Не понял что значит - enable-click = true; # Create click handler used to focus workspace - enable-scroll = false; # Create scroll handlers used to cycle workspaces - reverse-scroll = false; # Set the scroll cycle direction - occupied-scroll = true; # Only scroll through occupied workspaces + 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"; @@ -169,286 +255,92 @@ in ws-icon-9 = "9;9"; ws-icon-10 = "10;10"; - format = " "; # Это невозможно описать. Я сам не до конца понял + format = ""; - label-mode = "%mode%"; - label-mode-padding = 1; - label-mode-background = gruvbox.red-alt; - label-mode-foreground = gruvbox.white; + 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 = "%icon%"; - label-focused-font = 5; - label-focused-foreground = gruvbox.yellow; - label-focused-background = gruvbox.black; - label-focused-padding = 2; + label-focused = "%name%"; + label-focused-foreground = config.lib.stylix.colors.base00; + label-focused-background= config.lib.stylix.colors.base09; + label-focused-padding = "5pt"; - label-unfocused = "%icon%"; - label-unfocused-font = 5; - label-unfocused-foreground = gruvbox.cream; - label-unfocused-background= gruvbox.black; - label-unfocused-padding = 2; + label-occupied = "%name%"; + label-occupied-foreground = config.lib.stylix.colors.base00; + label-occupied-background= config.lib.stylix.colors.base04; + label-occupied-padding = "5pt"; - label-visible = "%icon%"; - label-visible-padding = 2; + label-urgent = "%name%"; + label-urgent-foreground = config.lib.stylix.colors.base00; + label-urgent-background= config.lib.stylix.colors.base08; + label-urgent-padding = "5pt"; - label-urgent = "%icon%"; - label-urgent-font = 5; - label-urgent-foreground = gruvbox.red-alt; - label-urgent-background = gruvbox.black; - label-urgent-padding = 2; - - label-separator = ""; + label-separator = " "; label-separator-padding = 0; - label-separator-foreground = gruvbox.transparent; + label-separator-foreground = config.lib.stylix.colors.base00; }; - "module/title" = { # Отображение имени окна + "module/title" = { type = "internal/xwindow"; - format-prefix = " "; - format-prefix-foreground = gruvbox.yellow-mat; - format-prefix-background = gruvbox.black; - label = "%title%"; - label-maxlen = 50; - label-foreground = gruvbox.cream; - label-background = gruvbox.dark; - label-padding-left = 2; - label-padding-right = 2; + label-maxlen = 40; + label-foreground = config.lib.stylix.colors.base07; }; - # %A: Полное название дня недели (например, "Monday") - # %d: День месяца в формате двух цифр (например, "01") - # %b или %B: Сокращённое или полное название месяца ("Jan", "January") - # %m: Месяц в формате двух цифр (например, "01" для января) "module/time" = { type = "internal/date"; interval = 1; - format-prefix = " "; - format-prefix-foreground = gruvbox.aqua; - format-prefix-background = gruvbox.black; - - # date = "%A %d %b %Y | %H:%M:%S"; date = "%d %B %Y"; time = "%H:%M:%S"; - date-alt = "%d-%m-%Y"; # If defined, clicking will toggle between formats - time-alt = "%H:%M"; # If defined, clicking will toggle between formats + date-alt = "%d-%m-%Y"; + time-alt = "%H:%M"; label = "%date% %time%"; - label-foreground = gruvbox.cream; - label-background = gruvbox.dark; - label-padding-left = 2; - label-padding-right = 2; }; "module/xkeyboard" = { type = "internal/xkeyboard"; - blacklist-0 = "num lock"; - blacklist-1 = "scroll lock"; - format = " "; - label-layout-padding = 1; - label-layout-foreground = gruvbox.cream; - label-indicator-on = "%name%"; - # layout-icon-default = "some-icon"; - layout-icon-0 = "RU"; - layout-icon-1 = "EN"; - label-indicator-on-capslock = "!"; - label-indicator-off-capslock = ""; - }; + format = ""; + label-layout = "%icon%"; + layout-icon-0 = "ru;RU"; + layout-icon-1 = "us;EN"; + }; - "module/tray" = { + "module/tray" = { type = "internal/tray"; format = ""; - format-prefix = "󱊖 "; - format-prefix-foreground = gruvbox.orange; - format-prefix-background = gruvbox.black; - - # tray-size = "66%"; # relative to bar height, non-negative tray-spacing = "8px"; - format-padding = "5px"; - format-background = gruvbox.black; - tray-background = gruvbox.black; - # tray-foreground = gruvbox.cream; # сам добавил + tray-size = "90%"; }; - "module/pulseaudio" = { - type = "internal/pulseaudio"; - # click-left = "exec pavucontrol"; - format-volume-prefix = " "; - format-volume-prefix-foreground = gruvbox.blue-alt; - format-volume-prefix-background= gruvbox.black; + "module/alsa" = { + type = "internal/alsa"; + master-soundcard = "default"; + speaker-soundcard = "default"; + headphone-soundcard = "default"; + master-mixer = "Master"; + interval = 5; format-volume = ""; - - label-volume = "%percentage%%"; - label-volume-foreground= gruvbox.cream; - label-volume-background= gruvbox.dark; - label-volume-padding-left=2; - label-volume-padding-right=2; - - format-muted-prefix = " "; - format-muted-foreground = gruvbox.orange; - format-muted-background = gruvbox.black; - - label-muted = "muted"; - label-muted-foreground = gruvbox.orange-mat; - label-muted-background = gruvbox.dark; - label-muted-padding = 2; + format-muted = ""; + label-volume = " %percentage%"; + label-muted = " %percentage%"; + click-right = "exec pavucontrol"; }; "module/memory" = { type = "internal/memory"; - interval = 1; - format-prefix = " "; - format-prefix-foreground = gruvbox.blue; - format-prefix-background = gruvbox.black; - - label = "RAM: %gb_used%/%gb_total% | SWAP: %gb_swap_used%/%gb_swap_total%"; - label-foreground = gruvbox.cream; - label-background = gruvbox.dark; - label-padding-left = 2; - label-padding-right = 2; + interval = 5; + label = "RAM: %gb_used% + %gb_swap_used%"; }; - # "module/battery" = { - # type = internal/battery; - # full-at = 98; - # low-at = 20; - # battery = "BAT0"; - # adapter = "ADP1"; - # poll-interval = 5; - # time-format = "%H:%M"; - - # format-charging = ""; - # # format-charging-foreground = gruvbox.green; - # # format-charging-background = gruvbox.black; - # label-charging = "%percentage%%"; - # # label-charging-foreground = gruvbox.cream; - # # label-charging-background = gruvbox.dark; - # label-charging-padding= 2; - - # format-discharging = ""; - # # format-discharging-foreground = gruvbox.green-alt; - # # format-discharging-background = gruvbox.black; - # label-discharging = "%percentage%%"; - # # label-discharging-foreground = gruvbox.cream; - # # label-discharging-background = gruvbox.dark; - # label-discharging-padding = 2; - - # format-full-prefix = "  "; - # # format-full-foreground = gruvbox.aqua; - # # format-full-background = gruvbox.black; - # label-full = "%percentage%%"; - # # label-full-foreground = gruvbox.cream; - # # label-full-background = gruvbox.dark; - # label-full-padding = 2; - - # label-low = "[ BATTERY LOW ] %percentage%%"; - # # label-low-foreground = gruvbox.black; - # # label-low-background = gruvbox.red-alt; - # label-low-padding = 2; - - # # Only applies if is used - # ramp-capacity-0 = "  "; - # ramp-capacity-1 = "  "; - # ramp-capacity-2 = "  "; - # ramp-capacity-3 = "  "; - # ramp-capacity-4 = "  "; - - # ramp-capacity-0-padding = 3; - # ramp-capacity-1-padding = 3; - # ramp-capacity-2-padding = 3; - # ramp-capacity-3-padding = 3; - # ramp-capacity-4-padding = 3; - - # # ramp-capacity-0-foreground = gruvbox.red-alt; - # # ramp-capacity-1-foreground = gruvbox.green-alt; - # # ramp-capacity-2-foreground = gruvbox.green-alt; - # # ramp-capacity-3-foreground = gruvbox.green-alt; - # # ramp-capacity-4-foreground = gruvbox.green-alt; - - # # ramp-capacity-0-background = gruvbox.black; - # # ramp-capacity-1-background = gruvbox.black; - # # ramp-capacity-2-background = gruvbox.black; - # # ramp-capacity-3-background = gruvbox.black; - # # ramp-capacity-4-background = gruvbox.black; - - # # Only applies if is used - # bar-capacity-width = 10; - - # # Only applies if is used - # animation-charging-0 = "  "; - # animation-charging-1 = "  "; - # animation-charging-2 = "  "; - # animation-charging-3 = "  "; - # animation-charging-4 = "  "; - # animation-charging-framerate = 750; - - # animation-charging-0-padding = 3; - # animation-charging-1-padding = 3; - # animation-charging-2-padding = 3; - # animation-charging-3-padding = 3; - # animation-charging-4-padding = 3; - - # # Animation-charging color - # # animation-charging-0-foreground = gruvbox.green; - # # animation-charging-1-foreground = gruvbox.green; - # # animation-charging-2-foreground = gruvbox.green; - # # animation-charging-3-foreground = gruvbox.green; - # # animation-charging-4-foreground = gruvbox.green; - - # # animation-charging-0-background = gruvbox.black; - # # animation-charging-1-background = gruvbox.black; - # # animation-charging-2-background = gruvbox.black; - # # animation-charging-3-background = gruvbox.black; - # # animation-charging-4-background = gruvbox.black; - - # # Only applies if is used; - # animation-discharging-0 = "[  ]"; - # animation-discharging-1 = "[  ]"; - # animation-discharging-2 = "[  ]"; - # animation-discharging-3 = "[  ]"; - # animation-discharging-4 = "[  ]"; - # animation-discharging-framerate = 500; - - # animation-discharging-0-padding = 1; - # animation-discharging-1-padding = 1; - # animation-discharging-2-padding = 1; - # animation-discharging-3-padding = 1; - # animation-discharging-4-padding = 1; - - # # Animation discharging color - # # animation-discharging-0-foreground = gruvbox.cream; - # # animation-discharging-1-foreground = gruvbox.cream; - # # animation-discharging-2-foreground = gruvbox.cream; - # # animation-discharging-3-foreground = gruvbox.cream; - # # animation-discharging-4-foreground = gruvbox.cream; - - # # animation-discharging-0-background = gruvbox.green-alt; - # # animation-discharging-1-background = gruvbox.green-alt; - # # animation-discharging-2-background = gruvbox.green-alt; - # # animation-discharging-3-background = gruvbox.green-alt; - # # animation-discharging-4-background = gruvbox.green-alt; - - # animation-low-0 = "!"; - # animation-low-1 = "!!"; - # animation-low-framerate = 200; - # }; - "module/cpu" = { type = "internal/cpu"; interval = 1; - # format-prefix = " "; - # format-prefix-foreground = gruvbox.orange-mat; - # format-prefix-background = gruvbox.black; warn-percentage = 95; - label = "CPU %percentage%%"; - label-foreground = gruvbox.cream; - label-background = gruvbox.dark; - label-padding-left = 2; - label-padding-right = 2; label-warn = "CPU %percentage%%"; }; }; }; } - -# При наведении на имя окна сделать скрол фул имени через zscroll diff --git a/modules/nixos/sound.nix b/modules/nixos/sound.nix index 047da8b..777b9de 100644 --- a/modules/nixos/sound.nix +++ b/modules/nixos/sound.nix @@ -8,6 +8,45 @@ pulse.enable = true; jack.enable = true; + wireplumber = { + enable = true; + # Запретить конкретному софту редактировать громкость микрофона + # Я рот ебал блядей, что делают мой микро тихим без моего разрешения + # В терминал `wpctl status`, найти нужное приложение в списке клиентов + # Потом `wpctl inspect номер-клиента | grep application.process.binary` + # `systemctl --user restart wireplumber pipewire pipewire-pulse` + # Доп ссылки по теме + # https://www.reddit.com/r/archlinux/comments/190dvl8/pipewirewayland_how_to_stop_applications_from/ + # https://askubuntu.com/questions/749407/is-there-any-way-to-prevent-application-from-changing-volume-level-of-my-microph + # https://www.linux.org/threads/prevent-applications-from-changing-microphone-gain.41636/ + # https://www.reddit.com/r/Ubuntu/comments/pvlm6r/how_to_disable_microphone_autoadjusting/ + extraScripts."99-stop-microphone-auto-adjust.lua" = '' + table.insert (default_access.rules,{ + matches = { + { + { "application.process.binary", "=", ".Discord-wrapped" } + }, + { + { "application.process.binary", "=", "chromium" } + }, + { + { "application.process.binary", "=", "librewolf" } + }, + { + { "application.process.binary", "=", "firefox" } + }, + { + { "application.process.binary", "=", "steam" } + }, + { + { "application.process.binary", "=", ".telegram-desktop-wrapped" } + } + }, + default_permissions = "rx", + }) + ''; + }; + # Ниже настройки имеют формат "число - название" # Число определяет приоритет настройки, а название описывает цель конфига extraConfig.pipewire = { @@ -15,7 +54,7 @@ context.properties = { default.clock.rate = 48000; # Ниже измени под свой пк. У меня цап поддерживает всё это. Можешь закомментить, если не знаешь что ставить - default.clock.allowed-rates = [ 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 ]; + default.clock.allowed-rates = "[ 44100 48000 88200 96000 176400 192000 352800 384000 705600 768000 ]"; }; }; # Ниже настройки для минимальной задержки в играх (например osu!stable через wine) diff --git a/modules/nixos/stylix.nix b/modules/nixos/stylix.nix index 362d5f6..931d3c0 100644 --- a/modules/nixos/stylix.nix +++ b/modules/nixos/stylix.nix @@ -35,7 +35,7 @@ # Без засечек sansSerif = { # default = DejaVu Sans package = pkgs.nerdfonts.override {fonts = ["Noto"];}; - name = "Noto Sans"; + name = "NotoSans Nerd Font"; }; # С засечками diff --git a/nixos/home.nix b/nixos/home.nix index 239413f..92c53fb 100644 --- a/nixos/home.nix +++ b/nixos/home.nix @@ -17,6 +17,7 @@ # будет пытаться установить расширения в каталог nix store, куда нельзя что либо ставить без рута. packages = with pkgs; [ vscode # Мб надо в home.packages писать, чтоб расширения ставились без рута + jetbrains-toolbox # Мб надо через home.packages писать ]; sessionVariables = { @@ -39,7 +40,7 @@ ## Блять как я вас ненавижу, хуесосы ## ############################################## - programs = { - btop.enable = true; - }; + # programs = { + # btop.enable = true; + # }; } diff --git a/nixos/packages.nix b/nixos/packages.nix index f3f1067..1678792 100644 --- a/nixos/packages.nix +++ b/nixos/packages.nix @@ -15,6 +15,8 @@ liberation_ttf dejavu_fonts cantarell-fonts + unifont + unifont_upper ]; systemd = { # Запуск гномовского полкита. Окно ввода пароля для рут доступа @@ -172,8 +174,7 @@ # pwvucontrol # Pipewire Volume Control (Не знаю может ли полностью заменить pavucontrol) networkmanagerapplet # Tray for network manager brightnessctl # Brightness control for laptop - gcolor3 # GUI color picker - xcolor # CLI color picker https://github.com/Soft/xcolor + gucharmap # Проверка шрифтов. Какой шрифт какие символы отображает ############## ## Browsers ## @@ -285,6 +286,8 @@ krita # Рисовать 1. Часто крашится gimp # Рисовать 2. Потом выберу что оставить blender-hip # 3д графика и рендер видео + gcolor3 # GUI color picker + xcolor # CLI color picker https://github.com/Soft/xcolor ################## ## Productivity ## @@ -300,7 +303,7 @@ # neovim # Мб не надо писать, он у меня необычный через nixvim flake # vscode # Мб надо в home.packages писать, чтоб расширения ставились без рута # vscodium # VSCode без телеметрии и прочего кала. Не имеет обратной совместимости с расширениями vscode - # jetbrains-toolbox # У меня крашит. Качай отдельно https://nixos.wiki/wiki/Jetbrains_Tools + # jetbrains-toolbox # У меня крашит ребилд. https://nixos.wiki/wiki/Jetbrains_Tools # jetbrains.webstorm # jetbrains.rust-rover # jetbrains.pycharm-professional @@ -316,6 +319,7 @@ libsForQt5.breeze-icons # qt5 kdePackages.breeze-icons # qt6 papirus-icon-theme + material-icons ############ ## Vulkan ## @@ -352,11 +356,9 @@ libva-utils # Проверяет работоспособность VAAPI? clinfo # Проверяет работоспособность OpenCL? libcap # Мб надо для nekoray - - polybar + libsecret # Хранить и получать аккаунты у приложений. Например для jetbrains toolbox + alsa-utils # Мне для команды amixer надо # lxqt.lxqt-policykit # Меню для воода пароля при запуске с правами админа. Пока юзаю от гнома ]; - - environment. }