#!/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/ ################ ## Автозапуск ## ################ # Это по сути терминал. Пишем то, как запускается прога через терминал и в конце & обязательно # # Как я понял, их не надо запускать, ведь они активированы через services..enable = true; # # Если в nixos что-то включается через services, а не через programs, то nixos сам отвечает за автозапуск сервисов # pgrep -x sxhkd > /dev/null || sxhkd & # Запускаем sxhkd если он не запущен # pgrep -x polybar > /dev/null || polybar & # Запускаем polybar если он не запущен # pgrep -x dunst > /dev/null || dunst & # Запускаем dunst если он не запущен # Изменить настройки для основного монитора. Мб вместе с --primary надо xrandr --output DisplayPort-2 --mode 1920x1080 --rate 165 # Изменить настройки для второго (правого) монитора xrandr --output HDMI-A-0 --mode 1920x1080 --rate 100 --right-of DisplayPort-2 ksnip & # nekoray & # obsidian & # planify & lxqt-policykit-agent & # Я ебал рот видеть инет в трее. Замени эту ёбань на rofi и отдельную кнопку в polybar nm-applet & ######################### ## Настройки мониторов ## ######################### # Получаем имена активных мониторов MONITORS=( $(xrandr --listactivemonitors | grep -E '^ [0-9]+:' | cut -d' ' -f6 | sed 's/\n/ /') ) # Если переменная MONITOR уже задана, то используется её значение. # Если она не задана (то есть пуста или не существует), то используется первый элемент из массива MONITORS (то есть, первый активный монитор). # Это гарантирует, что переменная MONITOR всегда будет содержать значение: либо установленное ранее, либо первый активный монитор по умолчанию. # ":-" Это оператор в Bash, который используется для установки значения по умолчанию. Если переменная не задана или пуста, используется значение после :- MONITOR="${MONITOR:-${MONITORS[0]}}" # Для запуска приложений на втором мониторе, если он доступен. Если второго монитора нет, используем первый. MONITOR2="${MONITORS[1]:-${MONITORS[0]}}" # # Устанавливаем рабочие столы с именами от 1 до 10 для каждого монитора for mon in ${MONITORS[@]}; do bspc monitor $mon -d {1,2,3,4,5,6,7,8,9,10} done # Устанавливаем рабочие столы с именами от 1 до 10 для каждого монитора #bspc monitor -d 1 2 3 4 5 6 7 8 9 10 # Можно заменить на {1,2,3,4,5,6,7,8,9,10} # Настройка автоматического удаления настроек для отключённых и отсоединённых мониторов bspc config remove_disabled_monitors false bspc config remove_unplugged_monitors false ##################### ## Настройки bspwm ## ##################### # Syntax - bspc config [-m MONITOR_SEL|-d DESKTOP_SEL|-n NODE_SEL] [] # Устанавливает ширину границ окон в 2 пикселя. bspc config border_width 2 # Задаёт расстояние между окнами (отступ) в 5 пикселей. bspc config window_gap 5 # Настраивает коэффициент разделения окон при их разделении. Значение 0.52 означает, что при разделении окно будет занимать 52% доступного пространства. bspc config split_ratio 0.52 # В режиме monocle (максимизация окна на весь экран) границы окон будут скрыты. bspc config borderless_monocle true # В режиме monocle будет отсутствовать отступ между окнами. bspc config gapless_monocle true # Eсли вы активируете режим "monocle" на одном мониторе, другие мониторы остаются в обычном режиме bspc config single_monocle false # Фокусировка следует за курсором bspc config focus_follows_pointer true ############################### ## Поведение конкретных окон ## ############################### # Yдаляет все существующие правила для всех окон # bspc rule -r '*' bspc rule -a "polybar" layer=above bspc rule -a "Screenkey" manage=off bspc rule -a "ksnip" state=floating center=true focus=on rectangle=1600x900+0+0 bspc rule -a "org.kde.ark" state=floating center=true focus=on rectangle=1200x800+0+0 bspc rule -a "floating-terminal" state=floating center=true focus=on rectangle=1200x800+0+0