lukaj 0.1.2

Interactive diff tool for SVG images
lukaj-0.1.2 is not a library.
Visit the last successful build: lukaj-0.2.0

Interactive diff tool for SVG images.

Crates.io CI - Main License Coverage Status

Features

Swipe SVG graphics comparison with zoom and drag support.

Installation

If you're a Rust programmer, lukaj can be installed with cargo. It supports two graphics backends which are enabled/disabled with cargo features.

Feature name SVG library 2D rendering library
use-usvg (default) resvg tiny-skia
use-rsvg librsvg cairo

Depending on the operating system and selected feature set, lukaj will require additional development libraries.

  1. When using only default use-usvg feature:

    $ sudo apt-get install libsdl2-dev
    $ cargo install lukaj
    
  2. When using additional use-rsvg feature:

    $ sudo apt-get install build-essential libcairo2-dev libgdk-pixbuf-2.0-dev \
        libglib2.0-dev libpango1.0-dev libsdl2-dev libxml2-dev
    $ cargo install lukaj --feature user-rsvg
    
  1. Install MSYS2 and run from it's terminal run:

    • For default use-usvg feature:

      $ pacman -S mingw-w64-x86_64-SDL2
      
    • For additional use-rsvg feature:

      $ pacman -S mingw-w64-x86_64-gtk4 mingw-w64-x86_64-gettext \
          mingw-w64-x86_64-libxml2 mingw-w64-x86_64-pkgconf \
          mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2
      
  2. Add mingw binaries path (C:\msys64\mingw64\bin) to system Path

  3. Change default rust toolchain to stable-gnu

    rustup toolchain install stable-gnu
    rustup default stable-gnu
    
  4. Run cargo install command

    • For default feature only:

      $ cargo install lukaj
      
    • For additional use-rsvg feature:

      $ cargo install lukaj --features use-usvg
      

For different setups see this GUI development with Rust and GTK4 guide.

[!WARNING] Precompiled binaries or installation with package managers are not supported yet.

Usage

To compare two SVG files run:

$ lukaj [path 1] [path 2]

Lukaj uses following mouse/keyboard controls:

Button Action
Left Click Move diff separator
Right Click Move images
Scroll Zoom in and out
R Reset images position
Esc Exit
$ lukaj --help
Interactive diff tool for SVG images

Usage: lukaj [OPTIONS] [FILES]...

Arguments:
  [FILES]...  Files to compare

  Options:
    -s, --scale <VALUE>      Sets a scaling factor
    --backend <BACKEND>      Preferred backend [default: rsvg-with-cairo]
                             [possible values: rsvg-with-cairo, usvg-with-skia]
    -h, --help               Print help
    -V, --version            Print version

Git integration

Lukaj can be used as git difftool. To add git diff-svg custom command, copy and paste following sections to .gitconfig file:

[difftool "lukaj"]
    cmd = ~/.cargo/bin/lukaj $LOCAL $REMOTE
[alias]
    diff-svg = "difftool -t lukaj -y"

Other integrations