Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
5a2a15a
feat: update default hotkey to Ctrl+Print; enhance icon handling and …
rafaself Feb 27, 2026
2a87ed1
feat: enhance hotkey functionality and improve capture flow; update R…
rafaself Feb 27, 2026
8b85e79
feat: update default save directory to Pictures/Screenshots; adjust t…
rafaself Feb 27, 2026
a595bd1
feat: enhance initial window size and centering functionality; add te…
rafaself Feb 27, 2026
190accf
feat: add color picker support for older GTK4 runtimes in annotation …
rafaself Feb 27, 2026
5305730
feat: update icon designs for dark and light themes; enhance visual c…
rafaself Feb 27, 2026
6c38c44
feat: enhance hotkey functionality with telemetry logging; improve RE…
rafaself Feb 27, 2026
85bd359
feat: implement theme-aware toolbar icons with light/dark variants; e…
rafaself Feb 27, 2026
911f1a8
feat: improve GNOME shortcut handling by disabling native conflicts; …
rafaself Feb 28, 2026
15e0994
feat: enhance capture command resolution and validation; improve rela…
rafaself Feb 28, 2026
8c0e23e
feat: update GNOME shortcut handling to use accelerator strings; impr…
rafaself Feb 28, 2026
8d08d87
feat: enhance GNOME shortcut handling by restoring native Print bindi…
rafaself Feb 28, 2026
0ae2c49
feat: implement separate screenshot preview window; enhance main app …
rafaself Feb 28, 2026
44dbe1f
feat: update application version to 1.0.0 in Dockerfile and build scr…
rafaself Feb 28, 2026
1df4c8a
feat: update icon install path in CI workflow and tests to match new …
rafaself Feb 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ jobs:

grep -Eq '/usr/bin/screenux-screenshot$' artifacts/deb-contents.txt || { echo "::error::Missing /usr/bin install path"; exit 1; }
grep -Eq '/usr/share/applications/screenux-screenshot.desktop$' artifacts/deb-contents.txt || { echo "::error::Missing desktop entry install path"; exit 1; }
grep -Eq '/usr/share/icons/hicolor/256x256/apps/screenux-screenshot.png$' artifacts/deb-contents.txt || { echo "::error::Missing icon install path"; exit 1; }
grep -Eq '/usr/share/icons/hicolor/256x256/apps/io.github.rafa.ScreenuxScreenshot.png$' artifacts/deb-contents.txt || { echo "::error::Missing icon install path"; exit 1; }

extract_dir="$(mktemp -d)"
trap 'rm -rf "${extract_dir}"' EXIT
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile.deb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ FROM debian:bookworm-slim

ARG DEBIAN_FRONTEND=noninteractive
ARG APP_NAME=screenux-screenshot
ARG APP_VERSION=0.1.0
ARG APP_VERSION=1.0.0
ARG APP_ARCH=amd64
ARG OUT_DIR=/out

Expand Down
30 changes: 19 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,21 @@ Screenux focuses on a clean capture flow: take a screenshot, optionally annotate
- 🧭 Clean interface with one primary action and clear status messages
- 🔒 Local-first behavior (no cloud upload flow)
- 🖼️ Wayland-friendly capture via desktop portal APIs
- 📁 Practical folder defaults (Desktop, then Home fallback)
- 📁 Practical folder defaults (`Pictures/Screenshots`, then Home fallback)

## 🧩 Features

- Capture with `Take Screenshot`
- Default global hotkey: `Ctrl+Shift+S`
- Default global hotkey: `Ctrl+Print`
- Status updates: `Ready`, `Capturing...`, `Saved: <path>`, `Cancelled`, `Failed: <reason>`
- Built-in editor for quick annotations (shapes/text)
- Screenshot preview/editor opens in a separate window from the main app controls
- Editor toolbar tool icons use bundled light/dark PNG assets with theme-aware selection (fallback when SVG loaders are unavailable in some `.deb` runtimes)
- Editor color picker supports older GTK4 runtimes used by some distro `.deb` installs
- Editor zoom controls with `Best fit` and quick presets (`33%` to `2000%`)
- Timestamped output names with safe, non-overwriting writes
- Packaged app icon for desktop launcher integration
- Wider default window for comfortable hotkey editing, with centered initial presentation (best-effort by desktop/session)

## Install

Expand Down Expand Up @@ -63,7 +67,7 @@ Expected after install:

- CLI available at `/usr/bin/screenux-screenshot`
- Desktop launcher visible in app menu
- Icon installed at `/usr/share/icons/hicolor/256x256/apps/screenux-screenshot.png`
- Icon installed at `/usr/share/icons/hicolor/256x256/apps/io.github.rafa.ScreenuxScreenshot.png` (PNG primary)

Remove later (optional):

Expand All @@ -77,15 +81,15 @@ sudo apt remove -y screenux-screenshot
./install-screenux.sh --bundle /path/to/screenux-screenshot.flatpak
```

The installer creates a desktop entry and installs app icons at `~/.local/share/icons/hicolor/scalable/apps/` so launcher/taskbar icon lookup works reliably. It includes theme variants (`io.github.rafa.ScreenuxScreenshot-light.svg` and `io.github.rafa.ScreenuxScreenshot-dark.svg`) and refreshes the local icon cache when GTK cache tools are available.
The installer creates a desktop entry and installs app icons so launcher/taskbar icon lookup works reliably: PNG primary at `~/.local/share/icons/hicolor/256x256/apps/io.github.rafa.ScreenuxScreenshot.png` plus complementary SVG assets in `~/.local/share/icons/hicolor/scalable/apps/` (including `io.github.rafa.ScreenuxScreenshot-light.svg` and `io.github.rafa.ScreenuxScreenshot-dark.svg`). It refreshes the local icon cache when GTK cache tools are available.

Optional GNOME Print Screen shortcut:

```bash
./install-screenux.sh --bundle /path/to/screenux-screenshot.flatpak --print-screen
```

This maps `Print` to `screenux-screenshot --capture`, which opens Screenux and immediately starts the capture flow.
This maps `Print` to `screenux-screenshot --capture`, which opens Screenux directly in the final capture/edit stage (without stopping on the main screen first).

If Screenux is already installed for your user, you can rerun:

Expand Down Expand Up @@ -121,23 +125,27 @@ Preserve app data in `~/.var/app/io.github.rafa.ScreenuxScreenshot`:
1. Launch the app.
2. Click `Take Screenshot`.
3. Confirm or cancel in the system screenshot flow.
4. (Optional) annotate in the editor.
4. (Optional) annotate in the separate preview/editor window.
5. Save and check the status line for the resulting file path.

Save folder behavior:

- Default target is Desktop.
- If Desktop is unavailable or not writable, Screenux falls back to Home.
- Default target is `Pictures/Screenshots` (created automatically when possible).
- If `Pictures/Screenshots` is unavailable or not writable, Screenux falls back to Home.
- You can change the destination from the app (`Save to` → `Change…`).

Global hotkey behavior:

- Default shortcut is `Ctrl+Shift+S`.
- If it is already taken, Screenux falls back to `Ctrl+Alt+S` (then `Alt+Shift+S`, then `Super+Shift+S`).
- Default shortcut is `Ctrl+Print`.
- On GNOME/Linux, when your selected shortcut matches a native screenshot binding (including clipboard variants like `Ctrl+Print`), Screenux first tries to disable that native binding so your shortcut can be used directly.
- If the shortcut is still unavailable, Screenux falls back to `Ctrl+Shift+S` (then `Ctrl+Alt+S`, then `Alt+Shift+S`, then `Super+Shift+S`).
- On GNOME, the shortcut is persisted as a GNOME custom shortcut and works when the app is closed.
- On non-GNOME desktops, global shortcut support is best-effort while the app is running.
- Shortcut config is stored at `~/.config/screenux/settings.json` as `global_hotkey` (`null` disables it).
- You can change or disable the shortcut from the app window (`Apply` / `Disable`).
- While the shortcut field is focused, press the key combo and Screenux builds it automatically (example: `Ctrl + S`).
- You can apply with `Enter` or `Apply`.
- You can return to default with `Default`, or clear/disable with `Clear` (on GNOME this also restores native Print screenshot bindings).
- Set `SCREENUX_LOG_LEVEL=INFO` to emit hotkey telemetry to stderr (registration resolution and `--capture` detection/handling) when debugging shortcut issues.

## 🖼️ UI example

Expand Down
7 changes: 4 additions & 3 deletions assets/icons/io.github.rafa.ScreenuxScreenshot-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 4 additions & 3 deletions assets/icons/io.github.rafa.ScreenuxScreenshot-light.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 4 additions & 8 deletions assets/icons/io.github.rafa.ScreenuxScreenshot.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions flatpak/io.github.rafa.ScreenuxScreenshot.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
"install -Dm755 src/screenux_editor.py /app/share/screenux/screenux_editor.py",
"install -Dm755 src/screenux_window.py /app/share/screenux/screenux_window.py",
"install -Dm644 io.github.rafa.ScreenuxScreenshot.desktop /app/share/applications/io.github.rafa.ScreenuxScreenshot.desktop",
"install -Dm644 assets/icons/io.github.rafa.ScreenuxScreenshot.png /app/share/icons/hicolor/256x256/apps/io.github.rafa.ScreenuxScreenshot.png",
"install -Dm644 assets/icons/io.github.rafa.ScreenuxScreenshot.svg /app/share/icons/hicolor/scalable/apps/io.github.rafa.ScreenuxScreenshot.svg",
"install -Dm644 assets/icons/io.github.rafa.ScreenuxScreenshot-light.svg /app/share/icons/hicolor/scalable/apps/io.github.rafa.ScreenuxScreenshot-light.svg",
"install -Dm644 assets/icons/io.github.rafa.ScreenuxScreenshot-dark.svg /app/share/icons/hicolor/scalable/apps/io.github.rafa.ScreenuxScreenshot-dark.svg"
Expand Down
2 changes: 1 addition & 1 deletion packaging/linux/screenux-screenshot.desktop
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
Type=Application
Name=Screenux Screenshot
Exec=screenux-screenshot
Icon=screenux-screenshot
Icon=io.github.rafa.ScreenuxScreenshot
Terminal=false
Categories=Utility;Graphics;
Binary file modified packaging/linux/screenux-screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 13 additions & 3 deletions scripts/build_deb.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd -- "${SCRIPT_DIR}/.." && pwd)"

APP_NAME="${APP_NAME:-screenux-screenshot}"
APP_VERSION="${APP_VERSION:-0.1.0}"
APP_VERSION="${APP_VERSION:-1.0.0}"
APP_ARCH="${APP_ARCH:-amd64}"
OUT_DIR="${OUT_DIR:-/out}"
APP_ID="${APP_ID:-io.github.rafa.ScreenuxScreenshot}"

BUILD_WORKDIR="$(mktemp -d -t "${APP_NAME}-deb-XXXXXX")"
PKG_ROOT="${BUILD_WORKDIR}/pkg"
Expand Down Expand Up @@ -66,8 +67,17 @@ install -Dm644 \
"${ROOT_DIR}/packaging/linux/${APP_NAME}.desktop" \
"${PKG_ROOT}/usr/share/applications/${APP_NAME}.desktop"
install -Dm644 \
"${ROOT_DIR}/packaging/linux/${APP_NAME}.png" \
"${PKG_ROOT}/usr/share/icons/hicolor/256x256/apps/${APP_NAME}.png"
"${ROOT_DIR}/assets/icons/${APP_ID}.png" \
"${PKG_ROOT}/usr/share/icons/hicolor/256x256/apps/${APP_ID}.png"
install -Dm644 \
"${ROOT_DIR}/assets/icons/${APP_ID}.svg" \
"${PKG_ROOT}/usr/share/icons/hicolor/scalable/apps/${APP_ID}.svg"
install -Dm644 \
"${ROOT_DIR}/assets/icons/${APP_ID}-light.svg" \
"${PKG_ROOT}/usr/share/icons/hicolor/scalable/apps/${APP_ID}-light.svg"
install -Dm644 \
"${ROOT_DIR}/assets/icons/${APP_ID}-dark.svg" \
"${PKG_ROOT}/usr/share/icons/hicolor/scalable/apps/${APP_ID}-dark.svg"

dpkg-deb --build --root-owner-group "${PKG_ROOT}" "${DEB_FILE}"

Expand Down
13 changes: 7 additions & 6 deletions scripts/install/install-screenux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,26 @@ source "${SCRIPT_DIR}/lib/common.sh"
source "${SCRIPT_DIR}/lib/gnome_shortcuts.sh"

DEFAULT_BUNDLE_NAME="screenux-screenshot.flatpak"
PRINT_KEYBINDING="['Print']"
PRINT_KEYBINDING="Print"

usage() {
cat << 'EOF'
Usage:
./install-screenux.sh [--bundle /path/to/screenux-screenshot.flatpak] [--shortcut "['<Control><Shift>s']"]
./install-screenux.sh [--bundle /path/to/screenux-screenshot.flatpak] [--shortcut "<Control><Shift>s"]
./install-screenux.sh [--bundle /path/to/screenux-screenshot.flatpak] --print-screen

Options:
--bundle PATH Flatpak bundle path. If omitted and app is not installed, tries ./screenux-screenshot.flatpak
--shortcut BINDING Configure GNOME shortcut with gsettings list syntax
--print-screen Shortcut preset for ['Print'] + disable native GNOME Print bindings
--shortcut BINDING Configure GNOME shortcut accelerator string (for example: <Control><Shift>s)
--print-screen Shortcut preset for Print + disable native GNOME Print bindings
--no-shortcut Skip shortcut setup (default)
-h, --help Show this help

Examples:
./install-screenux.sh
./install-screenux.sh --bundle ./screenux-screenshot.flatpak
./install-screenux.sh --bundle ./screenux-screenshot.flatpak --print-screen
./install-screenux.sh --bundle ./screenux-screenshot.flatpak --shortcut "['<Control><Shift>s']"
./install-screenux.sh --bundle ./screenux-screenshot.flatpak --shortcut "<Control><Shift>s"
EOF
}

Expand Down Expand Up @@ -81,6 +81,7 @@ validate_installation() {
[[ -x "${WRAPPER_PATH}" ]] || fail "Validation failed: wrapper not executable at ${WRAPPER_PATH}"
[[ -f "${DESKTOP_FILE}" ]] || fail "Validation failed: desktop entry missing at ${DESKTOP_FILE}"
[[ -f "${ICON_FILE}" ]] || fail "Validation failed: icon asset missing at ${ICON_FILE}"
[[ -f "${ICON_FILE_SVG}" ]] || fail "Validation failed: icon asset missing at ${ICON_FILE_SVG}"
[[ -f "${ICON_FILE_LIGHT}" ]] || fail "Validation failed: icon asset missing at ${ICON_FILE_LIGHT}"
[[ -f "${ICON_FILE_DARK}" ]] || fail "Validation failed: icon asset missing at ${ICON_FILE_DARK}"
}
Expand Down Expand Up @@ -126,7 +127,7 @@ main() {
;;
--shortcut)
shift
(($# > 0)) || fail "--shortcut requires a binding list value"
(($# > 0)) || fail "--shortcut requires an accelerator string value"
[[ "${shortcut_option_seen}" == "false" ]] || fail "Only one of --shortcut, --print-screen, or --no-shortcut can be used."
shortcut_option_seen="true"
shortcut_mode="custom"
Expand Down
23 changes: 14 additions & 9 deletions scripts/install/lib/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,16 @@ WRAPPER_DIR="${HOME}/.local/bin"
WRAPPER_PATH="${WRAPPER_DIR}/screenux-screenshot"
DESKTOP_DIR="${HOME}/.local/share/applications"
DESKTOP_FILE="${DESKTOP_DIR}/${APP_ID}.desktop"
ICON_DIR="${HOME}/.local/share/icons/hicolor/scalable/apps"
ICON_FILE="${ICON_DIR}/${APP_ID}.svg"
ICON_FILE_LIGHT="${ICON_DIR}/${APP_ID}-light.svg"
ICON_FILE_DARK="${ICON_DIR}/${APP_ID}-dark.svg"
ICON_PNG_DIR="${HOME}/.local/share/icons/hicolor/256x256/apps"
ICON_SVG_DIR="${HOME}/.local/share/icons/hicolor/scalable/apps"
ICON_FILE="${ICON_PNG_DIR}/${APP_ID}.png"
ICON_FILE_SVG="${ICON_SVG_DIR}/${APP_ID}.svg"
ICON_FILE_LIGHT="${ICON_SVG_DIR}/${APP_ID}-light.svg"
ICON_FILE_DARK="${ICON_SVG_DIR}/${APP_ID}-dark.svg"
APP_DATA_DIR="${HOME}/.var/app/${APP_ID}"
COMMON_LIB_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
APP_ICON_SOURCE="${COMMON_LIB_DIR}/../../../assets/icons/${APP_ID}.svg"
APP_ICON_SOURCE="${COMMON_LIB_DIR}/../../../assets/icons/${APP_ID}.png"
APP_ICON_SVG_SOURCE="${COMMON_LIB_DIR}/../../../assets/icons/${APP_ID}.svg"
APP_ICON_LIGHT_SOURCE="${COMMON_LIB_DIR}/../../../assets/icons/${APP_ID}-light.svg"
APP_ICON_DARK_SOURCE="${COMMON_LIB_DIR}/../../../assets/icons/${APP_ID}-dark.svg"

Expand Down Expand Up @@ -61,11 +64,13 @@ EOF

create_icon_asset() {
[[ -f "${APP_ICON_SOURCE}" ]] || fail "App icon source file not found: ${APP_ICON_SOURCE}"
[[ -f "${APP_ICON_SVG_SOURCE}" ]] || fail "App icon source file not found: ${APP_ICON_SVG_SOURCE}"
[[ -f "${APP_ICON_LIGHT_SOURCE}" ]] || fail "App icon source file not found: ${APP_ICON_LIGHT_SOURCE}"
[[ -f "${APP_ICON_DARK_SOURCE}" ]] || fail "App icon source file not found: ${APP_ICON_DARK_SOURCE}"
echo "==> Installing app icon: ${ICON_FILE}"
mkdir -p "${ICON_DIR}"
mkdir -p "${ICON_PNG_DIR}" "${ICON_SVG_DIR}"
cp -f -- "${APP_ICON_SOURCE}" "${ICON_FILE}"
cp -f -- "${APP_ICON_SVG_SOURCE}" "${ICON_FILE_SVG}"
cp -f -- "${APP_ICON_LIGHT_SOURCE}" "${ICON_FILE_LIGHT}"
cp -f -- "${APP_ICON_DARK_SOURCE}" "${ICON_FILE_DARK}"
}
Expand All @@ -85,9 +90,9 @@ remove_desktop_entry() {
}

remove_icon_asset() {
if [[ -e "${ICON_FILE}" || -L "${ICON_FILE}" || -e "${ICON_FILE_LIGHT}" || -L "${ICON_FILE_LIGHT}" || -e "${ICON_FILE_DARK}" || -L "${ICON_FILE_DARK}" ]]; then
echo "==> Removing app icon files from: ${ICON_DIR}"
rm -f -- "${ICON_FILE}" "${ICON_FILE_LIGHT}" "${ICON_FILE_DARK}"
if [[ -e "${ICON_FILE}" || -L "${ICON_FILE}" || -e "${ICON_FILE_SVG}" || -L "${ICON_FILE_SVG}" || -e "${ICON_FILE_LIGHT}" || -L "${ICON_FILE_LIGHT}" || -e "${ICON_FILE_DARK}" || -L "${ICON_FILE_DARK}" ]]; then
echo "==> Removing app icon files"
rm -f -- "${ICON_FILE}" "${ICON_FILE_SVG}" "${ICON_FILE_LIGHT}" "${ICON_FILE_DARK}"
fi
}

Expand Down
4 changes: 2 additions & 2 deletions scripts/install/lib/gnome_shortcuts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,8 @@ configure_gnome_shortcut() {
return 0
fi

if [[ "${binding}" != \[*\] ]]; then
fail "Keybinding must be a gsettings list, e.g. \"['Print']\" or \"['<Super>s']\""
if [[ "${binding}" == \[*\] ]]; then
fail "Keybinding must be an accelerator string, e.g. \"Print\" or \"<Super>s\""
fi

echo "==> Configuring GNOME custom shortcut: ${binding}"
Expand Down
1 change: 1 addition & 0 deletions scripts/install/uninstall-screenux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ validate_uninstall() {
[[ ! -e "${WRAPPER_PATH}" && ! -L "${WRAPPER_PATH}" ]] || fail "Validation failed: wrapper still exists at ${WRAPPER_PATH}"
[[ ! -e "${DESKTOP_FILE}" && ! -L "${DESKTOP_FILE}" ]] || fail "Validation failed: desktop entry still exists at ${DESKTOP_FILE}"
[[ ! -e "${ICON_FILE}" && ! -L "${ICON_FILE}" ]] || fail "Validation failed: icon asset still exists at ${ICON_FILE}"
[[ ! -e "${ICON_FILE_SVG}" && ! -L "${ICON_FILE_SVG}" ]] || fail "Validation failed: icon asset still exists at ${ICON_FILE_SVG}"
[[ ! -e "${ICON_FILE_LIGHT}" && ! -L "${ICON_FILE_LIGHT}" ]] || fail "Validation failed: icon asset still exists at ${ICON_FILE_LIGHT}"
[[ ! -e "${ICON_FILE_DARK}" && ! -L "${ICON_FILE_DARK}" ]] || fail "Validation failed: icon asset still exists at ${ICON_FILE_DARK}"

Expand Down
Binary file added src/icons/tool-circle-fill-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-circle-fill-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-circle-outline-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-circle-outline-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-rectangle-fill-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-rectangle-fill-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-rectangle-outline-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-rectangle-outline-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-select-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-select-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-text-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/icons/tool-text-light.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading