Interactive diff tool for SVG images.
Features
Swipe SVG graphics comparison with zoom and drag support.
Installation
To install precompiled version of lukaj go to latest release page and download archive for your system. Provided binaries are static executables for Windows and Linux.
If you're a Rust programmer, lukaj can be installed with cargo.
It supports two graphics backends which are enabled/disabled with
cargo features.
The use-rsvg feature is available only when installing from source, precompiled binaries
on release page include only default feature set.
| Feature name | SVG library | 2D rendering library | Precompiled binary release |
|---|---|---|---|
use-usvg (default) |
resvg | tiny-skia | yes |
use-rsvg |
librsvg | cairo | no |
Depending on the operating system and selected feature set, lukaj will require additional development libraries.
-
When using only default
use-usvgfeature: -
When using additional
use-rsvgfeature:
-
Install MSYS2 and run from it's terminal run:
-
For default
use-usvgfeature: -
For additional
use-rsvgfeature:
-
-
Add mingw binaries path (
C:\msys64\mingw64\bin) to systemPath -
Change default rust toolchain to
stable-gnu -
Run cargo install command
-
For default feature only:
-
For additional
use-rsvgfeature:
-
For different setups see this GUI development with Rust and GTK4 guide.
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"