#!/bin/bash # Makes Fcitx5 start with m3ui at every login. Writes two user level overrides, # one for the XDG autostart entry and one for D-Bus activation, nothing outside # $HOME is touched. If the addon cannot be loaded Fcitx5 falls back to classicui. # # Undo: delete the two files printed below and run # systemctl --user daemon-reload set -euo pipefail prefix=${PREFIX:-$HOME/.local/m3ui} config=${XDG_CONFIG_HOME:-$HOME/.config} data=${XDG_DATA_HOME:-$HOME/.local/share} lib=$(find "$prefix" -name libm3ui.so 2>/dev/null | head -1) [ -n "$lib" ] || { echo "libm3ui.so not found under $prefix, run scripts/install.sh first" >&2; exit 1; } addondir=$(dirname "$lib") system_addondir=$(pkg-config --variable=addondir Fcitx5Core 2>/dev/null || true) system_addondir=${system_addondir:-/usr/lib64/fcitx5} dirs="$addondir:$system_addondir" autostart=$config/autostart/org.fcitx.Fcitx5.desktop service=$data/dbus-1/services/org.fcitx.Fcitx5.service mkdir -p "$(dirname "$autostart")" "$(dirname "$service")" # Copy the system entry and change only the Exec line. sed -E "s#^Exec=/usr/bin/fcitx5\$#Exec=env FCITX_ADDON_DIRS=$dirs /usr/bin/fcitx5 -u m3ui#" \ /etc/xdg/autostart/org.fcitx.Fcitx5.desktop >"$autostart" grep -q '^Exec=env FCITX_ADDON_DIRS=' "$autostart" || { echo "unexpected system autostart file, nothing changed" >&2; rm -f "$autostart"; exit 1; } cat >"$service" <