web-dev-qa-db-ja.com

設定ファイルまたはコマンドラインから言語/ショートカットを設定する方法は?

いくつかのUbuntu 14.04/14.10デスクトップをプロビジョニングする必要があります。構成ファイルまたはコマンドラインから設定できるため、ほとんどのものを簡単にプロビジョニングできました。

しかし、利用可能な言語を設定し、言語を切り替えるためのキーボードショートカットを設定するという2つのことに問題があります。私はgnome-control-centerからそれらを行う方法を知っています

  1. 利用可能な言語を設定する

    Region & Language > Input Sources > English (US) + German + Italian

  2. 言語を切り替えるためのキーボードショートカットを設定する

    Shortcut Settings > Typing > Switch to next source (Super+Escape), Switch to previous source (Shift+Super+Escape)

しかし、構成ファイルまたはコマンドラインから実行する方法がわからないため、自動的にプロビジョニングすることはできません。

2
user779159

キー

探しているキーは次のとおりです。

  1. 入力ソースを編集する場合:

    org.gnome.desktop.input-sources sources
    
  2. 言語を切り替えるためのキーボードショートカットを編集するには:

    org.gnome.desktop.wm.keybindings switch-input-source
    
  3. 入力ソースを逆方向に切り替える場合:

    org.gnome.desktop.wm.keybindings switch-input-source-backward
    

設定を編集するコマンド

コマンドラインから3つを編集するコマンドの例:

  1. 入力ソースを編集するには、質問に記載されているように入力ソースを設定します。

    gsettings set org.gnome.desktop.input-sources sources "[('xkb', 'us'), ('xkb', 'it'), ('xkb', 'de')]"
    
  2. スイッチとショートカットキーの組み合わせを設定するには Ctrl+space

    gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Primary>space']"
    
  3. スイッチ-ショートカットキーの組み合わせを設定して後方に切り替える Shift+Super+space

    gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Shift><Super>space']"
    

現在の設定を取得するコマンド

gsettings get org.gnome.desktop.input-sources sources
gsettings get org.gnome.desktop.wm.keybindings switch-input-source
gsettings get org.gnome.desktop.wm.keybindings switch-input-source-backward

これらのキーを見つける方法

次のコマンドですべてのキーをリストすることにより、データベース内のキーワードを検索できます。

gsettings list-recursively

既存のすべてのキーを一覧表示するか、(私が定期的に行う)dconf-editorをインストールして、単にキーワードを検索します Ctrl+F


Edit

コメントで要求されたように、コマンドラインから入力ソースをウォークスルーする小さなスクリプトを追加しました。

#!/usr/bin/env python3
import subprocess
import sys

src = sys.argv[1]
key = "org.gnome.desktop.input-sources"
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").strip()

src_list = len(eval(get("gsettings get "+key+" sources")))-1
current = int(get("gsettings get "+key+" current").split()[-1])
if src == "+":
    set_new_value = "gsettings set "+key+" current "+(str(current+1) if current <  src_list else "0")
Elif src == "-":
    set_new_value = "gsettings set "+key+" current "+(str(current-1) if current > 0 else str(src_list))
subprocess.Popen(["/bin/bash","-c", set_new_value])

実行するには

  1. スクリプトをswitch_source.pyとして空のファイルに保存します
  2. 次のコマンドで実行します:

    python3 /path/to/switch_source.py +
    

    次の入力ソースに移動する

    python3 /path/to/switch_source.py -
    

    前のものに行く

5
Jacob Vlijm