From 00917c258f464f5106e4191afe6e000fe669fe6a Mon Sep 17 00:00:00 2001 From: Buliway Date: Mon, 5 Aug 2024 06:31:12 +0300 Subject: [PATCH] test3 --- README.md | 130 +++++++++++++++ flake.nix | 5 - modules/home-manager/browsers/chromium.nix | 2 +- modules/home-manager/browsers/firefox.nix | 61 +++---- modules/home-manager/browsers/librewolf.nix | 66 ++++---- modules/home-manager/bundle.nix | 2 + modules/home-manager/gui/vscode.nix | 25 +++ modules/home-manager/wm/bspwm/bspwm.md | 9 +- modules/home-manager/wm/bspwm/bspwmrc | 6 +- modules/home-manager/wm/polybar.nix | 4 +- modules/home-manager/wm/sxhkd.nix | 176 ++++++++++++++------ nixos/configuration.nix | 2 +- nixos/packages.nix | 9 +- 13 files changed, 355 insertions(+), 142 deletions(-) create mode 100644 modules/home-manager/gui/vscode.nix diff --git a/README.md b/README.md index db673e2..3691adc 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,133 @@ Это мои приватные дотсы Искать иконки для nerd шрифта можно [тут](https://www.nerdfonts.com/cheat-sheet). + +## Бинды + +Клавиша `Super` это клавиша `Win` + +| Bspwm | Описание | +| --------------------------------- | ------------------------------------------------------------------------------------------- | +| `Super + L` | Lock screen | +| `Super + Q` | Quit. Выключить приложение | +| `Super + Shift + Q` | Kill. Если приложение не отвечает, то убить его | +| `Super + F` | Floating toggle | +| `Super + Enter` | Fullscreen toggle | +| `Super + Esc` | Прошлый воркспейс. Желательно внутри одного монитора | +| `Super + ЛКМ` | Переместить окно | +| `Super + ПКМ` | Ресайзить окно | +| `Super + Scroll` | Скролишь колесо вверх = +1 воркспейс. Если вниз, то -1 | +| `Super + Arrows` | Менять фокус приложения в указанном направлении | +| `Super + 0-9` | Переключить воркспейс на 1-10. Если они общие на все моники, то добавить F1-F12 для 11-22 | +| `Super + Shift + 0-9` | Перекинуть активное окно на воркспейс. Желательно silent, чтоб меня не перекидывало к проге | +| `Super + Ctrl + Down` | Переключает на первый пустой воркспейс | +| `Super + Ctrl + Left/Right` | Переключает на предыдущий/следующий воркспейс. Тоесть делает -1 или +1 от текущего | +| `Super + Ctrl + Alt + Down` | Свапает активное окно с самым большим на экране | +| `Super + Ctrl + Alt + Left/Right` | Перекидывает активное окно на предыдущий/следующий воркспейс и следует за ним | +| `Super + Alt = Arrows` | Move floating window | +| `Super + Shift + Arrows` | Resize window на 30 пикселей в указанном направлении наружу | +| `Super + Shift + Alt + Arrows` | Resize window на 30 пикселей в указанном направлении внутрь | +| `Super + Shift + Ctrl + Arrows` | Перемещает активное окно в указанном направлении | +| `Super + S` | Split toggle. Меняет позиционирование с горизонтального на вертикальный и обратно. | +| `Super + Ctrl + Shift + R` | Make sxhkd reload its config files | +| `Super = Alt + Ctrn + Shift + R` | Restart bspwm | +| `Super = Alt + Ctrn + Shift + Q` | Quit bspwm | +| `Super + button{1-3}` | Move, resize_side, resize_corner | + +| Rofi | Описание | +| ------------------- | ---------------------------------------------------------------------------------------------- | +| `Super + A` | Applications. Запускатор софта | +| `Super + C` | Calculator имбовый. Можно даже написать `5600 USD to BTC` или `500 + 25%`. | +| `Super + P` | Passwords. Пароли из утилиты pass | +| `Super + V` | История буфера обмена. Как ctrl+v, но через win. | +| `Super + Tab` | Как alt+tab, переключение окон. На нужный воркспейс само перекинет | +| `Super + Alt + T` | Timer. Думаю сделать через утилиту timer | +| `Super + Shift + N` | Notification history. История оповещений. Мб сделать только в баре кнопку? Мб не делать вообще | +| `Super + Backspace` | PowerMenu. Выключение пк | + +| Applications | Описание | +| -------------------------- | ----------------------------------------- | +| `Super + B` | Browser LibreWolf. Основа | +| `Super + Shift + B` | Browser Firefox. Паблик активность | +| `Super + Shift + Ctrl + B` | Browser Chromium. Пусть будет | +| `Super + N` | Note taking app (obsidian) | +| `Super + E` | Explorer. Thunar file manager | +| `Super + I` | IDE, text editor, NeoVim | +| `Super + M` | Monitor of resources (btop) | +| `Super + G` | Goals. Todo manager. Task tracker | +| `Super + Shift + C` | Color picker. Получить hex в буфер обмена | +| `Super + Ctrl + C` | Color picker. Получить rgb в буфер обмена | + +| Terminal | Описание | +| -------------------------- | ---------------------------------------------------------------------------- | +| `Super + T` | Terminal основной | +| `Super + Shift + T` | Floating Terminal основной в центре экрана с размерами треть на треть экрана | +| `Super + Ctrl + T` | Terminal запасной | +| `Super + Shift + Ctrl + T` | Floating Terminal запасной в центре экрана с размерами треть на треть экрана | + +| Колдунские кнопки | Описание | +| ----------------------- | ---------------------- | +| `XF86AudioMute` | Toggle audio mute | +| `XF86AudioMicMute` | Toggle microphone mute | +| `XF86AudioLowerVolume` | Decrease volume | +| `XF86AudioRaiseVolume` | Increase volume | +| `XF86AudioPlay` | Play/pause | +| `XF86AudioPause` | Play/pause | +| `XF86AudioNext` | Next track | +| `XF86AudioPrev` | Previous track | +| `XF86MonBrightnessUp` | Increase brightness | +| `XF86MonBrightnessDown` | Decrease brightness | + +| Not sxhkd | Описание | +| --------------- | ---------------------- | +| `Print` | Выделить область | +| `Print + Alt` | Все мониторы целиком | +| `Print + Ctrl` | Активный монитор | +| `Print + Shift` | Активное окно | +| `CapsLock` | Switch keyboard layout | + +Так же есть бинд на зажим дальней боковой кнопки мыши. Если эту кнопку нажимать, то она работает как обычно. Если её зажать и начать двигать мышку, то вместо движения курсора будет плавный скрол. Обычно такое делают на трекболах без колеса мыши, но я люблю этот метод скрола на любом девайсе. Можно скролить с нужной скоростью и точностью куда надо без долгого кручения колеса. + + +## Иконки + +Соберу сюда список nerd иконок, которые могут пригодиться + + - CPU (мб не юзать, а писать текстом и cpu и gpu) + - RAM +󰪛 - CapsLock + или 󰌌 - Клавиатура +   - Громкость +󰃟 󰃞 󰃝 - Яркость +  󰸗 - Календарь +⏻ 󰐥  - Выключение пк + 󰀻  󰵆 - Приложения + 󰂯 󰂲 󰥰 󰦋 󰏳 󰦢 󰗾 󰗿 - Блютуз +󰈀  󰒍 - Network +  󱉧  - Clipboard +󰀦  󰀧 󰀨 󰅉 󰨱 󰵙  󰂚     - Оповещения (bell) +󰑓 󱄋 - Reload + +Wifi + 󰖩 󱚵 󱚽 󱚼 󰖪 󱛄 +󰤭 󰤨 󰤥 󰤢 󰤟 󰤯 󰤫 󰤮 + +Батарейки +     +󰁹 󰂂 󰂁 󰂀 󰁿 󰁾 󰁽 󰁼 󰁻 󰁺 󰂎 +󱊣 󱊢 󱊡 󰂎 +󰂃 󱉝 󰂑 + +Батарейки зарядка +󰂅 󰂋 󰂊 󰢞 󰂉 󰢝 󰂈 󰂇 󰂆 󰢜 󰢟 +󱊦 󱊥 󱊤 󰢟 +󰂄 + +Батарейки блютуз +󰥈 󰥆 󰥅 󰥄 󰥃 󰥂 󰥁 󰥀 󰤿 󰤾 +󰥇 󰥊 󰥉 + +Температура +󰔄 - Температура по цельсию +     +  diff --git a/flake.nix b/flake.nix index 8008600..1695486 100644 --- a/flake.nix +++ b/flake.nix @@ -19,11 +19,6 @@ # url = "github:fufexan/nix-gaming"; # inputs.nixpkgs.follows = "nixpkgs"; # }; - - # firefox-addons = { # Мб не пригодится. Мб сработает другой метод установки через параметр - # url = "gitlab:rycee/nur-expressions?dir=pkgs/firefox-addons"; - # inputs.nixpkgs.follows = "nixpkgs"; - # }; }; outputs = { self, nixpkgs, ... }@inputs: diff --git a/modules/home-manager/browsers/chromium.nix b/modules/home-manager/browsers/chromium.nix index 585ea19..7635ef7 100644 --- a/modules/home-manager/browsers/chromium.nix +++ b/modules/home-manager/browsers/chromium.nix @@ -2,6 +2,6 @@ programs.chromium = { enable = true; - # Настроить по фулам попробовать + # Пока что передумал настраивать браузер. Бекаплю каталог целиком }; } \ No newline at end of file diff --git a/modules/home-manager/browsers/firefox.nix b/modules/home-manager/browsers/firefox.nix index cb68650..a54740d 100644 --- a/modules/home-manager/browsers/firefox.nix +++ b/modules/home-manager/browsers/firefox.nix @@ -1,8 +1,8 @@ -{ inputs, ... }: { - programs.firefox = { +{ + programs.firefox = { # Пока что передумал настраивать браузер. Бекаплю каталог целиком enable = true; - profiles.buliway = { + # profiles.buliway = { # search = { # engines = { @@ -40,38 +40,29 @@ # } # ]; - # extensions = with inputs.firefox-addons.packages."x86_64-linux"; [ # Ты не активировал это во флейках - # bitwarden - # block-origin - # sponsorblock - # darkreader - # tridactyl - # youtube-shorts-block - # ]; + # nativeMessagingHosts.ff2mpv = true; # Чтоб ff2mpv работал - nativeMessagingHosts.ff2mpv = true; # Чтоб ff2mpv работал - - settings = { - # "extensions.autoDisableScopes" = 0; # To automatically enable extensions - "browser.bookmarks.openInTabClosesMenu" = false; - "browser.tabs.loadBookmarksInBackground" = true; - "layout.css.has-selector.enabled" = true; - # https://github.com/K3V1991/Disable-Firefox-Telemetry-and-Data-Collection - "browser.newtabpage.activity-stream.feeds.telemetry" = false; - "browser.newtabpage.activity-stream.telemetry" = false; - "datareporting.healthreport.uploadEnabled" = false; - "datareporting.policy.dataSubmissionEnabled" = false; - "toolkit.telemetry.archive.enabled" = false; - "toolkit.telemetry.bhrPing.enabled" = false; - "toolkit.telemetry.enabled" = false; - "toolkit.telemetry.firstShutdownPing.enabled" = false; - "toolkit.telemetry.newProfilePing.enabled" = false; - "toolkit.telemetry.reportingpolicy.firstRun" = false; - "toolkit.telemetry.server" = ""; - "toolkit.telemetry.shutdownPingSender.enabled" = false; - "toolkit.telemetry.unified" = false; - "toolkit.telemetry.updatePing.enabled" = false; - }; - }; + # settings = { + # # "extensions.autoDisableScopes" = 0; # To automatically enable extensions + # "browser.bookmarks.openInTabClosesMenu" = false; + # "browser.tabs.loadBookmarksInBackground" = true; + # "layout.css.has-selector.enabled" = true; + # # https://github.com/K3V1991/Disable-Firefox-Telemetry-and-Data-Collection + # "browser.newtabpage.activity-stream.feeds.telemetry" = false; + # "browser.newtabpage.activity-stream.telemetry" = false; + # "datareporting.healthreport.uploadEnabled" = false; + # "datareporting.policy.dataSubmissionEnabled" = false; + # "toolkit.telemetry.archive.enabled" = false; + # "toolkit.telemetry.bhrPing.enabled" = false; + # "toolkit.telemetry.enabled" = false; + # "toolkit.telemetry.firstShutdownPing.enabled" = false; + # "toolkit.telemetry.newProfilePing.enabled" = false; + # "toolkit.telemetry.reportingpolicy.firstRun" = false; + # "toolkit.telemetry.server" = ""; + # "toolkit.telemetry.shutdownPingSender.enabled" = false; + # "toolkit.telemetry.unified" = false; + # "toolkit.telemetry.updatePing.enabled" = false; + # }; + # }; }; } \ No newline at end of file diff --git a/modules/home-manager/browsers/librewolf.nix b/modules/home-manager/browsers/librewolf.nix index 1c0f65d..a24b649 100644 --- a/modules/home-manager/browsers/librewolf.nix +++ b/modules/home-manager/browsers/librewolf.nix @@ -1,43 +1,43 @@ { pkgs, ... }: { - programs.librewolf = { + programs.librewolf = { # Пока что передумал настраивать браузер. Бекаплю каталог целиком enable = true; - settings = { # Надо из about:config записать сюда свои изменения - "browser.bookmarks.openInTabClosesMenu" = false; # Не закрывать каталог закладок при открытии через СКМ? Не помню - "browser.tabs.loadBookmarksInBackground" = true; # Не перекидывать меня сразу на открытую закладку через СКМ? Не помню - "layout.css.has-selector.enabled" = true; # Некоторые кастом стили это требуют + # settings = { # Надо из about:config записать сюда свои изменения + # "browser.bookmarks.openInTabClosesMenu" = false; # Не закрывать каталог закладок при открытии через СКМ? Не помню + # "browser.tabs.loadBookmarksInBackground" = true; # Не перекидывать меня сразу на открытую закладку через СКМ? Не помню + # "layout.css.has-selector.enabled" = true; # Некоторые кастом стили это требуют - # General + # # General - # # Search (Если надо вернуть гугл поисковик в стоке) - # "browser.policies.runOncePerModification.extensionsUninstall" = [ # Удалить расширения - # "amazondotcom@search.mozilla.org" - # "ebay@search.mozilla.org" - # "twitter@search.mozilla.org" - # ]; - # "browser.policies.runOncePerModification.removeSearchEngines" = [ # Удалить поисковые движки - # "Amazon.com" - # "eBay" - # "Twitter" - # ]; - # "browser.policies.runOncePerModification.setDefaultSearchEngine" = "Google"; # Стандартный поисковик + # # # Search (Если надо вернуть гугл поисковик в стоке) + # # "browser.policies.runOncePerModification.extensionsUninstall" = [ # Удалить расширения + # # "amazondotcom@search.mozilla.org" + # # "ebay@search.mozilla.org" + # # "twitter@search.mozilla.org" + # # ]; + # # "browser.policies.runOncePerModification.removeSearchEngines" = [ # Удалить поисковые движки + # # "Amazon.com" + # # "eBay" + # # "Twitter" + # # ]; + # # "browser.policies.runOncePerModification.setDefaultSearchEngine" = "Google"; # Стандартный поисковик - # Privacy & Security + # # Privacy & Security - # LibreWolf - "clipboard.autocopy" = false; # Выкл копирование колесом мыши - "middlemouse.paste" = false; # Выкл копирование колесом мыши - "network.dns.disableIPv6" = true; # Выкл ivp6 - "privacy.resistFingerprinting" = false; # Лайтовое и мб не ломает работу сайтов - "privacy.fingerprintingProtection" = false; # Хардовее и может ломать работу сайтов? - "webgl.disabled" = false; # Включить WebGL + # # LibreWolf + # "clipboard.autocopy" = false; # Выкл копирование колесом мыши + # "middlemouse.paste" = false; # Выкл копирование колесом мыши + # "network.dns.disableIPv6" = true; # Выкл ivp6 + # "privacy.resistFingerprinting" = false; # Лайтовое и мб не ломает работу сайтов + # "privacy.fingerprintingProtection" = false; # Хардовее и может ломать работу сайтов? + # "webgl.disabled" = false; # Включить WebGL - # Extensions - "browser.policies.runOncePerModification.extensionsInstall" = [ # Установка расширений - "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi" # uBlock - "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger/latest.xpi" # Privacy Badger - ]; - }; + # # Extensions + # "browser.policies.runOncePerModification.extensionsInstall" = [ # Установка расширений + # "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi" # uBlock + # "https://addons.mozilla.org/firefox/downloads/latest/privacy-badger/latest.xpi" # Privacy Badger + # ]; + # }; }; # Чтоб ff2mpv работал. Не надо юзать их скрипт с гитхаба @@ -53,5 +53,5 @@ # ''; # Ниже сделать настройки расширений декларативными - # home.file.".config/starship.toml".source = ./starship.toml; + # home.file.".librewolf/?".source = ./?; } \ No newline at end of file diff --git a/modules/home-manager/bundle.nix b/modules/home-manager/bundle.nix index 875b62e..b46ed48 100644 --- a/modules/home-manager/bundle.nix +++ b/modules/home-manager/bundle.nix @@ -9,6 +9,8 @@ ./file-managers/thunar/thunar.nix ./file-managers/yazi/yazi.nix + ./gui/vscode.nix + ./imv/imv.nix ./mpv/mpv.nix ./obs/obs.nix diff --git a/modules/home-manager/gui/vscode.nix b/modules/home-manager/gui/vscode.nix new file mode 100644 index 0000000..a7bbc0e --- /dev/null +++ b/modules/home-manager/gui/vscode.nix @@ -0,0 +1,25 @@ +{ + programs.vscode = { + enable = true; + + extensions = [ + + ]; + + userSettings = { + "editor.fontFamily" = "JetBrainsMono Nerd Font"; + }; + + globalSnippets = {}; + + languageSnippets = {}; + + # keybindings = [ + # { + # key = "ctrl+c"; + # command = "editor.action.clipboardCopyAction"; + # when = "textInputFocus"; + # } + # ]; + }; +} \ No newline at end of file diff --git a/modules/home-manager/wm/bspwm/bspwm.md b/modules/home-manager/wm/bspwm/bspwm.md index 693b2c7..e0a8f40 100644 --- a/modules/home-manager/wm/bspwm/bspwm.md +++ b/modules/home-manager/wm/bspwm/bspwm.md @@ -288,8 +288,7 @@ Select a desktop. ``` DESKTOP_SEL := [DESKTOP_SEL#] - (CYCLE_DIR|any|last|newest|older|newer| - [MONITOR_SEL:](focused|^)||) + (CYCLE_DIR|any|last|newest|older|newer|[MONITOR_SEL:](focused|^)||) [.[!]focused] [.[!]active] [.[!]occupied] @@ -352,8 +351,7 @@ Select a monitor. ``` MONITOR_SEL := [MONITOR_SEL#] - (DIR|CYCLE_DIR|any|last|newest|older|newer|focused| - pointed|primary|^||) + (DIR|CYCLE_DIR|any|last|newest|older|newer|focused|pointed|primary|^||) [.[!]focused] [.[!]occupied] ``` @@ -681,8 +679,7 @@ Create a new rule. [layer=LAYER] [split_dir=DIR] [split_ratio=RATIO] - [(hidden|sticky|private|locked|marked|center| - follow|manage|focus|border)=(on|off)] + [(hidden|sticky|private|locked|marked|center|follow|manage|focus|border)=(on|off)] [rectangle=WxH+X+Y] ``` diff --git a/modules/home-manager/wm/bspwm/bspwmrc b/modules/home-manager/wm/bspwm/bspwmrc index 2bfa5aa..36f644b 100644 --- a/modules/home-manager/wm/bspwm/bspwmrc +++ b/modules/home-manager/wm/bspwm/bspwmrc @@ -1,8 +1,10 @@ #!/usr/bin/env bash +# Дефолт конфиг https://github.com/baskerville/bspwm/blob/master/examples/bspwmrc # Описание настроек можно найти тут https://manpages.debian.org/testing/bspwm/bspc.1.en.html # Или через "man bspc" в терминале # Или в ./bspwm.md +# https://my-take-on.tech/2020/07/03/some-tricks-for-sxhkd-and-bspwm/ ################ ## Автозапуск ## @@ -25,8 +27,6 @@ ## Настройки мониторов ## ######################### -# bspc monitor -d I II III IV V VI VII VIII IX X # Это было в стоке - # Получаем имена активных мониторов MONITORS=( $(xrandr --listactivemonitors | grep -E '^ [0-9]+:' | cut -d' ' -f6 | sed 's/\n/ /') ) @@ -89,3 +89,5 @@ bspc config focus_follows_pointer true bspc rule -a 'polybar' layer=above bspc rule -a Screenkey manage=off + +bspc rule -a floating-terminal state=floating center=true focus=on rectangle=600x300+0+0 diff --git a/modules/home-manager/wm/polybar.nix b/modules/home-manager/wm/polybar.nix index e0f160b..0338f2f 100644 --- a/modules/home-manager/wm/polybar.nix +++ b/modules/home-manager/wm/polybar.nix @@ -2,4 +2,6 @@ services.polybar = { enable = true; }; -} \ No newline at end of file +} + +# При наведении на имя окна сделать скрол фул имени через zscroll \ No newline at end of file diff --git a/modules/home-manager/wm/sxhkd.nix b/modules/home-manager/wm/sxhkd.nix index e1ec57b..887a536 100644 --- a/modules/home-manager/wm/sxhkd.nix +++ b/modules/home-manager/wm/sxhkd.nix @@ -1,65 +1,131 @@ -{ pkgs, ... }: let - mainTerminal = "${pkgs.alacritty}/bin/alacritty"; - secondTerminal = "${pkgs.kitty}/bin/kitty"; -in { - services.sxhkd = { # Бинды системы +# Можно запускать софт через "${pkgs.betterlockscreen}/bin/betterlockscreen -l dimblur"; +# Но мне лень столько текста делать. И так сойдёт + +# Удалить потом +# toggleMute = "pamixer -t; dunstify \"t2\" -a \"$(if [ \"$(pamixer --get-mute)\" = \"true\" ]; then echo \" Muted\"; else echo \" Unmuted\"; fi)\" -r 91190 -t 8000"; +# toggleMicMute = "pamixer --default-source -t; dunstify \"t2\" -a \"$(if [ \"$(pamixer --default-source --get-mute)\" = \"true\" ]; then echo \" Muted\"; else echo \" Unmuted\"; fi)\" -r 91190 -t 8000"; +# "XF86AudioMute" = toggleMute; # Toggle mute +# "XF86AudioMicMute" = toggleMicMute; # Toggle microphone mute +# "XF86AudioLowerVolume" = "pamixer -d 5; dunstify \"t2\" -a \" Volume: $(pamixer --get-volume)\" -r 91190 -t 800"; # Decrease volume +# "XF86AudioRaiseVolume" = "pamixer -i 5; dunstify \"t2\" -a \" Volume: $(pamixer --get-volume)\" -r 91190 -t 800"; # Increase volume + +let + # dunstify = "dunstify \"t2\" -a"; + # dunstifyMuteText = "\" = \"true\" ]; then echo \" Muted\"; else echo \" Unmuted\"; fi)\" -r 91190 -t 8000"; + # dunstifyMute = "${dunstify} \"$(if [ \"$(pamixer --get-mute)${dunstifyMuteText}"; + # dunstifyMicMute = "${dunstify} \"$(if [ \"$(pamixer --default-source --get-mute)${dunstifyMuteText}"; + # dunstifyVolume = "${dunstify} \" Volume: $(pamixer --get-volume)\" -r 91190 -t 800"; + + # Выше нечитабельный ад, который превращается в это + # dunstify "t2" -a "$(if [ "$(pamixer --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000 + # dunstify "t2" -a "$(if [ "$(pamixer --default-source --get-mute)" = "true" ]; then echo " Muted"; else echo " Unmuted"; fi)" -r 91190 -t 8000 + # dunstify "t2" -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", то заголовок будет огромным. + # -r 91190: Это идентификатор уведомления (notification ID). Уведомления с одинаковым ID будут заменять друг друга. + # -t 800: Это время в миллисекундах, через которое уведомление будет автоматически закрыто. + + terminalFirst = "alacritty"; + terminalSecond = "kitty"; +in { # https://github.com/baskerville/bspwm/blob/master/examples/sxhkdrc + services.sxhkd = { # Бинды системы https://manpages.org/sxhkd enable = true; keybindings = { - # bspwm - "super + q" = "oa"; + ######################################################### + ## bspwm (описание параметров есть в файле "bspwm.md") ## + ######################################################### - # rofi + "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 - # applications + # "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 + "super + l" = "betterlockscreen -l dimblur"; # Lock screen + "super + button{1-3}" = "bspc pointer -g {move,resize_side,resize_corner}"; # Двигать и ресайзить окно мышкой + "super + q" = "bspc node -c"; # Quit. Закрыть приложение + "super + shift + q" = "bspc node -k"; # Kill. Убить приложение, если оно не отвечает + "super + {f,return}" = "bspc node -t ~{floating,fullscreen}"; # Floating/Fullscreen toggle + "super + s" = "bspc node -F"; # Меняет позиционирование с горизонтального на вертикальный и обратно. Мб надо -R + "super + ctrl + alt + {left,right}" = "bspc node -d {next,prev}.local --follow"; # Перекидывает активное окно на предыдущий/следующий воркспейс и следует за ним + "super + {left,down,up,right}" = "bspc node -f {west,south,north,east}"; # Менять фокус приложения в указанном направлении + "super + alt + {left,down,up,right}" = "bspc node -v {-30 0,0 30,0 -30,30 0}"; # Move a floating window + "super + ctrl + alt + down" = "bspc node -s biggest.window --follow"; # Свапает активное окно с самым большим на экране + "super + shift + ctrl + {left,down,up,right}" = "bspc node -n {west,south,north,east} --follow"; # Перемещает активное окно в указанном направлении (не уверен сработает ли, мб надо -s) + "super + shift + {left,down,up,right}" = "bspc node -z {left -30 0,bottom 0 30,top 0 -30,right 30 0}"; # Expand a window by moving one of its side outward + "super + shift + alt + {left,down,up,right}" = "bspc node -z {right -30 0,top 0 30,bottom 0 -30,left 30 0}"; # Contract a window by moving one of its side inward + "super + ctrl + {left,right}" = "bspc desktop -f {prev,next}.local"; # Переключает на предыдущий/следующий воркспейс внутри одного монитора. + "super + escape" = "bspc desktop -f last.local"; # Прошлый воркспейс внутри одного монитора + "super + {_,shift + }{1-9,0}" = "bspc {desktop -f,node -d} '^{1-9,10}'"; # Focus or send to the given desktop + "super + ctrl + down" = "bspk desktop -f next.!occupied"; # Переключает на первый пустой воркспейс + + + ########## + ## rofi ## + ########## + + "super + a" = "rofi -show drun"; # Applications. Запускатор софта + #"super + c" = ""; # Calculator имбовый. Можно даже написать `5600 USD to BTC` или `500 + 25%`. + #"super + p" = ""; # Passwords. Пароли из утилиты pass + #"super + v" = ""; # История буфера обмена. Как ctrl+v, но через win. + #"super + tab" = ""; # Как alt+tab, переключение окон. На нужный воркспейс само перекинет + #"super + alt + t" = ""; # Timer. Думаю сделать через утилиту timer + #"super + shift + n" = ""; # Notification history. История оповещений. Мб не делать + #"super + backspace" = ""; # PowerMenu. Выключение пк + + ################## + ## 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" = "planify"; # Goals. Todo manager. Task tracker + "super + shift + c" = "xcolor -s"; # Color picker. Получить hex в буфер обмена + "super + ctrl + c" = "xcolor -s -f rgb"; # Color picker. Получить 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 + + ####################### + ## Колдунские кнопки ## + ####################### + + # В pamixer для настроек микро надо добавлять "--default-source" + + "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 + + # Простое редактирование яркости будет менять на 1% (Символ _ означает ничего, просто бинд яркости) + # С зажатым шифтом будет редактировать яркость на 10% + # С зажатой клавишей win будет менять между минимальным и максимальным значениями + # Не знаю работает ли эта команда, у меня не ноут. Добавил как написано в "man sxhkd" + "{_,shift + ,super + }XF86MonBrightness{Down,Up}" = "bright {-1,-10,min,+1,+10,max}"; # Increase/Decrease brightness + + + ########### + ## other ## + ########### - # terminal - "super + t" = mainTerminal; - "super ctrl + t" = secondTerminal; - # "super + shift + t" = mainTerminal; # Floating в центре экрана треть на треть или пиксели задать - # "super + shift + ctrl + t" = secondTerminal; # Floating в центре экрана треть на треть или пиксели задать }; }; } -# | Бинд | Описание | -# | ------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -# | `Print` | Выделить область | -# | `Print + Alt` | Все мониторы целиком | -# | `Print + Ctrl` | Активный монитор | -# | `Print + Shift` | Активное окно | -# | `Win + A` | Applications. Запускатор приложений. Rofi | -# | `Win + B` | Browser LibreWolf. Основа | -# | `Win + Shift + B` | Browser Firefox. Паблик активность | -# | `Win + Shift + Ctrl + B` | Browser Chromium. Пусть будет | -# | `Win + C` | Calculator имбовый. Можно даже написать `5600 USD to BTC` или `500 + 25%`. Через rofi | -# | `Win + Shift + C` | Color picker. Получить hex в буфер обмена | -# | `Win + Ctrl + C` | Color picker. Получить rgb в буфер обмена | -# | `Win + ЛКМ` | Переместить окно | -# | `Win + ПКМ` | Ресайзить окно | -# | `Win + scroll` | Скролишь колесо вверх = -1 воркспейс. Если вниз, то +1 | -# | `Win + 0-9/F1-F12` | Переключать воркспейсы с 1 по 22 | -# | `Win + Shift + 0-9/F1-F12` | Перекинуть активное окно на воркспейс с 1 по 22. Желательно silent, чтоб меня не перекидывало к проге | -# | `Win + arrow` | Менять фокус приложения через вин + стрелки | -# | `Win + Ctrl + left/right` | Переключает активные воркспейсы на мониторе. На левом 1 и 3, на правом 2 и 4. С 1 он делает +1 не на 2, а на 3 | -# | `Win + Ctrl + Down` | Переключиться на первый пустой воркспейс | -# | `Win + Shift + arrows` | Resize windows на 30 пикселей | -# | `Win + Shift + Ctrl + arrows` | Перемещает активное окно в указанном направлении | -# | `Win + Ctrl + Alt + left/right` | Как без альта, но не просто переключает, а перекидывает туда активное окно | -# | `Win + Enter` | Fullscreen toggle. Думал на F сделать, но не с моей раскладкой. Мб Alt + Enter | -# | `Win + Esc` | Прошлый воркспейс | -# | `Win + L` (мб с шифтом) | Lock screen | -# | `Win + P` | Passwords. Для утилиты pass всплывающее меню через rofi | -# | `Win + Q` | Quit. Офнуть приложение. Хз надо ли Alt + F4 добавлять | -# | `Win + V` | История буферa обмена (rofi) | -# | `Win + Alt + T` | Timer. Думаю через rofi сделать и утилиту timer | -# | `Win + I` | `I`DE? text `E`ditor? `N`ixVim? | -# | `Win + E` | `F`ile manager? `E`xplorer? | -# | `Win + F` | Toggle `f`loating. На f? сука не удобно на моей клаве | -# | Win + хз | Меняет позиционирование с горизонтального на вертикальный и обратно. Сейчас на `J`. Мб на `S`, от слова toggle split | -# | `Win + N` | `O`bsidian? `N`ote taking app? | -# | Win + хз | `T`odo. `T`ask tracker. Сука всё на Т, но не вариант. Либо с шифтом, либо придумать что-то типо `Z`адачи :D | -# | `Win + Backspace` | Launch logout menu. Через rofi | -# | `Ctrl + Shift + Esc` | Launch system monitor (btop) | -# | `Win + Tab` | Window switcher (rofi). Выбирать окно, а на нужный воркспейс само перекинет. Мб сделать alt+tab? | -# | `CapsLock` | Switch keyboard layout | diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 85578c9..3b2b8a3 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -32,7 +32,7 @@ in { isNormalUser = true; description = username; extraGroups = [ "networkmanager" "wheel" "input" "libvirtd" "storage" "docker" ]; - packages = with pkgs; []; + # packages = with pkgs; []; }; }; diff --git a/nixos/packages.nix b/nixos/packages.nix index d6a7a78..3aadaaf 100644 --- a/nixos/packages.nix +++ b/nixos/packages.nix @@ -5,6 +5,7 @@ services = { gvfs.enable = true; # Mount, trash, and other functionalities for Thunar file manager tumbler.enable = true; # Thumbnail support for Thunar file manager + unclutter.enable = true; # Enable unclutter to hide your mouse cursor when inactive greenclip.enable = true; # Clipboard manager. https://github.com/erebe/greenclip openssh.enable = true; # Потом удали. Это ставится на виртуалку, чтоб к ней конект по ssh работал. spice-vdagentd.enable = true; # Общий буфер обмена с виртуалкой @@ -28,6 +29,7 @@ xfconf.enable = true; # For Thunar configs }; + # Многое из этого продублировано в home-manager. Мне так удобней environment.systemPackages = with pkgs; [ # Это рекомендуют ставить не на всю систему, @@ -62,6 +64,7 @@ feh # Смотреть изображения. Вроде нужен в большом количестве софта как зависимость playerctl # Command-line utility and library for controlling media players that implement MPRIS xdotool # Fake keyboard/mouse input, window management, and more. Автоматизация + zscroll # A text scroller for use with panels and shells https://github.com/noctuid/zscroll pass # Менеджер паролей в терминале @@ -169,9 +172,9 @@ planify # Task manager # IDE (neovim мб не надо писать, он у меня необычный через nixvim flake) - vscode # TODO: Настройки надо сделать декларативными? - vscodium # TODO: Настройки надо сделать декларативными? - jetbrains-toolbox # TODO: Настройки надо сделать декларативными? + vscode + # vscodium # VSCode без телеметрии и прочего кала. Не имеет обратной совместимости с расширениями vscode + jetbrains-toolbox helix # A Kakoune / Neovim inspired editor, written in Rust. ];