From 4b3105e7411c9f5c6e7ed4ed237d4ebd802e8213bcf9671d3ca975328efc08f9 Mon Sep 17 00:00:00 2001 From: Marguerite Su Date: Sat, 15 Jan 2022 05:07:35 +0000 Subject: [PATCH] Accepting request 946559 from home:MargueriteSu:branches:M17N - can start via systemd user service on wayland - fix typo and requirements OBS-URL: https://build.opensuse.org/request/show/946559 OBS-URL: https://build.opensuse.org/package/show/M17N/fcitx5?expand=0&rev=19 --- 99-fcitx5.conf | 4 ++++ fcitx5.changes | 6 ++++++ fcitx5.service | 10 ++++++++++ fcitx5.spec | 33 ++++++++++++++++++++++----------- input-method.py3 | 37 +++++++++++++++++++++++++++++++++++++ 5 files changed, 79 insertions(+), 11 deletions(-) create mode 100644 99-fcitx5.conf create mode 100644 fcitx5.service create mode 100644 input-method.py3 diff --git a/99-fcitx5.conf b/99-fcitx5.conf new file mode 100644 index 0000000..5e17018 --- /dev/null +++ b/99-fcitx5.conf @@ -0,0 +1,4 @@ +XMODIFIERS=@im=${INPUT_METHOD} +GTK_IM_MODULE=${INPUT_METHOD} +QT_IM_SWITCHER=imsw-multi +QT_IM_MODULE=${INPUT_METHOD} diff --git a/fcitx5.changes b/fcitx5.changes index 59af48a..613de85 100644 --- a/fcitx5.changes +++ b/fcitx5.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Sat Jan 15 05:05:58 UTC 2022 - Marguerite Su + +- can start via systemd user service on wayland +- fix typo and requirements + ------------------------------------------------------------------- Wed Dec 8 01:49:47 UTC 2021 - Tranter Madi diff --git a/fcitx5.service b/fcitx5.service new file mode 100644 index 0000000..a42f30f --- /dev/null +++ b/fcitx5.service @@ -0,0 +1,10 @@ +[Unit] +Description=Next generation of Flexible Input Method Framework +Conflicts=ibus.service fcitx.service + +[Service] +ExecStart=/usr/bin/fcitx5 -D + +[Install] +Alias=input-method.service +WantedBy=default.target diff --git a/fcitx5.spec b/fcitx5.spec index 5a7262f..e4506ab 100644 --- a/fcitx5.spec +++ b/fcitx5.spec @@ -32,6 +32,9 @@ Source2: https://raw.githubusercontent.com/fcitx/fcitx-artwork/master/log Source3: xim.d-fcitx5 Source4: macros.fcitx5 Source99: baselibs.conf +Source100: input-method.py3 +Source101: 99-fcitx5.conf +Source102: fcitx5.service Patch0: fcitx5-no-download.patch Patch1: fcitx5-gcc7.patch BuildRequires: Mesa-libEGL-devel @@ -71,13 +74,6 @@ BuildRequires: xkeyboard-config %if 0%{?suse_version} <= 1520 BuildRequires: appstream-glib-devel %endif -Requires: libFcitx5Config6 = %{version} -Requires: libFcitx5Core7 = %{version} -Requires: libFcitx5Utils2 = %{version} -Recommends: fcitx5-gtk2 -Recommends: fcitx5-gtk3 -Recommends: fcitx5-qt4 -Recommends: fcitx5-qt5 Provides: fcitx = %{version} Obsoletes: fcitx <= 4.2.9.8 %if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150200 && 0%{?is_opensuse} @@ -85,6 +81,7 @@ BuildRequires: rsvg-convert %else BuildRequires: rsvg-view %endif +%systemd_requires %description Fcitx 5 is a generic input method framework. @@ -102,8 +99,8 @@ This package provides development files for fcitx5. %package -n libFcitx5Config6 Summary: Configuration library for fcitx5 Group: System/Libraries -Provides: libFcitx5Core5 = %{version} -Obsoletes: libFcitx5Core5 < %{version} +Provides: libFcitx5Config5 = %{version} +Obsoletes: libFcitx5Config5 < %{version} %description -n libFcitx5Config6 This package provides configuration libraries for fcitx5. @@ -150,7 +147,7 @@ ln -sf %{_datadir}/applications/org.fcitx.Fcitx5.desktop %{buildroot}%{_sysconfd # create autostart mkdir -p %{buildroot}%{_distconfdir}/X11/xim.d/ -install -m 644 %{SOURCE3} %{buildroot}%{_distconfdir}/X11/xim.d/fcitx +install -m 644 %{SOURCE3} %{buildroot}%{_distconfdir}/X11/xim.d/fcitx5 priority=30 pushd %{buildroot}%{_distconfdir}/X11/xim.d/ @@ -159,11 +156,16 @@ pushd %{buildroot}%{_distconfdir}/X11/xim.d/ de fr it es nl cs pl da nn nb fi en sv ; do mkdir $lang pushd $lang - ln -s ../fcitx $priority-fcitx + ln -s ../fcitx5 $priority-fcitx5 popd done popd +# install environment generator for wayland +install -D -m 0755 %{SOURCE100} %{buildroot}%{_systemd_user_env_generator_dir}/99-fcitx5.py3 +install -D -m 0644 %{SOURCE101} %{buildroot}%{_environmentdir}/99-fcitx5.conf +install -D -m 0644 %{SOURCE102} %{buildroot}%{_userunitdir}/fcitx5.service + # install icons for i in 16 22 24 32 48 512; do mkdir -p %{buildroot}%{_datadir}/icons/hicolor/${i}x${i}/apps/ @@ -185,6 +187,10 @@ install -Dm 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/rpm/macros.fcitx5 %find_lang fcitx5 %fdupes %{buildroot} +%systemd_user_pre fcitx5.service +%systemd_user_post fcitx5.service +%systemd_user_preun fcitx5.service +%systemd_user_postun fcitx5.service %post -p /sbin/ldconfig %post -n libFcitx5Config6 -p /sbin/ldconfig %post -n libFcitx5Core7 -p /sbin/ldconfig @@ -197,6 +203,8 @@ install -Dm 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/rpm/macros.fcitx5 %files -f fcitx5.lang %doc README.md %license LICENSES +%dir %{_systemd_user_env_generator_dir} +%dir %{_environmentdir} %{_distconfdir}/X11/xim.d/ %{_sysconfdir}/xdg/autostart/org.fcitx.Fcitx5.desktop %{_bindir}/fcitx5 @@ -204,6 +212,9 @@ install -Dm 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/rpm/macros.fcitx5 %{_bindir}/fcitx5-remote %{_bindir}/fcitx5-diagnose %{_libdir}/fcitx5 +%{_systemd_user_env_generator_dir}/99-fcitx5.py3 +%{_environmentdir}/99-fcitx5.conf +%{_userunitdir}/fcitx5.service %{_datadir}/applications/org.fcitx.Fcitx5.desktop %{_datadir}/applications/fcitx5-configtool.desktop %{_datadir}/fcitx5 diff --git a/input-method.py3 b/input-method.py3 new file mode 100644 index 0000000..4864595 --- /dev/null +++ b/input-method.py3 @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +from os import listdir +from os.path import isdir, isfile, join + +def get_input_methods(): + mypath = "/etc/X11/xim.d/en" + files = [] + if isdir(mypath): + files = [f for f in listdir(mypath) if isfile(join(mypath, f))] + if not files: + mypath = "/usr/etc/X11/xim.d/en" + if isdir(mypath): + files = [f for f in listdir(mypath) if isfile(join(mypath, f))] + return files + +def get_current_input_method(): + i = 0 + j = 0 + s = "" + m = get_input_methods() + if not m: + return s + for im in m: + arr = im.split('-') + if j == 0: + i = arr[0] + s = arr[1] + j+=1 + continue + if int(arr[0]) < i: + i = arr[0] + s = arr[1] + j+=1 + return s + +print("INPUT_METHOD={}".format(get_current_input_method()))