Show HN: Play Pokémon to unlock your Wayland session
wlgblock — экран-блокировка в стиле Game Boy для Wayland.
Проект AdoPi: простой скрипт на Bash, который запускает «игру»-заставку и требует пароль для разблокировки.
- Зависимости:
swaylock
,grim
,slurp
,wl-clipboard
,imagemagick
,fzf
,bash
. - Установка: клонировать репозиторий, выполнить
make install
. - Использование:
wlgblock
или горячая клавиша в Sway/i3.
Скрипт делает снимок экрана, накладывает пиксель-фильтр «Game Boy», запускает swaylock
с этим изображением и ожидает ввода пароля.
Комментарии (41)
- Пользователи радуются, что проект-игра на Wayland показывает, что экосистема уже способна на «тяжёлую» кастомизацию и работает лучше, чем споры последних пяти лет.
- Многие удивлены, что «игра-скринсейвер» появилась раньше обычного нормального screensaver'а для Wayland.
- Скептик признал: блокировка экрана в Wayland действительно работает лучше и логичнее, чем в X.
- Разработчик anajimi уже обещает попробовать сделать полноценный screensaver на ext-session-lock.
- В KDE 82 % сессий уже Wayland; Sway и labwc активно используются, но NVIDIA всё ещё вызывает проблемы — «переходи на AMD».
Writing simple tab-completions for Bash and Zsh 🔥 Горячее
Как сделать простые таб-дополнения для Bash и Zsh
Li Haoyi, 7 августа 2025
Таб-дополнения в шелле удобны, но их настройка усложняется тем, что часть пользователей использует Bash в Linux, а другая — Zsh в macOS, и у них разные API. К тому же, пользователям полезно видеть описание каждого варианта, но это доступно только в Zsh.
В этой заметке показано, как реализовать кросс-платформенные дополнения с описаниями на примере Mill 1.0.3.
Базовый механизм
При нажатии <TAB>
шелл вызывает функцию, которой передаёт текущие слова и индекс слова под курсором. Функция возвращает список возможных дополнений.
_generate_foo_completions() {
local idx=$1; shift
local words=( "$@" )
local cur=${words[idx]}
local arr=(apple apricot banana cherry durian)
for e in "${arr[@]}"; do [[ $e == "$cur"* ]] && echo "$e"; done
}
_complete_foo_bash() {
local raw=($(_generate_foo_completions "$COMP_CWORD" "${COMP_WORDS[@]}"))
COMPREPLY=( "${raw[@]}" )
}
_complete_foo_zsh() {
local -a raw
raw=($(_generate_foo_completions "$CURRENT" "${words[@]}"))
compadd -- $raw
}
[[ -n $ZSH_VERSION ]] && { autoload -Uz compinit; compinit; compdef _complete_foo_zsh foo; } \
|| complete -F _complete_foo_bash foo
_generate_foo_completions
возвращает список вариантов._complete_foo_bash
и_complete_foo_zsh
преобразуют результат в формат нужного шелла.- Скрипт добавляется в
~/.bashrc
,~/.zshrc
и т.д.
Mill устанавливает дополнения командой:
$ ./mill mill.tabcomplete/install
Комментарии (82)
- Fish автоматически создаёт дополнения из man-страниц (
fish_update_completions
), что упрощает жизнь, если документация есть. - Пользователи bash и zsh жалуются на «слишком умные» дополнения, которые блокируют автодополнение имён файлов; предпочитают откат к простому поведению.
- Инструменты вроде
usage
,clap_complete
,claptrap
и_gnu_generic
позволяют быстро генерировать скрипты дополнений из--help
или описаний CLI. - Некоторые сторонние решения (Fig, Pixi) и оболочки вроде Murex и Nushell стремятся к единому стандарту автодополнения, но разнообразие синтаксиса CLI всё ещё мешает.
GPT-5 vs. Sonnet: Complex Agentic Coding
Задача: перенести TypeScript-утилиту Ruler на Rust, проверить идентичность через bash-тест.
Модели: GPT-5 (новый, превью) и Claude 4 Sonnet.
GPT-5
- Сразу прочитал код, составил подробный
plan.md
, получил одобрение. - Работал почти без остановок, дважды отчитывался о статусе.
- Сначала написал bash-скрипт, который запускает оригинал и порт во временной папке и сравнивает вывод.
- Затем сгенерировал структуру
src/
,Cargo.toml
, CLI-аргументы, логикуapply/init/revert
, обработку конфигов и MCP. - Итеративно правил код, пока тест не прошёл «зелёным».
- Время: ~20 мин, 1 коммит, ветка
feat/rust-port
.
Claude 4 Sonnet
- Та же инструкция.
- Сразу начал писать Rust, но упустил bash-тест; пришлось напомнить.
- Тест написал быстрее, но менее читаемый.
- Порт делал «пачками»: сначала CLI, потом логика, потом MCP.
- После 3-х итераций тест прошёл.
- Время: ~30 мин, 3 коммита.
Вывод
- GPT-5 агентнее: сам планирует, реже спрашивает, меньше ошибок.
- Claude надёжнее в деталях, но требует чётких шагов.
- Оба справились, но GPT-5 ощущается «ближе к одной команде — один результат».
Комментарии (124)
- Пользователи сомневаются в объективности сравнений: результаты сильно зависят от системных промптов, харнесов и задач.
- Критика выбора моделей: вместо топ-версии Claude Opus сравнивали более дешёвый Sonnet, что искажает оценку «лучшей» модели.
- Стоимость vs качество: большинство разработчиков не готовы платить 10× за Opus, поэтому GPT-5 рассматривают как «cost-effective» вариант.
- Опыт в продакшене: многие находят Claude Code (Sonnet/Opus) надёжнее при работе с большими кодовыми базами и TDD, тогда как GPT-5 хорош для разовых скриптов.
- Нет единой метрики: из-за недетерминированности моделей и субъективных критериев «хорошего кода» каждый получает разные результаты.
Cursor CLI 🔥 Горячее 💬 Длинная дискуссия
- Установка:
npm i -g cursor-cli
- Команды:
cursor diff
,cursor commit
,cursor review
,cursor chat
- Где работает: VS Code, JetBrains, Android Studio, Ghostty, Warp, Bash
Функции
- Прямые правки кода в терминале
- Реальное управление агентом
- Правила через
.cursorrules
,AGENTS.md
, MCP
Плюсы
- Последние модели Anthropic, OpenAI, Gemini
- Интеграция в любой IDE
- Скрипты и автоматизация
Комментарии (248)
- Пользователи обсуждают внедрение единого стандарта AGENT.md вместо множества разных файлов.
- CLI-агенты (Claude Code, Cursor CLI и др.) вызывают восторг: удобно держать в фоне, «чувствуешь себя хакером», но UI-IDE теряет значение.
- Критика: непонятно, зачем платить за Cursor, если тот же функционал уже включён в подписку Anthropic/OpenAI; не хватает обратной связи, MCP, hooks и локальных моделей.
- Сторонники Cursor верят в его будущую экосистему (CLI + IDE + GitHub-интеграции) и низкие издержки переключения между моделями.
- Главный вопрос безопасности: доверять ли LLM полный доступ к файловой системе и устанавливать скрипты через curl | bash.