# Input Methods

## Introduction

It is a nice feature for a software center to allows users the installation of additional input methods. This metainfo specification describes how metadata about input methods should be structured.

Software components providing an input method can ship one or more files in `/usr/share/metainfo/%{id}.metainfo.xml`.

Input method metadata files can – just like all other metainfo files – be translated. See the section about translation for more information.

## Example file

The input method metainfo file should look like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <component type="inputmethod">
      <id>com.github.ibus.mathwriter-ibus.db</id>
      <metadata_license>FSFAP</metadata_license>
      <name>Mathwriter</name>
      <summary>Math symbols input method</summary>
      <description>
        <p>
          The input method is designed for entering mathematical symbols.
        </p>
        <p>
          Input methods are typing systems allowing users to input complex languages.
          They are necessary because these contain too many characters to simply be laid
          out on a traditional keyboard.
        </p>
      </description>
      <url type="homepage">https://github.com/mike-fabian/ibus-table-others</url>
    </component>

## File specification

Note that the XML root must have the `type` property set to `inputmethod`. This clearly identifies this metainfo document as describing an input method instead of a generic software component.

<id/>

  For input methods, the `%{id}` should follow the standard reverse-domain-name scheme. For the product name part, it is recommended to take the database filename of the input method.

<metadata_license/>

  The `<metadata_license/>` tag is required. See for a description of this tag.

<name/>

  Set a name for your input method.

<summary/>

  A short description of the input method described in this metainfo file.

<description/>

  Add a long description of the input method.

  Do not assume the format is HTML. Only paragraph, ordered list and unordered list are supported at this time.

<screenshots/>

  A screenshot may be included, showing the input method in use in an application.

  Refer to for a detailed description of this tag.

<url/>

  This is a recommended tag for links of type `homepage`. Links of type `homepage` should be a link to the upstream homepage for the application. See See for a description of this tag.

<provides/>

  This tag is described for generic components at in detail.

  You can add one or more children of type `<library/>` in case you publish some additional shared libraries. If not, and there are no public binaries involved, you may omit the `provides` tag for input methods.

For a component of type `inputmethod`, the following tags are required and must be present: , , , .