Skip to content

Instantly share code, notes, and snippets.

@ponfertato
Last active January 23, 2026 07:43
Show Gist options
  • Select an option

  • Save ponfertato/1d38d07bea0e347c28f5be44aa488ffd to your computer and use it in GitHub Desktop.

Select an option

Save ponfertato/1d38d07bea0e347c28f5be44aa488ffd to your computer and use it in GitHub Desktop.
Набор оптимизированных .desktop файлов для NixOS (Flake) + KDE Plasma: запуск AppImage приложений, OpenSeeFace (трекер лица для VTube Studio), и мультиклиент VPN (v2rayN/FlClash/Karing) с выбором из меню. Все файлы полностью автономные, без внешних скриптов, с поддержкой русской локализации и контекстными действиями.
#!/usr/bin/env xdg-open
[Desktop Entry]
Actions=OpenDirectory;CreateDirectory;
Categories=Utility;System;
Comment[ru_RU]=Управление AppImage приложениями в NixOS
Comment=Управление AppImage приложениями в NixOS
Exec=konsole --hold -e bash -c 'APP_DIR="$HOME/Документы/Программы"; [ -d "$APP_DIR" ] || { echo "Папка не существует: $APP_DIR"; read -p "Нажмите Enter для выхода..."; exit 1; }; shopt -s nullglob; appimages=("$APP_DIR"/*.appimage); [ ${#appimages[@]} -eq 0 ] && { echo "Нет AppImage файлов в папке"; read -p "Нажмите Enter для выхода..."; exit 1; }; PS3="Выберите приложение: "; select app in "${appimages[@]##*/}"; do [ -n "$app" ] && break; echo "Неверный выбор"; done; echo "Запуск: ${app%.appimage}"; nix --extra-experimental-features nix-command --extra-experimental-features flakes shell nixpkgs#appimage-run --command appimage-run "$APP_DIR/$app"'
GenericName[ru_RU]=
GenericName=
Icon=system-run-symbolic
Keywords[ru_RU]=AppImage;Запуск;NixOS;Flake;
Keywords=AppImage;Launcher;NixOS;Flake;
MimeType=
Name[ru_RU]=Запуск AppImage
Name=Запуск AppImage
Path=
StartupNotify=true
StartupWMClass=konsole
Terminal=false
TerminalOptions=
Type=Application
Version=1.0
X-KDE-SubstituteUID=false
X-KDE-Username=
[Desktop Action CreateDirectory]
Exec=konsole --hold -e bash -c 'APP_DIR="$HOME/Документы/Программы"; mkdir -p "$APP_DIR" && echo "Папка создана: $APP_DIR" || echo "Ошибка создания папки"; read -p "Нажмите Enter для выхода..."'
Name[ru_RU]=Создать папку
Name=Создать папку
[Desktop Action OpenDirectory]
Exec=konsole --hold -e bash -c 'APP_DIR="$HOME/Документы/Программы"; if [ -d "$APP_DIR" ]; then cd "$APP_DIR"; ls -1 *.appimage 2>/dev/null | cat; else echo "Папка не существует"; fi; echo; read -p "Нажмите Enter для выхода..."'
Name[ru_RU]=Открыть папку
Name=Открыть папку
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Name=Nix Package Launcher
Name[ru]=Запуск пакетов Nix
Comment=Универсальный запуск пакетов из любого канала Nix
Comment[ru]=Универсальный запуск пакетов из любого канала Nix
Exec=konsole --hold -e bash -c 'while true; do clear; echo "=== Запуск пакета из Nix ==="; echo; echo "1) nixos-25.11 (stable)"; echo "2) nixos-unstable"; echo "3) Своя версия"; echo; while true; do read -p "Выберите канал (1-3): " channel_choice; case $channel_choice in 1) channel="nixpkgs/nixos-25.11"; break;; 2) channel="nixpkgs/nixos-unstable"; break;; 3) read -p "Введите канал (например: github:NixOS/nixpkgs/nixos-25.05): " custom_channel; if [ -n "$custom_channel" ]; then channel=$custom_channel; break; else echo "Канал не может быть пустым"; fi;; *) echo "Неверный выбор"; sleep 1;; esac; done; while true; do read -p "Введите имя пакета: " package_name; if [ -n "$package_name" ]; then break; else echo "Имя пакета не может быть пустым"; fi; done; while true; do read -p "Введите команду запуска (например: bash): " command_name; if [ -n "$command_name" ]; then break; else echo "Команда не может быть пустой"; fi; done; echo; echo "Запуск: $command_name из $channel#$package_name"; export NIXPKGS_ALLOW_UNFREE=1; if nix --extra-experimental-features "nix-command flakes" shell --impure $channel#$package_name --command $command_name; then break; else echo; echo "❌ Ошибка загрузки пакета. Проверьте:"; echo "- Правильность имени канала и пакета"; echo "- Наличие интернет-соединения"; echo "- Доступность unfree пакетов (если требуется)"; echo; read -p "Нажмите Enter для повторной попытки или Ctrl+C для отмены..."; fi; done'
Icon=software-updates-inactive
Terminal=false
Categories=Utility;System;
StartupNotify=true
Keywords=nix;package;launcher;flakes;
Keywords[ru]=nix;пакет;запуск;флейки;
StartupWMClass=konsole
Actions=Examples;Help;
[Desktop Action Examples]
Name=Примеры использования
Name[ru]=Примеры использования
Exec=konsole --hold -e bash -c 'echo "=== Примеры запуска ==="; echo; echo "1) SunVox:"; echo " Канал: 1 (nixos-25.11)"; echo " Пакет: sunvox"; echo " Команда: sunvox"; echo; echo "2) v2rayN:"; echo " Канал: 2 (nixos-unstable)"; echo " Пакет: v2rayn"; echo " Команда: v2rayN"; echo; echo "3) FlClash:"; echo " Канал: 2 (nixos-unstable)"; echo " Пакет: flclash"; echo " Команда: FlClash"; echo; read -p "Нажмите Enter для выхода..."'
[Desktop Action Help]
Name=Справка
Name[ru]=Справка
Exec=konsole --hold -e bash -c 'echo "=== Справка по Nix Package Launcher ==="; echo; echo "Шаги запуска:"; echo "1. Выберите канал/ветку Nixpkgs"; echo "2. Введите имя пакета (как в nixpkgs)"; echo "3. Введите команду для запуска (бинарник)"; echo; echo "Поддерживаемые каналы:"; echo "- nixos-25.11 (стабильный)"; echo "- nixos-unstable (последние версии)"; echo "- Любая кастомная ссылка"; echo; echo "Важно:"; echo "- Для unfree пакетов устанавливается NIXPKGS_ALLOW_UNFREE=1"; echo "- Требуются экспериментальные фичи: nix-command flakes"; echo; read -p "Нажмите Enter для выхода..."'
#!/usr/bin/env xdg-open
[Desktop Entry]
Actions=Configure;Help;
Categories=Utility;System;
Comment[ru_RU]=Запуск OpenSeeFace для отслеживания лица
Comment=Запуск OpenSeeFace для отслеживания лица
Exec=konsole --hold -e bash -c 'PARAMS="-c 0 -W 1280 -H 720 --discard-after 0 --scan-every 0 --no-3d-adapt 1 --max-feature-updates 900"; echo "Запуск OpenSeeFace..."; nix --extra-experimental-features nix-command --extra-experimental-features flakes shell nixpkgs#openseeface --command facetracker $PARAMS'
GenericName[ru_RU]=
GenericName=
Icon=camera-web
Keywords[ru_RU]=лицо;трекинг;опенсифейс;втубер;
Keywords=face;tracking;openseeface;vtuber;
MimeType=
Name[ru_RU]=OpenSeeFace (трекер лица)
Name=OpenSeeFace (трекер лица)
Path=
StartupNotify=true
StartupWMClass=OpenSeeFace
Terminal=false
TerminalOptions=
Type=Application
Version=1.0
X-KDE-SubstituteUID=false
X-KDE-Username=
[Desktop Action Configure]
Exec=konsole --hold -e bash -c 'echo "Доступные параметры:"; echo "-c <id> : камера (0 по умолчанию)"; echo "-W <width> : ширина захвата"; echo "-H <height> : высота захвата"; echo "--max-feature-updates <fps> : макс частота обновления"; echo; echo "Текущие параметры:"; echo "-c 0 -W 1280 -H 720 --discard-after 0 --scan-every 0 --no-3d-adapt 1 --max-feature-updates 900"; echo; read -p "Нажмите Enter для выхода..."'
Name[ru_RU]=Настроить параметры
Name=Настроить параметры
[Desktop Action Help]
Exec=konsole --hold -e bash -c 'echo "OpenSeeFace - трекер лица для VTube Studio"; echo "Официальный репозиторий: https://github.com/HyperBE32/OpenSeeFace"; echo "Документация: https://github.com/HyperBE32/OpenSeeFace/wiki"; echo; read -p "Нажмите Enter для выхода..."'
Name[ru_RU]=Помощь
Name=Помощь
#!/usr/bin/env xdg-open
[Desktop Entry]
Actions=Status;
Categories=Network;Proxy;
Comment[ru_RU]=Выбор и запуск VPN клиента в NixOS
Comment=Выбор и запуск VPN клиента в NixOS
Exec=konsole --hold -e bash -c 'export NIXPKGS_ALLOW_UNFREE=1; export NIX_CONFIG="experimental-features = nix-command flakes"; clients=("v2rayN" "FlClash" "Karing"); PS3="Выберите VPN клиент: "; select client in "${clients[@]}"; do case $client in "v2rayN") echo "Запуск v2rayN..."; nix shell nixpkgs#v2rayn --command v2rayN ;; "FlClash") echo "Запуск FlClash..."; nix shell nixpkgs#flclash --command FlClash ;; "Karing") echo "Запуск Karing..."; if command -v karing &>/dev/null; then karing; else nix shell --impure nixpkgs#karing --command karing; fi ;; *) echo "Неверный выбор";; esac; break; done'
GenericName[ru_RU]=
GenericName=
Icon=network-vpn
Keywords[ru_RU]=VPN;прокси;в2рай;кэш;
Keywords=VPN;proxy;v2ray;clash;
MimeType=
Name[ru_RU]=VPN Клиенты
Name=VPN Клиенты
Path=
StartupNotify=true
StartupWMClass=konsole
Terminal=false
TerminalOptions=
Type=Application
Version=1.0
X-KDE-SubstituteUID=false
X-KDE-Username=
[Desktop Action Status]
Exec=konsole --hold -e bash -c 'echo "Проверка статуса VPN:"; if pgrep -x "v2rayN" &>/dev/null; then echo "✅ v2rayN: запущен"; else echo "❌ v2rayN: не запущен"; fi; if pgrep -x "FlClash" &>/dev/null; then echo "✅ FlClash: запущен"; else echo "❌ FlClash: не запущен"; fi; if pgrep -x "karing" &>/dev/null; then echo "✅ Karing: запущен"; else echo "❌ Karing: не запущен"; fi; echo; read -p "Нажмите Enter для выхода..."'
Name[ru_RU]=Статус подключения
Name=Статус подключения
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment