How to Install OpenPLC Editor on CachyOS (Arch Linux)
OpenPLC Editor is an open-source IEC 61131-3 development environment for ladder logic, structured text, and function block diagrams. Because CachyOS is a rolling-release distribution based on Arch Linux, compiling the editor from source often breaks against cutting-edge system Python and GCC libraries.
Using the official standalone AppImage eliminates Python 3.9/wxPython dependency conflicts, isolates the application, and keeps your system packages clean.
Prerequisites
AppImages require FUSE (Filesystem in Userspace) version 2 to mount and execute properly on Arch-based distributions.
Open your terminal and install fuse2:
Bash
sudo pacman -S --needed fuse2
Step 1: Download OpenPLC Editor AppImage
Create a dedicated local folder for your user applications and download the official AppImage directly from the project release page.
- Create the application directory:
Bashmkdir -p ~/.local/share/apps cd ~/.local/share/apps - Download the AppImage:
- Navigate to the OpenPLC Official Downloads page or the OpenPLC GitHub Releases.
- Save the Linux AppImage (
OpenPLC.Editor-4.3.0.appimageor current release) into~/.local/share/apps/.
- Make the AppImage executable:
Bashchmod +x ~/.local/share/apps/OpenPLC.Editor-*.appimage
Step 2: Extract the Official Application Icon
To give the application a clean look in your desktop application launcher, extract the built-in icon directly from the AppImage payload:
- Create your user icons folder:
Bashmkdir -p ~/.local/share/icons - Extract and copy the icon:
Bashcd ~/.local/share/apps ./OpenPLC.Editor-*.appimage --appimage-extract "*.png" find squashfs-root -type f -name "open-plc-editor.png" -exec cp {} ~/.local/share/icons/openplc.png \; rm -rf squashfs-root
(Alternative fallback if extraction is skipped):
Bash
curl -sL -o ~/.local/share/icons/openplc.png "https://raw.githubusercontent.com/thiagoralves/OpenPLC_Editor/master/editor/images/bridget.png"
Step 3: Create the Desktop Application Menu Shortcut
Desktop entry files (.desktop) must be placed in ~/.local/share/applications/ to be indexed by desktop environments like KDE Plasma, GNOME, or XFCE.
Important:
.desktopfiles do not expand shell variables like$HOME. You must supply the absolute path to your home directory.
Generate the desktop launcher with this automated script (it automatically inputs your current user path):
Bash
mkdir -p ~/.local/share/applications
cat <<EOF > ~/.local/share/applications/OpenPLC.desktop
[Desktop Entry]
Type=Application
Name=OpenPLC Editor
Comment=IEC 61131-3 PLC Programming Environment
Exec=$HOME/.local/share/apps/$(ls ~/.local/share/apps | grep -i openplc | head -n 1)
Icon=$HOME/.local/share/icons/openplc.png
Terminal=false
Categories=Development;Engineering;IDE;
StartupWMClass=openplc-editor
EOF
Mark the shortcut as executable and refresh your desktop database:
Bash
chmod +x ~/.local/share/applications/OpenPLC.desktop
update-desktop-database ~/.local/share/applications
Step 4: Configure Serial Port Permissions (For Hardware Uploads)
If you plan to flash logic programs to external hardware targets (Arduino, ESP32, Raspberry Pi Pico, Modbus RTU gateways, or serial breakout boards), your user account must belong to the serial communication groups.
On Arch Linux / CachyOS, serial devices are managed by the uucp group (and occasionally dialout or lock):
Bash
sudo usermod -aG uucp,lock $USER
Note: You must log out and log back in (or reboot) for group permissions to take effect.
To verify your active group memberships after re-logging in:
Bash
groups
Quick Reference / Unattended Multi-Machine Setup Script
For quick deployment across other CachyOS or Arch machines, place the downloaded OpenPLC.Editor-*.appimage into ~/Downloads and run this one-liner script:
Bash
#!/usr/bin/env bash
set -e
echo "=== Installing Dependencies ==="
sudo pacman -S --needed fuse2
echo "=== Setting up Directories ==="
mkdir -p ~/.local/share/apps ~/.local/share/icons ~/.local/share/applications
echo "=== Moving and Configuring AppImage ==="
mv ~/Downloads/OpenPLC*.appimage ~/.local/share/apps/
APPIMAGE_PATH=$(ls ~/.local/share/apps/OpenPLC*.appimage | head -n 1)
chmod +x "$APPIMAGE_PATH"
echo "=== Extracting Icon ==="
cd ~/.local/share/apps
"$APPIMAGE_PATH" --appimage-extract "*.png" > /dev/null 2>&1 || true
find squashfs-root -type f -name "*plc*.png" -exec cp {} ~/.local/share/icons/openplc.png \; 2>/dev/null || true
rm -rf squashfs-root
if [ ! -f ~/.local/share/icons/openplc.png ]; then
curl -sL -o ~/.local/share/icons/openplc.png "https://raw.githubusercontent.com/thiagoralves/OpenPLC_Editor/master/editor/images/bridget.png"
fi
echo "=== Generating Desktop Launcher ==="
cat <<EOF > ~/.local/share/applications/OpenPLC.desktop
[Desktop Entry]
Type=Application
Name=OpenPLC Editor
Comment=IEC 61131-3 PLC Programming Environment
Exec=$APPIMAGE_PATH
Icon=$HOME/.local/share/icons/openplc.png
Terminal=false
Categories=Development;Engineering;IDE;
StartupWMClass=openplc-editor
EOF
chmod +x ~/.local/share/applications/OpenPLC.desktop
update-desktop-database ~/.local/share/applications
echo "=== Adding User to Serial Groups ==="
sudo usermod -aG uucp,lock $USER
echo "=== Installation Complete! OpenPLC Editor is now in your Start Menu. ==="

