all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* A question about im-config
@ 2017-01-22  0:57 tumashu
  2017-01-22  1:15 ` Danny Milosavljevic
  0 siblings, 1 reply; 8+ messages in thread
From: tumashu @ 2017-01-22  0:57 UTC (permalink / raw)
  To: guix

[-- Attachment #1: Type: text/plain, Size: 2347 bytes --]

Im-config (https://anonscm.debian.org/cgit/collab-maint/im-config.git) is a shell script which
used to manager input method by debian, I want to package it to guixsd, but many problem I faced:

1.  How to deal with "/usr/bin/XXX" in schell script, for example: /usr/bin/fcitx, /usr/bin/ibux ....
2.  How to deal with "
/usr/lib/*/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.
"



----------------------------------------------------------------

# start fcitx
# vim: set sts=4 expandtab:

if [ "$IM_CONFIG_PHASE" = 2 ]; then
# start fcitx daemon
/usr/bin/fcitx &
fi

if [ "$IM_CONFIG_PHASE" = 1 ]; then
# set variables for the plain XIM
XMODIFIERS=@im=fcitx

GTK_IM_MODULE=xim
# use immodule only when available for both GTK 2.0 and 3.0
IM_CONFIG_MARKER2=0
for IM_CONFIG_MARKER in /usr/lib/*/gtk-2.0/*/immodules/im-fcitx.so \
                        /usr/lib/gtk-2.0/*/immodules/im-fcitx.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        IM_CONFIG_MARKER2=1
        break
    fi
done

IM_CONFIG_MARKER3=0
for IM_CONFIG_MARKER in /usr/lib/*/gtk-3.0/*/immodules/im-fcitx.so \
                        /usr/lib/gtk-3.0/*/immodules/im-fcitx.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        IM_CONFIG_MARKER3=1
        break
    fi
done
if [ $IM_CONFIG_MARKER2 = 1 ] && [ $IM_CONFIG_MARKER3 = 1 ] ; then
    GTK_IM_MODULE=fcitx
fi

QT4_IM_MODULE=xim
# use immodule when available for Qt4
for IM_CONFIG_MARKER in /usr/lib/*/qt4/plugins/inputmethods/qtim-fcitx.so \
                        /usr/lib/qt4/plugins/inputmethods/qtim-fcitx.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        QT4_IM_MODULE=fcitx
        break
    fi
done

QT_IM_MODULE=xim
# use immodule when available for Qt5
for IM_CONFIG_MARKER in /usr/lib/*/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so ; do
    if [ -e $IM_CONFIG_MARKER ]; then
        QT_IM_MODULE=fcitx
        break
    fi
done


# This is placeholder at this moment.
CLUTTER_IM_MODULE=xim
# use immodule when available for clutter
for IM_CONFIG_MARKER in /usr/lib/*/clutter-imcontext/immodules/im-fcitx.so \
                        /usr/lib/clutter-imcontext/immodules/im-fcitx.so; do
    if [ -e $IM_CONFIG_MARKER ]; then
        CLUTTER_IM_MODULE=fcitx
        break
    fi
done
fi



------------------------------------------------------------------

[-- Attachment #2: Type: text/html, Size: 2587 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: A question about im-config
  2017-01-22  0:57 A question about im-config tumashu
@ 2017-01-22  1:15 ` Danny Milosavljevic
  2017-01-22  2:39   ` tumashu
  0 siblings, 1 reply; 8+ messages in thread
From: Danny Milosavljevic @ 2017-01-22  1:15 UTC (permalink / raw)
  To: tumashu; +Cc: guix

Hi tumashu,

On Sun, 22 Jan 2017 08:57:49 +0800 (CST)
tumashu <tumashu@163.com> wrote:

> Im-config (https://anonscm.debian.org/cgit/collab-maint/im-config.git) is a shell script which
> used to manager input method by debian, I want to package it to guixsd, but many problem I faced:
> 
> 1.  How to deal with "/usr/bin/XXX" in schell script, for example: /usr/bin/fcitx, /usr/bin/ibux ....
> 2.  How to deal with "
> /usr/lib/*/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.
> "

Please substitute paths by store paths. The intention is to make sure that im-config always keeps doing the same thing every time it is invoked.

To do that you can add a phase by:

(arguments
 `(#:phases
   (modify-phases %standard-phases
     (add-after 'unpack 'patch-paths
       (lambda* (#:key inputs outputs #:allow-other-keys)
         (substitute* "im-config"
           (("/usr/bin/fcitx") (string-append (assoc-ref inputs "fcitx") "/bin/fcitx"))
...
))))))

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re:Re: A question about im-config
  2017-01-22  1:15 ` Danny Milosavljevic
@ 2017-01-22  2:39   ` tumashu
  2017-01-22  8:06     ` Integrating different input methods into Guix Danny Milosavljevic
  0 siblings, 1 reply; 8+ messages in thread
From: tumashu @ 2017-01-22  2:39 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: guix

[-- Attachment #1: Type: text/plain, Size: 1344 bytes --]

The other problem is:

im-config include many im's config files and I cannot  let im-config depend all the im,
if fcitx is not installed,  How to deal with "/usr/bin/fcitx" in fcitx config file which is included in im-config?
just replace it with "fcitx"?









At 2017-01-22 09:15:26, "Danny Milosavljevic" <dannym@scratchpost.org> wrote:
>Hi tumashu,
>
>On Sun, 22 Jan 2017 08:57:49 +0800 (CST)
>tumashu <tumashu@163.com> wrote:
>
>> Im-config (https://anonscm.debian.org/cgit/collab-maint/im-config.git) is a shell script which
>> used to manager input method by debian, I want to package it to guixsd, but many problem I faced:
>> 
>> 1.  How to deal with "/usr/bin/XXX" in schell script, for example: /usr/bin/fcitx, /usr/bin/ibux ....
>> 2.  How to deal with "
>> /usr/lib/*/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.
>> "
>
>Please substitute paths by store paths. The intention is to make sure that im-config always keeps doing the same thing every time it is invoked.
>
>To do that you can add a phase by:
>
>(arguments
> `(#:phases
>   (modify-phases %standard-phases
>     (add-after 'unpack 'patch-paths
>       (lambda* (#:key inputs outputs #:allow-other-keys)
>         (substitute* "im-config"
>           (("/usr/bin/fcitx") (string-append (assoc-ref inputs "fcitx") "/bin/fcitx"))
>...
>))))))
>

[-- Attachment #2: Type: text/html, Size: 1682 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Integrating different input methods into Guix
  2017-01-22  2:39   ` tumashu
@ 2017-01-22  8:06     ` Danny Milosavljevic
  2017-01-22 23:57       ` tumashu
  2017-01-26  8:02       ` Chris Marusich
  0 siblings, 2 replies; 8+ messages in thread
From: Danny Milosavljevic @ 2017-01-22  8:06 UTC (permalink / raw)
  To: tumashu; +Cc: guix

Hi,

On Sun, 22 Jan 2017 10:39:15 +0800 (CST)
tumashu  <tumashu@163.com> wrote:

> The other problem is:
> 
> im-config include many im's config files and I cannot  let im-config depend all the im,
> if fcitx is not installed,  How to deal with "/usr/bin/fcitx" in fcitx config file which is included in im-config?
> just replace it with "fcitx"?

You mean the configs for all the input methods ("cjkv.conf", "ibus.conf", "fcitx.conf", "uim.conf", "hime.conf", "gcin.conf", "maliit.conf", "scim.conf", "hangul.conf", "thai.conf", "xim.conf", "kinput2.conf", "xsunpinyin.conf") in "data" ?

I think then one would maybe write a "input-method-root-service" Guix service and other im services and let each im service extend that service. 

That way the user can have the different input methods as services in their Guix system config file.

See gnu/services/cups.scm "union-directory" for how you merge multiple extension's directory trees into one.

See operating-system-environment-variables for the environment variables that are already exported to every process.

See the Guix manual "Service Composition" for how to compose services.

We already have packages for ibus, fcitx - but no service for ibus, fcitx.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re:Integrating different input methods into Guix
  2017-01-22  8:06     ` Integrating different input methods into Guix Danny Milosavljevic
@ 2017-01-22 23:57       ` tumashu
  2017-01-23  0:32         ` Integrating " Danny Milosavljevic
  2017-01-26  8:02       ` Chris Marusich
  1 sibling, 1 reply; 8+ messages in thread
From: tumashu @ 2017-01-22 23:57 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: guix

[-- Attachment #1: Type: text/plain, Size: 1415 bytes --]

Thanks for the information, but coding a im service is beyond my ability at the moment :-)








At 2017-01-22 16:06:05, "Danny Milosavljevic" <dannym@scratchpost.org> wrote:
>Hi,
>
>On Sun, 22 Jan 2017 10:39:15 +0800 (CST)
>tumashu  <tumashu@163.com> wrote:
>
>> The other problem is:
>> 
>> im-config include many im's config files and I cannot  let im-config depend all the im,
>> if fcitx is not installed,  How to deal with "/usr/bin/fcitx" in fcitx config file which is included in im-config?
>> just replace it with "fcitx"?
>
>You mean the configs for all the input methods ("cjkv.conf", "ibus.conf", "fcitx.conf", "uim.conf", "hime.conf", "gcin.conf", "maliit.conf", "scim.conf", "hangul.conf", "thai.conf", "xim.conf", "kinput2.conf", "xsunpinyin.conf") in "data" ?
>
>I think then one would maybe write a "input-method-root-service" Guix service and other im services and let each im service extend that service. 
>
>That way the user can have the different input methods as services in their Guix system config file.
>
>See gnu/services/cups.scm "union-directory" for how you merge multiple extension's directory trees into one.
>
>See operating-system-environment-variables for the environment variables that are already exported to every process.
>
>See the Guix manual "Service Composition" for how to compose services.
>
>We already have packages for ibus, fcitx - but no service for ibus, fcitx.

[-- Attachment #2: Type: text/html, Size: 1705 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Integrating different input methods into Guix
  2017-01-22 23:57       ` tumashu
@ 2017-01-23  0:32         ` Danny Milosavljevic
  2017-01-23  6:38           ` tumashu
  0 siblings, 1 reply; 8+ messages in thread
From: Danny Milosavljevic @ 2017-01-23  0:32 UTC (permalink / raw)
  To: tumashu; +Cc: guix

Hi,

I understand. For now, let's see what the others say about the proposed design.

If you want to just set the environment variables in your user session, you can just edit ~/.bash_profile and invoke im-config there (maybe unchanged - although it bothers me that it then would invoke random versions of the input methods - which can change depending on what's installed right now).

But it would be nicer if the login screens used the input methods, too. That would be possible by either writing a service, or, as a quick fix, by adding the environment variables to gnu/services/xorg.scm :

              (fork+exec-command
               (list (string-append #$slim "/bin/slim") "-nodaemon")
               #:environment-variables
               (list (string-append "SLIM_CFGFILE=" #$slim.cfg)
                     "IM_CONFIG_xyz=FIXME"
                     #$@(if theme
                            (list #~(string-append "SLIM_THEMESDIR=" #$theme))
                            #~())))))

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re:Re: Integrating different input methods into Guix
  2017-01-23  0:32         ` Integrating " Danny Milosavljevic
@ 2017-01-23  6:38           ` tumashu
  0 siblings, 0 replies; 8+ messages in thread
From: tumashu @ 2017-01-23  6:38 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: guix

[-- Attachment #1: Type: text/plain, Size: 1131 bytes --]

Service seem to be a good idea...








At 2017-01-23 08:32:11, "Danny Milosavljevic" <dannym@scratchpost.org> wrote:
>Hi,
>
>I understand. For now, let's see what the others say about the proposed design.
>
>If you want to just set the environment variables in your user session, you can just edit ~/.bash_profile and invoke im-config there (maybe unchanged - although it bothers me that it then would invoke random versions of the input methods - which can change depending on what's installed right now).
>
>But it would be nicer if the login screens used the input methods, too. That would be possible by either writing a service, or, as a quick fix, by adding the environment variables to gnu/services/xorg.scm :
>
>              (fork+exec-command
>               (list (string-append #$slim "/bin/slim") "-nodaemon")
>               #:environment-variables
>               (list (string-append "SLIM_CFGFILE=" #$slim.cfg)
>                     "IM_CONFIG_xyz=FIXME"
>                     #$@(if theme
>                            (list #~(string-append "SLIM_THEMESDIR=" #$theme))
>                            #~())))))
>

[-- Attachment #2: Type: text/html, Size: 1379 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Integrating different input methods into Guix
  2017-01-22  8:06     ` Integrating different input methods into Guix Danny Milosavljevic
  2017-01-22 23:57       ` tumashu
@ 2017-01-26  8:02       ` Chris Marusich
  1 sibling, 0 replies; 8+ messages in thread
From: Chris Marusich @ 2017-01-26  8:02 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: guix, tumashu

[-- Attachment #1: Type: text/plain, Size: 1735 bytes --]

Danny Milosavljevic <dannym@scratchpost.org> writes:

> Hi,
>
> On Sun, 22 Jan 2017 10:39:15 +0800 (CST)
> tumashu  <tumashu@163.com> wrote:
>
>> The other problem is:
>> 
>> im-config include many im's config files and I cannot  let im-config depend all the im,
>> if fcitx is not installed,  How to deal with "/usr/bin/fcitx" in fcitx config file which is included in im-config?
>> just replace it with "fcitx"?
>
> You mean the configs for all the input methods ("cjkv.conf",
> "ibus.conf", "fcitx.conf", "uim.conf", "hime.conf", "gcin.conf",
> "maliit.conf", "scim.conf", "hangul.conf", "thai.conf", "xim.conf",
> "kinput2.conf", "xsunpinyin.conf") in "data" ?
>
> I think then one would maybe write a "input-method-root-service" Guix service and other im services and let each im service extend that service. 
>
> That way the user can have the different input methods as services in their Guix system config file.
>
> See gnu/services/cups.scm "union-directory" for how you merge multiple extension's directory trees into one.
>
> See operating-system-environment-variables for the environment variables that are already exported to every process.
>
> See the Guix manual "Service Composition" for how to compose services.
>
> We already have packages for ibus, fcitx - but no service for ibus, fcitx.

Anyone who works on this should search the guix-devel archives for
discussions related to ibus.  I don't know how it works with fctix, but
with ibus it's kind of messy.  A service might work, but there's some
state that needs to be managed (e.g., immodules cache files for GTK2 and
GTK3) in order for the input method to function properly.
Unfortunately, it's rather complex.

-- 
Chris

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2017-01-26  8:02 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-22  0:57 A question about im-config tumashu
2017-01-22  1:15 ` Danny Milosavljevic
2017-01-22  2:39   ` tumashu
2017-01-22  8:06     ` Integrating different input methods into Guix Danny Milosavljevic
2017-01-22 23:57       ` tumashu
2017-01-23  0:32         ` Integrating " Danny Milosavljevic
2017-01-23  6:38           ` tumashu
2017-01-26  8:02       ` Chris Marusich

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.