Arch: tint2conf - gdk_pixbuf_get_width: assertion 'GDK_IS_PIXBUF (pixbuf)' не удалось

Ваш формат отключен. См. раздел 4.3 в этом старом документе или раздел Правил этой новой версии. Ненадежный справочник Дуга Палмера немного устарел, но также является хорошим источником.

Вы пытались:

! model layout variant = keycodes types compat symbols geometry
  current current current = current current current current current

В частности, правая часть = принимает один аргумент. На ! Строка , правая часть представляет собой файл одного типа — разрешен только один из { кодов клавиш, типов, совместимости, символов, геометрии }. В других строках справа находится один аргумент, означающий:

  • один файл, найденный в подкаталоге type (test1)
  • a stanza определенный в таком файле (test1(foo))
  • дополнение к более раннему совпадению (+test2 или +test2(bar))
  • несколько файлов/строф, объединенных вместе (test1+test1(foo)+test2(bar)+test3(baz))

Левая сторона — это фильтр; вы можете включить столько, сколько хотите из них.

По сути, правила создают отдельные наборы файлов для каждого из этих типов.

// KEYCODES SECTION
// load keycodes based on model specified
! model = keycodes
  test1  = test1
// ^^^^^^^^^^^^^^ 
//        "if model=test1, 
//         load the default in the file keycodes/test1"

// load keycodes based on layout specified
! layout = keycodes
  test1  = +test1(us)
// ^^^^^^^^^^^^^^
//        "if layout=test1, 
//         also load stanza "us" in the file keycodes/test1"


// all at once
! model layout variant option = keycodes
  test2 test2  test2   test2  = test1+test1(de)+test1(var2)+test1(opt2)
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//        "if model=test2 and layout=test2 and... ,
//         load the default stanza in file keycodes/test1,
//         then load stanza "de" in file keycodes/test1, ...


////////////////
// GEOMETRY SECTION
// load geometry based on model specified
! model = geometry
  test1 = test1
  *     = test3  // any other model

Определив эти правила, вы можете поиграть с setxkbmap -print, чтобы увидеть ваши правила в действии:

$ setxkbmap -I/path/to/my/xkb -rules test1 -model test1 -print
xkb_keymap {
        xkb_keycodes  { include "test1" };
        xkb_geometry  { include "test1" };
};
// no xkb_symbols or other sections of the map with only the rules above

$ setxkbmap -I/path/to/my/xkb -rules test2 -model test1 -layout test1 -print
xkb_keymap {
        xkb_keycodes  { include "test1+test1(us)"       };
        xkb_geometry  { include "test1" };
};

$ setxkbmap -I/path/to/my/xkb -rules test2 -model test2 -layout test2 -variant test2 -option test2 -print
xkb_keymap {
        xkb_keycodes  { include "test1+test1(us)+test1(var1)+test1(opt2)" };
        xkb_geometry  { include "test3" };
};

Это основы работы правил, но, конечно, все может быть намного сложнее.

  • %l и %v являются переменными с layout и variant (%m также может быть используется для mодель)
  • %(v) заключает раскрытие в круглые скобки, поэтому %l%(v) дает макет(вариант)
  • если определено несколько макетов/вариантов, они доступны как массив, и вам нужно будет добавить индекс: %l[1] (%l не будет work )
  • если определено несколько макетов/вариантов, добавьте :2 (или :3 или :4), чтобы ограничить файлы, загружаемые вторым (или 3-й, или 4-й) макет

Вот очень простой раздел правил, который правильно подтянет несколько макетов:

// setxkbmap -layout foo -variant foo1
! model    layout      =   symbols                                                                                                                                         
   *       *           =   %l%(v)                                                                                                                                                   

// setxkbmap -layout foo,bar -variant foo1,bar1                                                                                                                                                                                     
! model   layout[1]    =   symbols                                                                                                                                         
   *       *           =   %l[1]%(v[1])                                                                                                                                             

// setxkbmap -layout foo,bar -variant foo1,bar1                                                                                                                                                                                     
! model   layout[2]    =   symbols                                                                                                                                                 
   *       *           =   +%l[2]%(v[2]):2                                                                                                                                             

// setxkbmap -layout foo,bar,baz -variant foo1,bar1,baz1                                                                                                                                                                                     
! model   layout[3]    =   symbols                                                                                                                                                 
   *       *           =   +%l[3]%(v[3]):3                                                                                                                                             

// setxkbmap -layout foo,bar,baz,bat -variant foo1,bar1,baz1,bat1                                                                                                                                                                                     
 ! model   layout[4]   =   symbols                                                                                                                                             
   *       *           =   +%l[4]%(v[4]):4

Теперь вы можете загрузить тестовые макеты в setxkbmap и увидеть, что они добавляются.

$ setxkbmap -I/path/to/my/xkb -rules test -model test1 \
            -layout test1,test2,test3                  \
            -variant test1,testA,testB -print
xkb_keymap {
        xkb_keycodes  { include "test1+test1(us)" };
        xkb_symbols   { include "test1(test1)+test2(testA):2+test3(testB):3" };
        xkb_geometry  { include "test1" };
};

1
21.12.2016, 17:08
0 ответов

Теги

Похожие вопросы