Files
pi-im/README.md
2025-09-02 13:21:40 +01:00

8.6 KiB
Raw Blame History

Pi screenshot

the XMPP client from hell

it's 10% code. 20% ai

Experimental and extremely weird XMPP client written in Go. No solicitors.

pi is currently pre-pre-pre-pre alpha software which you should not use as your primary XMPP client.

pi uses Fyne for the frontend and uses the Oasis SDK by Joseph Winkie for XMPP functionality.

pi is an extremely opinionated client. It aims to have as little extra windows as possible, instead using alt-menus to perform many of the actions you'd see in a typical client.

διαμόρφωση

(configuration)

When you launch pi, you will be greeted with a create account screen. You will then be able to enter your XMPP account details and then relaunch the application to log in.

If you want to add MUCs or DMs, you must configure the program by editing the pi.xml file. Here is an example configuration:

<piConfig>
	<Login>
		<Host>example.com:5222</Host>
		<User>user@example.com</User>
		<Password>123456789</Password>
		<DisplayName>sunglocto</DisplayName>
		<TLSoff>false</TLSoff>
		<StartTLS>true</StartTLS>
		<MucsToJoin>room1@muc.example.com</MucsToJoin>
		<MucsToJoin>room2@muc.example.com</MucsToJoin>
	</Login>
	<Notifications>true</Notifications>
	<DMs>person1@example.com</DMs>
</piConfig>

The file is usually located at, on GNU/Linux systems:

~/.config/fyne/pi-im/Documents/pi.xml

This will be changed eventually, likely before a 3b release.

Currently joining and saving DM tabs is not supported, nor is getting avatars, reactions or encryption.

As of writing, pi supports basic message sending and receiving, replies, file upload and corrections.

να χτίσω

(building)

To build pi, you will need the latest version of Go, at least 1.21. You can grab it here.

You must have a C compiler on your system also present. This will be the case for virtually all PC operating systems except Windows.

The build instructions are very simple. Simply clone the repo, fetch the repositories and build the program.

Here is a summary of the commands you would need to use:

git clone https://forge.sunglocto.net/sunglocto/pi-im
cd pi-im
go mod tidy
go build .
./pi-im

Uh, Windows???

Windows requires more steps to setup, specifically you need an MSYS2 environment. As per the Fyne documentation

The MSYS2 platform is the recommended approach for working on Windows. Proceed as follows:

Install MSYS2 from msys2.org
Once installed do not use the MSYS terminal that opens
Open “MSYS2 MinGW 64-bit” from the start menu

Execute the following commands (if asked for install options be sure to choose “all”):

 $ pacman -Syu
 $ pacman -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-go

You will need to add ~/Go/bin to your $PATH, for MSYS2 you can paste the following command into your terminal:

 $ echo "export PATH=\$PATH:~/Go/bin" >> ~/.bashrc

For the compiler to work on other terminals you will need to set up the windows %PATH% variable to find these tools. Go to the “Edit the system environment variables” control panel, tap “Advanced” and add “C:\msys64\mingw64\bin” to the Path list.
image

pi has been tested on FreeBSD and NetBSD with no issues. Please read their respective Wiki entries.

Static executable snapshots are also provided for GNU/Linux systems on every new version.

Wayland

On BSD and Linux systems, you may want to build an executable for Wayland only, meaning it will not run through XWayland. This will increase performance and also allow drag-on-drop functionality. Most Wayland setups can run X11 apps, but no X11 setup can run Wayland apps. Because of this, all executables are shipped for use with X11. This may change in the future, but if you want to build for Wayland, it's as simple as the commands above, but just adding a wayland tag to the build command.

A Wayland-only executable will also substantially decrease the level of screen tearing and lag.

git clone https://forge.sunglocto.net/sunglocto/pi-im
cd pi-im
go mod tidy
go build -tags wayland .
./pi-im

εγκατάσταση

(installation)

pi currently has no consolidated way of installing it. There is an Arch User Repository package available, which is maintained by snit.

υποστήριξη

(support)

You can file an issue and explain the problem you are having.

If you would like a more instant method of communication, join the pi XMPP room.

εξαρτήσεις

(dependencies)

Running

Pi will require no additional dependencies to run on MacOS and Windows systems.

On other *NIX systems, dbus is needed for notification support, but is not required. If your system has an X11 or Wayland setup, Pi will most likely work without issues.

Pi does not require GTK, Qt or any other graphical layout.

Compiling

In general, you need Go, a C compiler and graphical libraries.

This information is from the the Fyne documentation. Windows and MacOS users are heavily reccomended to simply use pre-compiled binaries, due a more complex set of dependencies.

Linux systems:

Debian, Ubuntu and Raspberry Pi OS: sudo apt-get install golang gcc libgl1-mesa-dev xorg-dev libxkbcommon-dev

Fedora: sudo dnf install golang golang-misc gcc libXcursor-devel libXrandr-devel mesa-libGL-devel libXi-devel libXinerama-devel libXxf86vm-devel libxkbcommon-devel wayland-devel

Arch Linux: sudo pacman -S go xorg-server-devel libxcursor libxrandr libxinerama libxi libxkbcommon

Solus: sudo eopkg it -c system.devel golang mesalib-devel libxrandr-devel libxcursor-devel libxi-devel libxinerama-devel libxkbcommon-devel

openSUSE: sudo zypper install go gcc libXcursor-devel libXrandr-devel Mesa-libGL-devel libXi-devel libXinerama-devel libXxf86vm-devel libxkbcommon-devel

Void Linux: sudo xbps-install -S go base-devel xorg-server-devel libXrandr-devel libXcursor-devel libXinerama-devel libXxf86vm-devel libxkbcommon-devel wayland-devel

Alpine Linux: `sudo apk add go gcc libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev linux-headers mesa-dev libxkbcommon-dev wayland-dev``

NixOS: nix-shell -p libGL pkg-config xorg.libX11.dev xorg.libXcursor xorg.libXi xorg.libXinerama xorg.libXrandr xorg.libXxf86vm libxkbcommon wayland

BSD systems:

FreeBSD: sudo pkg install go gcc xorg pkgconf

OpenBSD: sudo pkg_add go

NetBSD: sudo pkgin install go pkgconf

αρμονία

(compatibility)

pi will run on the following operating systems:

  • Windows 10 and up
  • Most modern GNU/Linux installations
  • FreeBSD
  • NetBSD
  • OpenBSD
  • MacOS

pi has experimental support for the following operating system:

  • Android [1]

pi most likely will not run on the following operating systems:

  • 32-bit systems
  • iOS
  • ARM systems

If you use pi on a specific operating system and it does not work, file an issue and describe the problem you have having.

μαρτυρίες

(testimonials) From fellow insane and schizophrenic XMPP users:

anyways this is your "just IM" client things ig.

this looks like shit

fyne is the best UI toolkit (sarcastic)

i am going to explode you

pi devstream when

image image

επιπλέον

(extra)

pi version numbers are the digits of Pi followed by a letter indicating the phase of development the program is in.

For example, the version string:

3.14a

Is the third version produced in the alpha phase.

The digits of Pi will reset back to 3 when moving to a new phase.

If the number gets too long, it will reset to one digit of 2π. Once that gets too long, it will be digits of 3π and etc.

Named after Psi.

[1] Android is not a supported platform, however it's possible to compile and run pi for it. If you want to become suicidal, you can go for it, but pi is a primarily PC-oriented client. There are multiple mobile clients that already exist which will give you a substantially better experience.