diff --git a/overlay/rootfs/usr/bin/bananarchy-x11-session.sh b/overlay/rootfs/usr/bin/bananarchy-x11-session.sh index d077b21..5c48a5c 100755 --- a/overlay/rootfs/usr/bin/bananarchy-x11-session.sh +++ b/overlay/rootfs/usr/bin/bananarchy-x11-session.sh @@ -36,15 +36,15 @@ export QT_IM_MODULE=fcitx export XMODIFIERS=@im=fcitx if [ -d /home/user/.local/x11 ]; then - export FCITX_ADDON_DIRS=/home/user/.local/x11:/usr/lib/fcitx5 + export FCITX_ADDON_DIRS=/home/user/.local/lib/fcitx5:/home/user/.local/x11:/usr/lib/fcitx5 export LD_LIBRARY_PATH=/tmp/x11/usr/lib:/usr/lib:/lib - export PATH=/home/user/.config/sxmo/hooks:/home/user/.local/bin:/tmp/x11/usr/bin:/usr/share/sxmo/default_hooks:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin + export PATH=/home/user/.local/bin:/home/user/.config/sxmo/hooks:/tmp/x11/usr/bin:/usr/share/sxmo/default_hooks:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin rm -rf /tmp/x11 ln -s /home/user/.local/x11 /tmp/x11 cp -f /home/user/.local/x11/xorg-bananarchy.conf /tmp/xorg-bananarchy.conf 2>/dev/null || true else - export FCITX_ADDON_DIRS=/usr/lib/fcitx5 - export PATH=/home/user/.config/sxmo/hooks:/home/user/.local/bin:/usr/share/sxmo/default_hooks:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin + export FCITX_ADDON_DIRS=/home/user/.local/lib/fcitx5:/usr/lib/fcitx5 + export PATH=/home/user/.local/bin:/home/user/.config/sxmo/hooks:/usr/share/sxmo/default_hooks:/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin cp -f /etc/X11/xorg.conf.d/10-bananarchy-msm8909.conf /tmp/xorg-bananarchy.conf 2>/dev/null || true fi diff --git a/overlay/rootfs/usr/bin/st b/overlay/rootfs/usr/bin/st index 6fc50f5..b7cdf18 100755 Binary files a/overlay/rootfs/usr/bin/st and b/overlay/rootfs/usr/bin/st differ diff --git a/overlay/rootfs/usr/lib/dwm/plugins/dmenu.so b/overlay/rootfs/usr/lib/dwm/plugins/dmenu.so index 43dc745..0bf9d92 100755 Binary files a/overlay/rootfs/usr/lib/dwm/plugins/dmenu.so and b/overlay/rootfs/usr/lib/dwm/plugins/dmenu.so differ diff --git a/overlay/rootfs/usr/lib/fcitx5/libt9.so b/overlay/rootfs/usr/lib/fcitx5/libt9.so index 356e00c..57973d6 100755 Binary files a/overlay/rootfs/usr/lib/fcitx5/libt9.so and b/overlay/rootfs/usr/lib/fcitx5/libt9.so differ diff --git a/overlay/rootfs/usr/lib/fcitx5/t9.so b/overlay/rootfs/usr/lib/fcitx5/t9.so index 356e00c..57973d6 100755 Binary files a/overlay/rootfs/usr/lib/fcitx5/t9.so and b/overlay/rootfs/usr/lib/fcitx5/t9.so differ diff --git a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_apps.sh b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_apps.sh index 3ca2166..3c350e0 100755 --- a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_apps.sh +++ b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_apps.sh @@ -6,10 +6,11 @@ # include common definitions \ # shellcheck source=configs/default_hooks/sxmo_hook_icons.sh +export PATH="${HOME:-/home/user}/.local/bin:${HOME:-/home/user}/.config/sxmo/hooks:/usr/share/sxmo/default_hooks:$PATH" . sxmo_hook_icons.sh APPS_CACHE="${XDG_RUNTIME_DIR:-/tmp}/sxmo_apps.cache" -if [ -f "$APPS_CACHE" ] && [ ! "$0" -nt "$APPS_CACHE" ] && [ ! /usr/bin -nt "$APPS_CACHE" ] && [ ! /usr/local/bin -nt "$APPS_CACHE" ]; then +if [ -f "$APPS_CACHE" ] && [ ! "$0" -nt "$APPS_CACHE" ] && [ ! /usr/bin -nt "$APPS_CACHE" ] && [ ! /usr/local/bin -nt "$APPS_CACHE" ] && [ ! "${HOME:-/home/user}/.local/bin" -nt "$APPS_CACHE" ]; then cat "$APPS_CACHE" exit 0 fi @@ -48,7 +49,7 @@ write_line_app bantam "$icon_trm Bantam" 'cd "$HOME" && sxmo_terminal.sh bantam' write_line_app baobab "$icon_pie Baobab" "baobab" write_line_app bluetuith "$icon_bth Bluetuith" "sxmo_terminal.sh bluetuith" write_line_app calcurse "$icon_clk Calcurse" "sxmo_terminal.sh calcurse" -write_line_app bananarchy-photo "$icon_cam Camera" "bananarchy-photo --menu" +write_line_app xcamera "$icon_cam Camera" "xcamera" write_line_app celluloid "$icon_mvi Celluloid" "celluloid" write_line_app chatty "$icon_msg Chatty" "chatty" ([ -z "$WAYLAND_DISPLAY" ] && command -v clipmenu >/dev/null) && \ @@ -203,7 +204,7 @@ write_line_app siglo "$icon_clk Siglo" "siglo" write_line_app simple-scan "$icon_scn Simple Scan" "simple-scan" write_line_app snapshot "$icon_cam Snapshot" "snapshot" write_line_app solanum "$icon_pom Solanum" "solanum" -write_line_app st "$icon_trm St" "st -e ${SHELL:-/bin/sh}" +write_line_app st "$icon_trm Terminal" "st -e ${SHELL:-/bin/sh}" write_line_app supertuxkart "$icon_krt SuperTuxKart" "supertuxkart" write_line_app surf "$icon_glb Surf" "surf" write_line_app syncthing "$icon_rld Syncthing" "syncthing" diff --git a/prebuilt/fcitx5-t9/usr/lib/fcitx5/libt9.so b/prebuilt/fcitx5-t9/usr/lib/fcitx5/libt9.so index 356e00c..57973d6 100755 Binary files a/prebuilt/fcitx5-t9/usr/lib/fcitx5/libt9.so and b/prebuilt/fcitx5-t9/usr/lib/fcitx5/libt9.so differ diff --git a/prebuilt/fcitx5-t9/usr/lib/fcitx5/t9.so b/prebuilt/fcitx5-t9/usr/lib/fcitx5/t9.so index 356e00c..57973d6 100755 Binary files a/prebuilt/fcitx5-t9/usr/lib/fcitx5/t9.so and b/prebuilt/fcitx5-t9/usr/lib/fcitx5/t9.so differ diff --git a/prebuilt/sxmo-x11/usr/bin/st b/prebuilt/sxmo-x11/usr/bin/st index 6fc50f5..b7cdf18 100755 Binary files a/prebuilt/sxmo-x11/usr/bin/st and b/prebuilt/sxmo-x11/usr/bin/st differ diff --git a/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so b/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so index 43dc745..0bf9d92 100755 Binary files a/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so and b/prebuilt/sxmo-x11/usr/lib/dwm/plugins/dmenu.so differ diff --git a/src/fcitx5-t9/src/t9.cpp b/src/fcitx5-t9/src/t9.cpp index e865ccb..e6e567a 100644 --- a/src/fcitx5-t9/src/t9.cpp +++ b/src/fcitx5-t9/src/t9.cpp @@ -267,11 +267,10 @@ T9Engine::T9Engine(fcitx::Instance* instance) fcitx::EventType::InputContextDestroyed, fcitx::EventWatcherPhase::PreInputMethod, [this](fcitx::Event& event) { - auto& icEvent = static_cast(event); - if (auto* ic = icEvent.inputContext()) { - if (auto* state = ic->propertyFor(&factory)) { - state->onFocusChange(); - } + FCITX_UNUSED(event); + if (sharedMode == T9Mode::Ctrl) { + sharedMode = T9Mode::Lower; + writeStatusIndicator("[abc]"); } }); writeStatusIndicator("[abc]"); @@ -938,9 +937,14 @@ void T9State::cancelCommit() { } void T9State::resetUI() { + if (!ic) { + return; + } ic->inputPanel().reset(); - ic->updatePreedit(); - ic->updateUserInterface(fcitx::UserInterfaceComponent::InputPanel); + if (ic->hasFocus()) { + ic->updatePreedit(); + ic->updateUserInterface(fcitx::UserInterfaceComponent::InputPanel); + } } void T9State::showStatusBanner(const std::string& msg) { diff --git a/src/sxmo-dmenu/dmenu.c b/src/sxmo-dmenu/dmenu.c index 6c2852e..727a3b1 100644 --- a/src/sxmo-dmenu/dmenu.c +++ b/src/sxmo-dmenu/dmenu.c @@ -1558,6 +1558,14 @@ add_parsed_choice_line(const char *line) trim_inplace(cmd); if (!label[0] || !cmd[0]) return; + for (size_t i = 0; i < items_count; i++) { + if (items[i].text && strcmp(items[i].text, label) == 0) + return; + if (items[i].text && strstr(label, "Themes") && strstr(items[i].text, "Themes")) + return; + if (items[i].text && strstr(label, "Bantam") && strstr(items[i].text, "Bantam")) + return; + } int loop = (strchr(loop_str, '1') != NULL) ? 1 : 0; if (strncmp(cmd, "sxmo_appmenu.sh ", 16) == 0) { const char *sub = cmd + 16; @@ -1751,9 +1759,24 @@ open_builtin_menu(const char *menu_name, int keep_idx) } else if (strcmp(menu_name, "applications") == 0) { reset_session_defaults(1, "Apps"); append_active_call_entries(); - snprintf(label, sizeof(label), "%s Themes", ICON_THM); - add_menu_item(label, "@plugin:themes", 0); + const char *home = getenv("HOME"); + char bpath[256]; + snprintf(bpath, sizeof(bpath), "%s/.local/bin/bantam", (home && home[0]) ? home : "/home/user"); + if (access("/usr/bin/bantam", X_OK) == 0 || access("/usr/local/bin/bantam", X_OK) == 0 || access(bpath, X_OK) == 0) { + snprintf(label, sizeof(label), "%s Bantam", ICON_TRM); + add_menu_item(label, "cd \"$HOME\" && sxmo_terminal.sh bantam", 0); + } load_cache_or_hook("sxmo_apps.cache", "sxmo_hook_apps.sh"); + snprintf(label, sizeof(label), "%s Themes", ICON_THM); + int has_themes = 0; + for (size_t i = 0; i < items_count; i++) { + if (items[i].text && strstr(items[i].text, "Themes")) { + has_themes = 1; + break; + } + } + if (!has_themes) + add_menu_item(label, "@plugin:themes", 0); snprintf(label, sizeof(label), "%s System Menu", ICON_MNU); add_menu_item(label, "@menu:sys", 1); snprintf(label, sizeof(label), "%s Close Menu", ICON_CLS); diff --git a/src/sxmo-st/x.c b/src/sxmo-st/x.c index 6589f7c..2c54876 100644 --- a/src/sxmo-st/x.c +++ b/src/sxmo-st/x.c @@ -1118,11 +1118,14 @@ ximopen(Display *dpy) xw.ime.xic = XCreateIC(xw.ime.xim, XNInputStyle, XIMPreeditNothing | XIMStatusNothing, XNClientWindow, xw.win, + XNFocusWindow, xw.win, XNDestroyCallback, &icdestroy, NULL); } if (xw.ime.xic == NULL) fprintf(stderr, "XCreateIC: Could not create input context.\n"); + else if (win.mode & MODE_FOCUSED) + XSetICFocus(xw.ime.xic); return 1; } @@ -1981,6 +1984,8 @@ run(void) if (ev.type == ConfigureNotify) { w = ev.xconfigure.width; h = ev.xconfigure.height; + } else if (ev.type == FocusIn || ev.type == FocusOut) { + focus(&ev); } } while (ev.type != MapNotify);