Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ScreenSnip

Маленькая утилита для Windows: по горячей клавише замораживает экран, даёт выделить прямоугольную область и кладёт её в буфер обмена. Ничего больше.

  • ✅ Настраиваемая горячая клавиша (через окно настройки или файл конфигурации)
  • ✅ Заморозка экрана на время выделения
  • ✅ Прямоугольное выделение мышью, область вне выделения затемняется
  • ✅ Отмена по Esc или правой кнопкой мыши
  • ✅ Поддержка нескольких мониторов (при одинаковом масштабе DPI)
  • ✅ Автозапуск при входе в Windows
  • ✅ Иконка в системном трее
  • ❌ В файл ничего не сохраняется — только буфер обмена

Использование

После запуска программа висит в трее. Нажмите хоткей (по умолчанию Ctrl+Shift+S):

  1. Экран «замораживается» и затемняется.
  2. Зажмите левую кнопку мыши и выделите прямоугольник (можно тянуть через несколько мониторов).
  3. Отпустите кнопку — выделенная область скопирована в буфер обмена.
  4. Esc или правый клик — отмена.

Изменение горячей клавиши

Самый простой способ — левый клик по иконке в трее (или правый клик → «Изменить хоткей…»). Откроется маленькое окно:

  1. Нажмите нужную комбинацию (например, Ctrl + Shift + A). В заголовке окна видно, какие модификаторы уже зажаты.
  2. Как только нажмёте основную клавишу — комбинация сразу применяется (без перезапуска) и сохраняется в конфиг.
  3. Esc — отмена. Если комбинация уже занята системой/другой программой — об этом сообщит заголовок окна, останется прежняя.

Конфигурация

Файл можно править и вручную; создаётся автоматически при первом запуске:

%APPDATA%\ScreenSnip\ScreenSnip\config.toml
hotkey = "Ctrl+Shift+S"
autostart = true
  • hotkey — модификаторы Ctrl/Shift/Alt/Win через +, затем клавиша. Примеры: "Ctrl+Shift+S", "Alt+PrintScreen", "Ctrl+F8", "Win+Shift+A". Клавишей может быть буква/цифра, F1..F24 или имя (PrintScreen, Insert, Home…).
  • autostart — добавлять/убирать программу из автозапуска (ветка реестра HKCU\…\Run).

При смене хоткея через окно настройки изменения применяются сразу. При ручной правке файла — после перезапуска программы (пункт «Выход» в трее → запустить снова). Пункт меню в трее «Открыть конфиг» откроет этот файл.

⚠️ Не используйте Win+Shift+S — это встроенный «Ножницы» Windows, он перехватит хоткей.


Обновление до новой версии

Если ставили через установщик:

  1. Соберите новую версию: cargo build --release.
  2. В installer\setup.iss увеличьте MyAppVersion (например, 0.1.00.2.0). AppId менять нельзя — именно по нему Inno распознаёт уже установленную программу.
  3. Соберите установщик и запустите новый ScreenSnip-Setup-X.Y.Z.exe.

Установщик увидит установленную версию (по AppId) и обновит её на месте. Если программа запущена, по AppMutex он предложит её закрыть. Конфиг и автозапуск сохраняются — отдельно удалять старую версию не нужно.

Если запускаете portable (просто exe): «Выход» в трее → замените файл на новый → запустите.

Удаление

Установленную через установщик программу удаляют как обычно:

  • Параметры Windows → Приложения → ScreenSnip → Удалить, либо
  • ярлык «Удалить ScreenSnip» в меню «Пуск».

Деинсталлятор закроет программу, удалит файлы и запись автозапуска из реестра. Файл конфигурации (%APPDATA%\ScreenSnip\…) остаётся — удалите вручную при желании.

Portable-версию удаляют так: «Выход» в трее, удалить exe, а чтобы убрать автозапуск — выставить autostart = false в конфиге и один раз запустить (программа сама снимет запись), либо удалить значение реестра вручную:

reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v ScreenSnip /f

Сборка (на машине с Windows)

Все зависимости используют Windows-бэкенды (захват экрана, трей, окна), поэтому собирать нужно на Windows — кросс-компиляция из Linux не поддерживается.

1. Установить Rust

Скачайте и запустите rustup-init.exe с https://rustup.rs и пройдите установку (вариант по умолчанию — стабильный тулчейн x86_64-pc-windows-msvc).

Rust на Windows требует компоновщик MSVC. Если установка rustup попросит — поставьте Visual Studio Build Tools с компонентом «Разработка классических приложений на C++» (включает MSVC и Windows SDK). Ссылка: https://visualstudio.microsoft.com/visual-cpp-build-tools/

Проверка:

rustc --version
cargo --version

2. Собрать релизный бинарник

В папке проекта:

cargo build --release

Готовый файл: target\release\screensnip.exe (один самодостаточный exe).

Запустить прямо так:

.\target\release\screensnip.exe

3. (Опционально) Собрать установщик .exe

Есть два варианта установщика. NSIS собирается даже из Linux, Inno Setup — только на Windows.

Вариант A — NSIS (installer/screensnip.nsi), собирается из Linux:

sudo apt-get install -y nsis      # один раз
# сначала соберите релизный exe и положите его в dist/screensnip.exe
makensis -DSRCEXE=$PWD/dist/screensnip.exe \
         -DOUTFILE=$PWD/dist/ScreenSnip-Setup-0.1.0.exe \
         installer/screensnip.nsi

Готовый dist/ScreenSnip-Setup-0.1.0.exe ставит программу в Program Files\ScreenSnip, создаёт ярлыки в «Пуске», заводит запись в «Установка и удаление программ». Удаление (оттуда же или ярлыком «Удалить ScreenSnip») закрывает программу, удаляет файлы, ярлыки и запись автозапуска из реестра.

Вариант B — Inno Setup (installer/setup.iss), на Windows:

  1. Установите Inno Setup: https://jrsoftware.org/isdl.php
  2. Соберите релиз (cargo build --release).
  3. ISCC installer\setup.iss (или Compile в GUI) → installer\output\ScreenSnip-Setup-0.1.0.exe.

Оба установщика кладут программу в Program Files\ScreenSnip. Автозапуск включает само приложение (по настройке autostart в конфиге).


Linux (X11)

Программа кросс-платформенная и работает на Linux под X11. Логика та же: хоткей → заморозка → выделение → буфер; есть иконка в трее (изменить хоткей / выход).

Поддерживается:

  • Сессия X11 (echo $XDG_SESSION_TYPEx11). Под Wayland глобальный хоткей не работает (ограничение протокола) — нужен X11-сеанс.
  • Трей: окружения со штатным System Tray — KDE, XFCE, Cinnamon, MATE. В GNOME трея по умолчанию нет — поставьте расширение AppIndicator, иначе иконка не появится (хоткей при этом всё равно работает, но управлять и выходить придётся через конфиг/kill).

Сборка:

# Зависимости (Debian/Ubuntu); на других дистрибутивах — аналоги
sudo apt-get install -y \
  libgtk-3-dev libxdo-dev libayatana-appindicator3-dev \
  libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
  libxkbcommon-dev libpipewire-0.3-dev libgbm-dev libegl-dev libdrm-dev

cargo build --release
# бинарник: target/release/screensnip

Автозапуск на Linux — через ~/.config/autostart/screensnip.desktop (создаётся приложением, если autostart = true). Конфиг: ~/.config/ScreenSnip/config.toml.

Особенность буфера обмена (X11). В отличие от Windows, на X11 содержимое буфера «живёт» в процессе-владельце. Пока ScreenSnip висит в трее — скопированная картинка доступна; если скопировать и сразу выйти, она пропадёт (если только её не подхватил менеджер буфера обмена вроде Klipper/CopyQ). Для постоянной работы держите программу в трее.


Замечания

  • DPI. Код рассчитан на одинаковый масштаб на всех мониторах. При смешанном масштабе (например, ноутбук 150% + внешний 100%) выделение на втором мониторе может смещаться — это потребует отдельной схемы «окно на каждый монитор».
  • Заморозка. Скриншот делается ДО показа оверлея, поэтому на экране именно замороженный кадр, а не живое изображение.
  • Антивирус. Глобальный хоткей + автозапуск + работа с буфером иногда вызывают ложные срабатывания эвристик. Бинарник без подписи; при необходимости подпишите.

About

Скриншот выбранной области в буфер обмена по горячей клавише (Windows, Rust)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages