Desktop GUI client for the Barev protocol, written in Odin with barev-odin and the Skald GUI framework.
The current application provides first-run identity setup, persistent contacts, pinned peers and theme settings, local and peer avatars, presence and connection controls, a responsive compact-to-wide interface, a nonblocking network polling loop, peer management, typing indicators, unread counts, desktop notifications, file transfers with progress and cancellation.
Skald and barev-odin are pinned as Git submodules under vendor/. Clone this repository recursively:
git clone --recurse-submodules https://github.com/nerdyslacker/parior-messenger.gitFor an existing clone, initialize it with:
git submodule update --init --recursiveThe repository contains both dependencies at these default paths:
parior-messenger/
vendor/
barev-odin/
skald/
The Makefile passes the vendored directories as Odin collection roots. Override either dependency location when necessary:
make build SKALD_ROOT=/path/to/Skald BAREV_ROOT=/path/to/barev-odinSkald requires SDL3 and a Vulkan loader/driver. See its platform documentation for system setup.
Parior uses Fontconfig to discover installed Unicode fonts and registers them as shaped fallbacks for Armenian, Arabic, Hebrew, Indic scripts, CJK, and other modern writing systems. Install fontconfig and your distribution's Noto font packages for the broadest language coverage. Missing system fonts degrade to the bundled Inter face rather than preventing startup.
On Linux, desktop notifications use notify-send, supplied by the distribution's libnotify command-line tools. Notification delivery is skipped silently when it is unavailable.
Build and install Parior system-wide with:
sudo make installThis installs:
/usr/bin/parior
/usr/share/icons/hicolor/256x256/apps/parior.png
/usr/share/applications/parior.desktop
The desktop entry registers Parior Messenger with the desktop environment, and the installed icon is available through the standard hicolor icon theme.
By default, make install uses /usr as the installation prefix. A different prefix can be selected with PREFIX:
make install PREFIX=/usr/localFor packaging systems, use DESTDIR to stage the installation:
make DESTDIR="$pkgdir" installThe install target builds the optimized release binary automatically. To install to a custom staging directory without requiring root privileges:
make DESTDIR="$PWD/pkg" installAfter installation, Parior Messenger can be launched from the application menu or directly with:
pariorRemove a system-wide installation with:
sudo make uninstallmake check
make style
make build
make run
make releaseRun with default loopback development settings:
./build/pariorOr provide identity and listener settings:
./build/parior <nick> <bind-ipv6> [port]The defaults are parior, ::1, and Barev's default port. Add peers in the application using nick@ipv6 or nick@[ipv6]:port.
Without command-line overrides, the first launch asks for the local identity before starting Barev. Settings and contacts are stored under the platform user configuration directory in parior-messenger/.
Use named profiles and different listener ports to run isolated instances. Each profile has its own identity, contacts, pins, theme, and avatar settings:
./build/parior --profile alice alice ::1 5299
./build/parior --profile bob bob ::1 5300Then add bob@[::1]:5300 as a peer in Alice's window and alice@[::1]:5299 in Bob's window. Profile names are shown in the window titles and stored below parior-messenger/<profile>/ in the platform configuration directory. --profile=alice is also accepted.
Barev peers authenticate by nickname and IPv6 address, so both users must add each other and the address in each contact must exactly match the other profile's configured bind address. Saved contacts connect automatically at startup, and selecting one opens its conversation.
Each concurrently running instance must use a different port. If a configured address or port is unavailable, the application stays open on the setup screen and displays the startup error so the port can be changed.
Use make build (or include -define:ODIN_NBIO_QUEUE_SIZE=128 in a manual
odin build command). Odin's larger Linux default io_uring can exhaust the
locked-memory allowance when a second GUI process starts.

