install.sh: install the SSH menu and its dependencies by default

fzf, tmux, jq, micro, nautilus, openssh-clients and friends are now part of
the default run, and ~/.ssh/sockets is always created. --full keeps the
remaining tools and the Flatpak apps. The menu's web action (Alt+W) falls
back to xdg-open when Chrome (Flatpak) is not installed.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-30 13:57:31 +05:00
co-authored by Claude Sonnet 5.5
parent 04e868102d
commit bbae1ab913
3 changed files with 33 additions and 23 deletions
+12 -10
View File
@@ -57,19 +57,21 @@ Host proxmox1
git clone git@git.ibrash.duckdns.org:aibrash/hyprland-rising.git git clone git@git.ibrash.duckdns.org:aibrash/hyprland-rising.git
cd hyprland-rising cd hyprland-rising
./install.sh --dry-run # посмотреть, что будет сделано, ничего не меняя ./install.sh --dry-run # посмотреть, что будет сделано, ничего не меняя
./install.sh # только визуальная часть ./install.sh # визуал + SSH-меню
./install.sh --full # визуал + инструменты и приложения ./install.sh --full # + остальные инструменты и приложения
``` ```
**По умолчанию — только визуал:** COPR `sachesi/hyprland` (в репозиториях Fedora Hyprland нет) и `avengemedia/dms`, **По умолчанию:** COPR `sachesi/hyprland` (в репозиториях Fedora Hyprland нет) и `avengemedia/dms`, затем
затем Hyprland, DMS (панель, лаунчер, уведомления, блокировка, обои, тема), шрифт JetBrains Mono, терминал kitty Hyprland, DMS (панель, лаунчер, уведомления, блокировка, обои, тема), шрифт JetBrains Mono, терминал kitty,
и конфиги: `hypr`, настройки DMS, `kitty`, `hyprland-session.target` (нужен порталам). **SSH-меню со всем, на чём оно держится** (fzf, tmux, jq, micro, nautilus для SFTP, `ssh-copy-id`, уведомления)
Приложения (Chrome, Telegram, Remmina, Nextcloud) не ставятся, кнопки сетевого редактора в панели не будет. и конфиги: `hypr`, настройки DMS, `kitty`, `hyprland-session.target` (нужен порталам). Создаётся `~/.ssh/sockets`.
Бинды на непоставленные программы просто ничего не делают.
**`--full` дополнительно** ставит инструменты, на которых держатся скрипты (fzf, tmux, jq, grim, slurp, tesseract, **Не ставится без `--full`:** Chrome, Telegram, Remmina, клиент Nextcloud (Flatpak), KeePassXC, OCR (tesseract),
nautilus, keepassxc, nm-connection-editor и др.), Flatpak-приложения (Chrome, Telegram, Remmina, клиент Nextcloud), скриншоты (grim, slurp), пипетка, сетевой редактор с кнопкой в панели (плагин `networkEditor`). Бинды на эти
плагин DMS `networkEditor` и создаёт `~/.ssh/sockets`. Это нужно для SSH-меню, OCR и биндов на приложения. программы остаются в конфиге и просто ничего не делают. `Alt+W` в SSH-меню открывает сайт хоста в браузере
по умолчанию, если Chrome (Flatpak) не установлен.
Сам `~/.ssh/config` и ключи в репозиторий не входят, их нужно перенести самому: меню читает ваш конфиг.
Существующие конфиги не затираются: они переносятся в `*.bak-<время>`, повторный запуск безопасен. Существующие конфиги не затираются: они переносятся в `*.bak-<время>`, повторный запуск безопасен.
`--yes` отключает вопросы, `--no-packages` и `--no-config` пропускают этапы. `--yes` отключает вопросы, `--no-packages` и `--no-config` пропускают этапы.
+3 -1
View File
@@ -156,7 +156,9 @@ cmd_web() { # open the host's web UI; first time asks for the URL and stores it
url=$(ask "web UI for $1" "$($H url-default "$1")"); [ -z "$url" ] && return url=$(ask "web UI for $1" "$($H url-default "$1")"); [ -z "$url" ] && return
$H set "$1" url "$url" $H set "$1" url "$url"
fi fi
setsid -f flatpak run com.google.Chrome "$url" >/dev/null 2>&1 # Chrome (Flatpak) if installed, otherwise the default browser
if flatpak info com.google.Chrome >/dev/null 2>&1; then setsid -f flatpak run com.google.Chrome "$url" >/dev/null 2>&1
else setsid -f xdg-open "$url" >/dev/null 2>&1; fi
} }
# ---------- dispatcher ---------- # ---------- dispatcher ----------
+18 -12
View File
@@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
# Установка райса на чистую Fedora (в том числе без Hyprland). # Установка райса на чистую Fedora (в том числе без Hyprland).
# #
# ./install.sh только визуальная часть: Hyprland, DMS, шрифты, терминал + конфиги # ./install.sh визуал (Hyprland, DMS, шрифт, терминал) + SSH-меню и всё, что ему нужно + конфиги
# ./install.sh --full + инструменты для скриптов/биндов (fzf, tmux, tesseract, …) и приложения (Flatpak) # ./install.sh --full + остальные инструменты (OCR и др.) и приложения (Chrome, Telegram, … через Flatpak)
# ./install.sh --dry-run только показать, что будет сделано (ничего не меняет) # ./install.sh --dry-run только показать, что будет сделано (ничего не меняет)
# ./install.sh --yes не задавать вопросов # ./install.sh --yes не задавать вопросов
# ./install.sh --no-packages / --no-config пропустить этап # ./install.sh --no-packages / --no-config пропустить этап
@@ -24,11 +24,14 @@ PKGS_HYPR=(hyprland hypridle hyprpolkitagent hyprland-guiutils
PKGS_SHELL=(dms) PKGS_SHELL=(dms)
# шрифт панели и терминал, wl-clipboard и brightnessctl нужны панели и затемнению экрана # шрифт панели и терминал, wl-clipboard и brightnessctl нужны панели и затемнению экрана
PKGS_VISUAL=(jetbrains-mono-fonts kitty wl-clipboard brightnessctl) PKGS_VISUAL=(jetbrains-mono-fonts kitty wl-clipboard brightnessctl)
# SSH-меню (Mod+S): fzf — интерфейс, tmux — broadcast и Alt+T, openssh-clients — ssh-copy-id, python3 — разбор
# ~/.ssh/config, libnotify — уведомления, micro — правка конфига (Alt+E), nautilus — SFTP (Alt+F);
# jq — Alt+Tab и «показать или запустить» (Mod+B/T/K); iputils, less, xdg-utils — пинг, вывод и браузер
PKGS_MENU=(fzf tmux jq python3 openssh-clients libnotify micro nautilus iputils less xdg-utils)
# --- только с --full --- # --- только с --full ---
PKGS_TOOLS=(hyprpicker hyprlock cliphist playerctl libnotify fzf tmux jq grim slurp PKGS_TOOLS=(hyprpicker hyprlock cliphist playerctl grim slurp keepassxc nm-connection-editor
nautilus keepassxc nm-connection-editor network-manager-applet pavucontrol fuzzel micro network-manager-applet pavucontrol fuzzel flatpak tesseract tesseract-langpack-eng
openssh-clients python3 flatpak tesseract tesseract-langpack-eng tesseract-langpack-rus tesseract-langpack-rus ImageMagick)
ImageMagick)
FLATPAKS=(com.google.Chrome org.telegram.desktop org.remmina.Remmina com.nextcloud.desktopclient.nextcloud) FLATPAKS=(com.google.Chrome org.telegram.desktop org.remmina.Remmina com.nextcloud.desktopclient.nextcloud)
c_hi=$'\e[1;38;2;233;30;99m'; c_dim=$'\e[2m'; c_err=$'\e[31m'; c_off=$'\e[0m' c_hi=$'\e[1;38;2;233;30;99m'; c_dim=$'\e[2m'; c_err=$'\e[31m'; c_off=$'\e[0m'
@@ -60,7 +63,7 @@ for d in hypr dms/plugins/networkEditor systemd/user kitty; do
done done
. /etc/os-release 2>/dev/null || true . /etc/os-release 2>/dev/null || true
info "система: ${PRETTY_NAME:-unknown}" info "система: ${PRETTY_NAME:-unknown}"
info "режим: $([ $FULL = 1 ] && echo 'полный (визуал + инструменты + приложения)' || echo 'только визуал')" info "режим: $([ $FULL = 1 ] && echo 'полный (+ инструменты и приложения)' || echo 'визуал + SSH-меню')"
if [ "${ID:-}" != fedora ]; then if [ "${ID:-}" != fedora ]; then
warn "это не Fedora: пакетный этап рассчитан на dnf и COPR" warn "это не Fedora: пакетный этап рассчитан на dnf и COPR"
[ $DO_PKG = 1 ] && { ask "продолжить всё равно?" || exit 1; } [ $DO_PKG = 1 ] && { ask "продолжить всё равно?" || exit 1; }
@@ -84,9 +87,11 @@ if [ $DO_PKG = 1 ]; then
run sudo dnf -y install "${PKGS_SHELL[@]}" run sudo dnf -y install "${PKGS_SHELL[@]}"
step "Шрифт, терминал и базовые утилиты оформления" step "Шрифт, терминал и базовые утилиты оформления"
run sudo dnf -y install "${PKGS_VISUAL[@]}" run sudo dnf -y install "${PKGS_VISUAL[@]}"
step "SSH-меню и навигация по окнам"
run sudo dnf -y install "${PKGS_MENU[@]}"
if [ $FULL = 1 ]; then if [ $FULL = 1 ]; then
step "Инструменты для скриптов и биндов" step "Остальные инструменты (OCR, скриншоты, пипетка и т. д.)"
run sudo dnf -y install --skip-unavailable "${PKGS_TOOLS[@]}" run sudo dnf -y install --skip-unavailable "${PKGS_TOOLS[@]}"
step "Flatpak-приложения: ${FLATPAKS[*]}" step "Flatpak-приложения: ${FLATPAKS[*]}"
info "Chrome, Telegram, Remmina и клиент Nextcloud используются в бинах и автозапуске." info "Chrome, Telegram, Remmina и клиент Nextcloud используются в бинах и автозапуске."
@@ -151,7 +156,7 @@ PY
info "systemd/user/hyprland-session.target (нужен порталам: выбор файлов, демонстрация экрана)" info "systemd/user/hyprland-session.target (нужен порталам: выбор файлов, демонстрация экрана)"
# каталог под ControlMaster, который использует ~/.ssh/config # каталог под ControlMaster, который использует ~/.ssh/config
[ $FULL = 1 ] && run install -d -m 700 "$HOME/.ssh" "$HOME/.ssh/sockets" run install -d -m 700 "$HOME/.ssh" "$HOME/.ssh/sockets"
fi fi
# ---------- итог ---------- # ---------- итог ----------
@@ -162,12 +167,13 @@ cat <<EOF
(именно Hyprland, не Hyprland (uwsm)). (именно Hyprland, не Hyprland (uwsm)).
2. Мониторы: в $CFG/hypr/hyprland.lua имена и масштаб заданы под ноутбук автора 2. Мониторы: в $CFG/hypr/hyprland.lua имена и масштаб заданы под ноутбук автора
(eDP-1, масштаб 1.25, HDMI-A-1). Свои смотрите командой: hyprctl monitors (eDP-1, масштаб 1.25, HDMI-A-1). Свои смотрите командой: hyprctl monitors
3. Справка по клавишам: Mod+F1. 3. SSH-меню (Mod+S) читает ваш ~/.ssh/config — перенесите его и ключи на этот ноутбук
(в репозиторий они сознательно не входят). Справка по клавишам: Mod+F1.
EOF EOF
if [ $FULL = 0 ]; then if [ $FULL = 0 ]; then
cat <<EOF cat <<EOF
Это визуальная установка: бинды на приложения (Chrome, Telegram, SSH-меню, OCR и т. д.) не будут Приложения и часть инструментов не ставились: бинды на Chrome, Telegram, KeePassXC и OCR
работать, пока вы не поставите эти программы. Всё сразу: ./install.sh --full ничего не делают, пока вы их не поставите. Всё сразу: ./install.sh --full
EOF EOF
fi fi
[ $DRY = 1 ] && info "это был --dry-run, запустите без него, чтобы применить." [ $DRY = 1 ] && info "это был --dry-run, запустите без него, чтобы применить."