Skip to content

Commit af0eee4

Browse files
committed
start fcitx5 using a script if necessary
1 parent aa8b58a commit af0eee4

File tree

6 files changed

+32
-5
lines changed

6 files changed

+32
-5
lines changed

CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ option(ENABLE_SERVER "Build a fcitx as server, disable this option if you want t
3636
option(ENABLE_KEYBOARD "Enable key event translation with XKB and build keyboard engine" On)
3737
option(USE_SYSTEMD "Use systemd for event loop and dbus, will fallback to libuv/libdbus if not found. Only used when EVENT_LOOP_BACKEND is auto." On)
3838
option(ENABLE_XDGAUTOSTART "Enable xdg autostart desktop file installation" On)
39+
option(ENABLE_START_SCRIPT "Enable to start fcitx5 using a script" On)
3940
option(USE_FLATPAK_ICON "Use flatpak icon name for desktop files" Off)
4041
option(ENABLE_EMOJI "Enable emoji module" On)
4142
option(ENABLE_LIBUUID "Use libuuid for uuid generation" On)
@@ -180,6 +181,13 @@ if(ENABLE_ENCHANT)
180181
endif()
181182
endif()
182183

184+
if (ENABLE_START_SCRIPT)
185+
set(FCITX_START_EXEC "fcitx5-exec")
186+
else()
187+
set(FCITX_START_EXEC "fcitx5")
188+
endif()
189+
add_compile_definitions(FCITX_START_EXEC="${FCITX_START_EXEC}")
190+
183191
if (TARGET Wayland::Client AND ENABLE_WAYLAND)
184192
set(WAYLAND_FOUND TRUE)
185193
else()

data/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/org.fcitx.Fcitx5.desktop.in.in
66
${CMAKE_CURRENT_BINARY_DIR}/org.fcitx.Fcitx5.desktop.in @ONLY)
77
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fcitx5-diagnose.sh
88
${CMAKE_CURRENT_BINARY_DIR}/fcitx5-diagnose ESCAPE_QUOTES @ONLY)
9+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/fcitx5-exec.sh
10+
${CMAKE_CURRENT_BINARY_DIR}/fcitx5-exec ESCAPE_QUOTES @ONLY)
911

1012
fcitx5_translate_desktop_file(${CMAKE_CURRENT_BINARY_DIR}/fcitx5-configtool.desktop.in
1113
fcitx5-configtool.desktop)
@@ -18,6 +20,11 @@ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/org.fcitx.Fcitx5.desktop"
1820
"${CMAKE_CURRENT_BINARY_DIR}/fcitx5-configtool.desktop"
1921
DESTINATION "${FCITX_INSTALL_DATADIR}/applications")
2022

23+
if (ENABLE_START_SCRIPT)
24+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/fcitx5-exec" DESTINATION ${FCITX_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
25+
GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
26+
endif()
27+
2128
if (ENABLE_XDGAUTOSTART)
2229
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/org.fcitx.Fcitx5.desktop" DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/xdg/autostart)
2330
endif()

data/fcitx5-exec.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/sh
2+
3+
export XDG_DATA_DIRS=/usr/share:/usr/local/share:${XDG_DATA_DIRS}
4+
export FCITX_ADDON_DIRS=/usr/lib/fcitx5:/usr/local/lib/fcitx5:@FCITX_INSTALL_ADDONDIR@:${FCITX_ADDON_DIRS}
5+
export PATH=/usr/bin:/usr/local/bin:${PATH}
6+
7+
exec @FCITX_INSTALL_BINDIR@/fcitx5 "$@"

data/fcitx5.sh.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/bin/sh
2+
3+
export FCITX_ADDON_DIRS=${FCITX_ADDON_DIRS}
4+
export XDG_DATA_DIRS=${XDG_DATA_DIRS}
5+
export PATH=${PATH}
6+
7+
exec @FCITX_INSTALL_BINDIR@/fcitx5

data/org.fcitx.Fcitx5.desktop.in.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Name=Fcitx 5
33
GenericName=Input Method
44
Comment=Start Input Method
5-
Exec=@FCITX_INSTALL_BINDIR@/fcitx5
5+
Exec=@FCITX_START_EXEC@
66
Icon=@FCITX_ICON_NAME@
77
Terminal=false
88
Type=Application

src/server/main.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,9 @@ int main(int argc, char *argv[]) {
9090
std::vector<std::string> args;
9191
if (isInFlatpak()) {
9292
args = {"flatpak-spawn",
93-
StandardPaths::fcitxPath("bindir", "fcitx5").string(),
94-
"-rd"};
93+
StandardPath::fcitxPath("bindir", FCITX_START_EXEC), "-rd"};
9594
} else {
96-
args = {StandardPaths::fcitxPath("bindir", "fcitx5").string(),
97-
"-r"};
95+
args = {StandardPath::fcitxPath("bindir", FCITX_START_EXEC), "-r"};
9896
}
9997
startProcess(args);
10098
}

0 commit comments

Comments
 (0)