Я обычно загружаю новую версию для каждой версии, чтобы сохранить мою ОС свежей, сохраняя последнюю версию на другом разделе в качестве резервной. Я также использую множество пользовательских сопоставлений клавиш.
Я выяснил, как передать большую часть моей конфигурации в разных системах до сих пор, но я не могу понять, где хранятся пользовательские сочетания клавиш.
Кто-нибудь знает, где гном их ставит? Имеются ли файлы пользовательских конфигураций (то есть, ~ /) и системный config (то есть / etc)?
Существует небольшая проблема с принятым ответом, поскольку он не может обрабатывать пользовательские команды с кавычками в них. Я только изменил обработку пользовательских команд для генерации правильного вывода.
#! / Usr / bin / perl use strict; my $ action = ''; my $ filename = '-'; для my $ arg (@ARGV) {if ($ arg eq "-e" или $ arg eq "--export") {$ action = 'export'; } elsif ($ arg eq "-i" или $ arg eq "--import") {$ action = 'import'; } elsif ($ arg eq "-h" или $ arg eq "--help") {print "Импорт и экспорт ключевых слов \n"; print "-e, --export & lt; имя_файла & gt; \n"; print "-i, --import & lt; имя_файла & gt; \n"; print "-h, --help \n"; Выход; } elsif ($ arg = ~ / ^ \ - /) {die "Неизвестный аргумент $ arg"; } else {$ filename = $ arg; if (! $ action) {if (-e $ filename) {$ action = 'import'; } else {$ action = 'export'; }}}} $ action = 'export' if (! $ action); if ($ action eq 'export') {& amp; export (); } else {& amp; import (); } sub export () {my $ gsettingsFolders = [['org.gnome.desktop.wm.keybindings', '.'], ['org.gnome.settings-daemon.plugins.power', 'button'], [ 'org.gnome.settings-daemon.plugins.media-keys', '.'],]; my $ customBindings = []; $ filename = "& gt; $ filename"; open (my $ fh, $ filename) || die "Не удается открыть файл $ filename: $!"; для моей $ folder (@ $ gsettingsFolders) {my @keylist = split (/ \n /, `gsettings list-recursively $ folder- & gt; [0]`); foreach my $ line (@keylist) {if ($ line = ~ / ^ ([^] +) ([^] +) (?: \ @ [az] +)? (. *) /) {my ($ путь, $ name, $ value) = ($ 1, $ 2, $ 3); if ($ name eq "custom-keybindings") {$ value = ~ s / [\ [\] \ '] // g; my @c = split (/, /, $ value); $ customBindings = \ @c; } elsif ($ name = ~ / $ folder- & gt; [1] /) {if ($ value = ~ / ^ \ [| \ '/) {if ($ value = ~ / ^ \ [\' (?: отключено)? \ '\] $ /) {$ value =' [] '; } print $ fh "$ path \ t $ name \ t $ value \n"; }}} else {die "Могло отметить parse $ line"; }}} для моей $ folder (@ $ customBindings) {my $ gs = `gsettings list-recursively org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: $ folder`; my ($ binding) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding binding (\ '[^ \n] + \') / g; my ($ command) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding command (\ '[^ \n] + \') / g; my ($ name) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name (\ '[^ \n] + \') / g; $ command = ~ s / \ "/ \\\" / g; $ command = ~ s /^'(.*)'$/$ 1 / g; $ command = ~ s / \ '/ \' \\\ '\' / g; $ command = "\ '$ command \'"; print $ fh "custom \ t $ name \ t $ command \ t $ binding \n"} close ($ fh); } sub import () {$ filename = "& lt; $ filename"; open (my $ fh, $ filename) || die "Не удается открыть файл $ filename: $!"; my $ customcount = 0; while (my $ line = & lt; $ fh & gt;) {chomp $ line; if ($ line) {my @v = split (/ \ t /, $ line); if (@v [0] eq 'custom') {my ($ custom, $ name, $ command, $ binding) = @v; print "Установка пользовательского привязки клавиш: $ name \n"; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / name \" $ name \ "`; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / command \" $ command \ "`; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / binding \" $ binding \ "`; $ Customcount ++; } else {my ($ path, $ name, $ value) = @v; print "Импорт $ path $ name \n"; print `gsettings set \" $ path \ "\" $ name \ "\" $ value \ "`; }}} if ($ customcount & gt; 0) {my $ customlist = ""; for (my $ i = 0; $ i & lt; $ customcount; $ i ++) {$ customlist. = "," if ($ customlist); $ customlist. = "'/ org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ i /'"; } $ customlist = "[$ customlist]"; print "Импорт списка пользовательских привязок. \n"; print `gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \" $ customlist \ "`; } close ($ fh); }
В 11.10 запуске Gnome classic я нашел набор каталогов (Custom0, Custom1 ...) в
$ HOME / .gconf / desktop / gnome / keybindings
Я скопировал эти каталоги в одну и ту же папку в чистой установке 12.04 (снова запущен с резервным копированием Gnome), вышел из системы и снова вошел в систему. Ключевые комбинации немного перепутались с переходом (что-то смешное произошло с модификатором SUPER), но в остальном они были там.
Ярлыки клавиш не сохраняются ни в одном месте
В зависимости от вашей версии дистрибутива приложение для быстрого доступа к клавиатуре может быть вызвано различными функциями в графическом интерфейсе, но в командной строке оно должно называться «gnome» -keybinding-свойств. Оказывается, что это аккуратное приложение прикладывает все ярлыки к одному удобному месту для редактирования пользователями.
Поскольку в приложении Ubuntu для операций с ключами нет одного щелчка по экспорту и импорту, я написал один в python:
Экспорт вытаскивает настройки из системы. По существу, он содержит список всех мест привязки клавиш, жестко закодированных в словаре в скрипте. Сценарий отображает список и запускает команду «gconftool-2 --get [location]» для каждого ключа и сохраняет значение в словаре вместе с ключом. Затем, когда вы указываете местоположение для сохранения настроек, оно сохраняет словарь в файл в формате json.
Сценарий импорта отменяет этот процесс. Он загружает словарь из json-файла. Затем он перечисляет их и запускает команду «gconftool-2 - type string --set [location] [value]», чтобы восстановить все сохраненные настройки.
Один снимок с обоих концов и он сохраняет /! восстанавливает каждую комбинацию клавиш, не касаясь других параметров конфигурации системы.
Единственными зависимостями для этих скриптов являются:
Python необходим для выполнения сценария, gconftool-2 используется для получения / установки параметров, zenity необходим для файлов загрузки / сохранения диалогов gui.
Обновление:
Я обновил комбинированные сценарии импорта и экспорта в один , добавлена полная функциональность командной строки (в том числе --help) и сделал его совместимым как для python2x, так и для python3k. Кроме того, добавлена ссылка на идею Ubuntu Brainstorm.
Существует небольшая проблема с принятым ответом, поскольку он не может обрабатывать пользовательские команды с кавычками в них. Я только изменил обработку пользовательских команд для генерации правильного вывода.
#! / Usr / bin / perl use strict; my $ action = ''; my $ filename = '-'; для my $ arg (@ARGV) {if ($ arg eq "-e" или $ arg eq "--export") {$ action = 'export'; } elsif ($ arg eq "-i" или $ arg eq "--import") {$ action = 'import'; } elsif ($ arg eq "-h" или $ arg eq "--help") {print "Импорт и экспорт ключевых слов \n"; print "-e, --export & lt; имя_файла & gt; \n"; print "-i, --import & lt; имя_файла & gt; \n"; print "-h, --help \n"; Выход; } elsif ($ arg = ~ / ^ \ - /) {die "Неизвестный аргумент $ arg"; } else {$ filename = $ arg; if (! $ action) {if (-e $ filename) {$ action = 'import'; } else {$ action = 'export'; }}}} $ action = 'export' if (! $ action); if ($ action eq 'export') {& amp; export (); } else {& amp; import (); } sub export () {my $ gsettingsFolders = [['org.gnome.desktop.wm.keybindings', '.'], ['org.gnome.settings-daemon.plugins.power', 'button'], [ 'org.gnome.settings-daemon.plugins.media-keys', '.'],]; my $ customBindings = []; $ filename = "& gt; $ filename"; open (my $ fh, $ filename) || die "Не удается открыть файл $ filename: $!"; для моей $ folder (@ $ gsettingsFolders) {my @keylist = split (/ \n /, `gsettings list-recursively $ folder- & gt; [0]`); foreach my $ line (@keylist) {if ($ line = ~ / ^ ([^] +) ([^] +) (?: \ @ [az] +)? (. *) /) {my ($ путь, $ name, $ value) = ($ 1, $ 2, $ 3); if ($ name eq "custom-keybindings") {$ value = ~ s / [\ [\] \ '] // g; my @c = split (/, /, $ value); $ customBindings = \ @c; } elsif ($ name = ~ / $ folder- & gt; [1] /) {if ($ value = ~ / ^ \ [| \ '/) {if ($ value = ~ / ^ \ [\' (?: отключено)? \ '\] $ /) {$ value =' [] '; } print $ fh "$ path \ t $ name \ t $ value \n"; }}} else {die "Могло отметить parse $ line"; }}} для моей $ folder (@ $ customBindings) {my $ gs = `gsettings list-recursively org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: $ folder`; my ($ binding) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding binding (\ '[^ \n] + \') / g; my ($ command) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding command (\ '[^ \n] + \') / g; my ($ name) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name (\ '[^ \n] + \') / g; $ command = ~ s / \ "/ \\\" / g; $ command = ~ s /^'(.*)'$/$ 1 / g; $ command = ~ s / \ '/ \' \\\ '\' / g; $ command = "\ '$ command \'"; print $ fh "custom \ t $ name \ t $ command \ t $ binding \n"} close ($ fh); } sub import () {$ filename = "& lt; $ filename"; open (my $ fh, $ filename) || die "Не удается открыть файл $ filename: $!"; my $ customcount = 0; while (my $ line = & lt; $ fh & gt;) {chomp $ line; if ($ line) {my @v = split (/ \ t /, $ line); if (@v [0] eq 'custom') {my ($ custom, $ name, $ command, $ binding) = @v; print "Установка пользовательского привязки клавиш: $ name \n"; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / name \" $ name \ "`; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / command \" $ command \ "`; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / binding \" $ binding \ "`; $ Customcount ++; } else {my ($ path, $ name, $ value) = @v; print "Импорт $ path $ name \n"; print `gsettings set \" $ path \ "\" $ name \ "\" $ value \ "`; }}} if ($ customcount & gt; 0) {my $ customlist = ""; for (my $ i = 0; $ i & lt; $ customcount; $ i ++) {$ customlist. = "," if ($ customlist); $ customlist. = "'/ org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ i /'"; } $ customlist = "[$ customlist]"; print "Импорт списка пользовательских привязок. \n"; print `gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \" $ customlist \ "`; } close ($ fh); }
Как выполнить резервное копирование настроек dconf, таких как быстрые клавиши
dconf dump / & gt; ~ / .config / dconf / user.conf
editor ~ / .config / dconf / user.conf
Если вы используете Vim, вам понадобится выделить этот синтаксис . . ] unit-control-center
, запустите: dconf watch /
, а затем измените их. Точная настройка появится на терминале. dconf load / & lt; ~ / .config / dconf / user.conf
[ ! d12] Проверено на Ubuntu 15.10. Совет адаптирован из: http://catern.com/2014/12/21/plain-text-configuration-gnome.html
В 11.10 запуске Gnome classic я нашел набор каталогов (Custom0, Custom1 ...) в
$ HOME / .gconf / desktop / gnome / keybindings
Я скопировал эти каталоги в одну и ту же папку в чистой установке 12.04 (снова запущен с резервным копированием Gnome), вышел из системы и снова вошел в систему. Ключевые комбинации немного перепутались с переходом (что-то смешное произошло с модификатором SUPER), но в остальном они были там.
Ярлыки клавиш не сохраняются ни в одном месте
В зависимости от вашей версии дистрибутива приложение для быстрого доступа к клавиатуре может быть вызвано различными функциями в графическом интерфейсе, но в командной строке оно должно называться «gnome» -keybinding-свойств. Оказывается, что это аккуратное приложение прикладывает все ярлыки к одному удобному месту для редактирования пользователями.
Поскольку в приложении Ubuntu для операций с ключами нет одного щелчка по экспорту и импорту, я написал один в python:
Экспорт вытаскивает настройки из системы. По существу, он содержит список всех мест привязки клавиш, жестко закодированных в словаре в скрипте. Сценарий отображает список и запускает команду «gconftool-2 --get [location]» для каждого ключа и сохраняет значение в словаре вместе с ключом. Затем, когда вы указываете местоположение для сохранения настроек, оно сохраняет словарь в файл в формате json.
Сценарий импорта отменяет этот процесс. Он загружает словарь из json-файла. Затем он перечисляет их и запускает команду «gconftool-2 - type string --set [location] [value]», чтобы восстановить все сохраненные настройки.
Один снимок с обоих концов и он сохраняет /! восстанавливает каждую комбинацию клавиш, не касаясь других параметров конфигурации системы.
Единственными зависимостями для этих скриптов являются:
Python необходим для выполнения сценария, gconftool-2 используется для получения / установки параметров, zenity необходим для файлов загрузки / сохранения диалогов gui.
Обновление:
Я обновил комбинированные сценарии импорта и экспорта в один , добавлена полная функциональность командной строки (в том числе --help) и сделал его совместимым как для python2x, так и для python3k. Кроме того, добавлена ссылка на идею Ubuntu Brainstorm.
Существует небольшая проблема с принятым ответом, поскольку он не может обрабатывать пользовательские команды с кавычками в них. Я только изменил обработку пользовательских команд для генерации правильного вывода.
#! / Usr / bin / perl use strict; my $ action = ''; my $ filename = '-'; для my $ arg (@ARGV) {if ($ arg eq "-e" или $ arg eq "--export") {$ action = 'export'; } elsif ($ arg eq "-i" или $ arg eq "--import") {$ action = 'import'; } elsif ($ arg eq "-h" или $ arg eq "--help") {print "Импорт и экспорт ключевых слов \n"; print "-e, --export & lt; имя_файла & gt; \n"; print "-i, --import & lt; имя_файла & gt; \n"; print "-h, --help \n"; Выход; } elsif ($ arg = ~ / ^ \ - /) {die "Неизвестный аргумент $ arg"; } else {$ filename = $ arg; if (! $ action) {if (-e $ filename) {$ action = 'import'; } else {$ action = 'export'; }}}} $ action = 'export' if (! $ action); if ($ action eq 'export') {& amp; export (); } else {& amp; import (); } sub export () {my $ gsettingsFolders = [['org.gnome.desktop.wm.keybindings', '.'], ['org.gnome.settings-daemon.plugins.power', 'button'], [ 'org.gnome.settings-daemon.plugins.media-keys', '.'],]; my $ customBindings = []; $ filename = "& gt; $ filename"; open (my $ fh, $ filename) || die "Не удается открыть файл $ filename: $!"; для моей $ folder (@ $ gsettingsFolders) {my @keylist = split (/ \n /, `gsettings list-recursively $ folder- & gt; [0]`); foreach my $ line (@keylist) {if ($ line = ~ / ^ ([^] +) ([^] +) (?: \ @ [az] +)? (. *) /) {my ($ путь, $ name, $ value) = ($ 1, $ 2, $ 3); if ($ name eq "custom-keybindings") {$ value = ~ s / [\ [\] \ '] // g; my @c = split (/, /, $ value); $ customBindings = \ @c; } elsif ($ name = ~ / $ folder- & gt; [1] /) {if ($ value = ~ / ^ \ [| \ '/) {if ($ value = ~ / ^ \ [\' (?: отключено)? \ '\] $ /) {$ value =' [] '; } print $ fh "$ path \ t $ name \ t $ value \n"; }}} else {die "Могло отметить parse $ line"; }}} для моей $ folder (@ $ customBindings) {my $ gs = `gsettings list-recursively org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: $ folder`; my ($ binding) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding binding (\ '[^ \n] + \') / g; my ($ command) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding command (\ '[^ \n] + \') / g; my ($ name) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name (\ '[^ \n] + \') / g; $ command = ~ s / \ "/ \\\" / g; $ command = ~ s /^'(.*)'$/$ 1 / g; $ command = ~ s / \ '/ \' \\\ '\' / g; $ command = "\ '$ command \'"; print $ fh "custom \ t $ name \ t $ command \ t $ binding \n"} close ($ fh); } sub import () {$ filename = "& lt; $ filename"; open (my $ fh, $ filename) || die "Не удается открыть файл $ filename: $!"; my $ customcount = 0; while (my $ line = & lt; $ fh & gt;) {chomp $ line; if ($ line) {my @v = split (/ \ t /, $ line); if (@v [0] eq 'custom') {my ($ custom, $ name, $ command, $ binding) = @v; print "Установка пользовательского привязки клавиш: $ name \n"; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / name \" $ name \ "`; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / command \" $ command \ "`; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / binding \" $ binding \ "`; $ Customcount ++; } else {my ($ path, $ name, $ value) = @v; print "Импорт $ path $ name \n"; print `gsettings set \" $ path \ "\" $ name \ "\" $ value \ "`; }}} if ($ customcount & gt; 0) {my $ customlist = ""; for (my $ i = 0; $ i & lt; $ customcount; $ i ++) {$ customlist. = "," if ($ customlist); $ customlist. = "'/ org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ i /'"; } $ customlist = "[$ customlist]"; print "Импорт списка пользовательских привязок. \n"; print `gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \" $ customlist \ "`; } close ($ fh); }
Ярлыки клавиш не сохраняются ни в одном месте
В зависимости от вашей версии дистрибутива приложение для быстрого доступа к клавиатуре может быть вызвано различными функциями в графическом интерфейсе, но в командной строке оно должно называться «gnome» -keybinding-свойств. Оказывается, что это аккуратное приложение прикладывает все ярлыки к одному удобному месту для редактирования пользователями.
Поскольку в приложении Ubuntu для операций с ключами нет одного щелчка по экспорту и импорту, я написал один в python:
Экспорт вытаскивает настройки из системы. По существу, он содержит список всех мест привязки клавиш, жестко закодированных в словаре в скрипте. Сценарий отображает список и запускает команду «gconftool-2 --get [location]» для каждого ключа и сохраняет значение в словаре вместе с ключом. Затем, когда вы указываете местоположение для сохранения настроек, оно сохраняет словарь в файл в формате json.
Сценарий импорта отменяет этот процесс. Он загружает словарь из json-файла. Затем он перечисляет их и запускает команду «gconftool-2 - type string --set [location] [value]», чтобы восстановить все сохраненные настройки.
Один снимок с обоих концов и он сохраняет /! восстанавливает каждую комбинацию клавиш, не касаясь других параметров конфигурации системы.
Единственными зависимостями для этих скриптов являются:
Python необходим для выполнения сценария, gconftool-2 используется для получения / установки параметров, zenity необходим для файлов загрузки / сохранения диалогов gui.
Обновление:
Я обновил комбинированные сценарии импорта и экспорта в один , добавлена полная функциональность командной строки (в том числе --help) и сделал его совместимым как для python2x, так и для python3k. Кроме того, добавлена ссылка на идею Ubuntu Brainstorm.
В 11.10 запуске Gnome classic я нашел набор каталогов (Custom0, Custom1 ...) в
$ HOME / .gconf / desktop / gnome / keybindings
Я скопировал эти каталоги в одну и ту же папку в чистой установке 12.04 (снова запущен с резервным копированием Gnome), вышел из системы и снова вошел в систему. Ключевые комбинации немного перепутались с переходом (что-то смешное произошло с модификатором SUPER), но в остальном они были там.
Как выполнить резервное копирование настроек dconf, таких как быстрые клавиши
dconf dump / & gt; ~ / .config / dconf / user.conf
editor ~ / .config / dconf / user.conf
Если вы используете Vim, вам понадобится выделить этот синтаксис . . ] unit-control-center
, запустите: dconf watch /
, а затем измените их. Точная настройка появится на терминале. dconf load / & lt; ~ / .config / dconf / user.conf
[ ! d12] Проверено на Ubuntu 15.10. Совет адаптирован из: http://catern.com/2014/12/21/plain-text-configuration-gnome.html
Как выполнить резервное копирование настроек dconf, таких как быстрые клавиши
dconf dump / & gt; ~ / .config / dconf / user.conf
editor ~ / .config / dconf / user.conf
Если вы используете Vim, вам понадобится выделить этот синтаксис . . ] unit-control-center
, запустите: dconf watch /
, а затем измените их. Точная настройка появится на терминале. dconf load / & lt; ~ / .config / dconf / user.conf
[ ! d12] Проверено на Ubuntu 15.10. Совет адаптирован из: http://catern.com/2014/12/21/plain-text-configuration-gnome.html
Существует небольшая проблема с принятым ответом, поскольку он не может обрабатывать пользовательские команды с кавычками в них. Я только изменил обработку пользовательских команд для генерации правильного вывода.
#! / Usr / bin / perl use strict; my $ action = ''; my $ filename = '-'; для my $ arg (@ARGV) {if ($ arg eq "-e" или $ arg eq "--export") {$ action = 'export'; } elsif ($ arg eq "-i" или $ arg eq "--import") {$ action = 'import'; } elsif ($ arg eq "-h" или $ arg eq "--help") {print "Импорт и экспорт ключевых слов \n"; print "-e, --export & lt; имя_файла & gt; \n"; print "-i, --import & lt; имя_файла & gt; \n"; print "-h, --help \n"; Выход; } elsif ($ arg = ~ / ^ \ - /) {die "Неизвестный аргумент $ arg"; } else {$ filename = $ arg; if (! $ action) {if (-e $ filename) {$ action = 'import'; } else {$ action = 'export'; }}}} $ action = 'export' if (! $ action); if ($ action eq 'export') {& amp; export (); } else {& amp; import (); } sub export () {my $ gsettingsFolders = [['org.gnome.desktop.wm.keybindings', '.'], ['org.gnome.settings-daemon.plugins.power', 'button'], [ 'org.gnome.settings-daemon.plugins.media-keys', '.'],]; my $ customBindings = []; $ filename = "& gt; $ filename"; open (my $ fh, $ filename) || die "Не удается открыть файл $ filename: $!"; для моей $ folder (@ $ gsettingsFolders) {my @keylist = split (/ \n /, `gsettings list-recursively $ folder- & gt; [0]`); foreach my $ line (@keylist) {if ($ line = ~ / ^ ([^] +) ([^] +) (?: \ @ [az] +)? (. *) /) {my ($ путь, $ name, $ value) = ($ 1, $ 2, $ 3); if ($ name eq "custom-keybindings") {$ value = ~ s / [\ [\] \ '] // g; my @c = split (/, /, $ value); $ customBindings = \ @c; } elsif ($ name = ~ / $ folder- & gt; [1] /) {if ($ value = ~ / ^ \ [| \ '/) {if ($ value = ~ / ^ \ [\' (?: отключено)? \ '\] $ /) {$ value =' [] '; } print $ fh "$ path \ t $ name \ t $ value \n"; }}} else {die "Могло отметить parse $ line"; }}} для моей $ folder (@ $ customBindings) {my $ gs = `gsettings list-recursively org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: $ folder`; my ($ binding) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding binding (\ '[^ \n] + \') / g; my ($ command) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding command (\ '[^ \n] + \') / g; my ($ name) = $ gs = ~ /org.gnome.settings-daemon.plugins.media-keys.custom-keybinding name (\ '[^ \n] + \') / g; $ command = ~ s / \ "/ \\\" / g; $ command = ~ s /^'(.*)'$/$ 1 / g; $ command = ~ s / \ '/ \' \\\ '\' / g; $ command = "\ '$ command \'"; print $ fh "custom \ t $ name \ t $ command \ t $ binding \n"} close ($ fh); } sub import () {$ filename = "& lt; $ filename"; open (my $ fh, $ filename) || die "Не удается открыть файл $ filename: $!"; my $ customcount = 0; while (my $ line = & lt; $ fh & gt;) {chomp $ line; if ($ line) {my @v = split (/ \ t /, $ line); if (@v [0] eq 'custom') {my ($ custom, $ name, $ command, $ binding) = @v; print "Установка пользовательского привязки клавиш: $ name \n"; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / name \" $ name \ "`; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / command \" $ command \ "`; print `gsettings set org.gnome.settings-daemon.plugins.media-keyss.custom-keybinding: / org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ customcount / binding \" $ binding \ "`; $ Customcount ++; } else {my ($ path, $ name, $ value) = @v; print "Импорт $ path $ name \n"; print `gsettings set \" $ path \ "\" $ name \ "\" $ value \ "`; }}} if ($ customcount & gt; 0) {my $ customlist = ""; for (my $ i = 0; $ i & lt; $ customcount; $ i ++) {$ customlist. = "," if ($ customlist); $ customlist. = "'/ org / gnome / settings-daemon / plugins / media-keys / custom-keybindings / custom $ i /'"; } $ customlist = "[$ customlist]"; print "Импорт списка пользовательских привязок. \n"; print `gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings \" $ customlist \ "`; } close ($ fh); }
Ярлыки клавиш не сохраняются ни в одном месте
В зависимости от вашей версии дистрибутива приложение для быстрого доступа к клавиатуре может быть вызвано различными функциями в графическом интерфейсе, но в командной строке оно должно называться «gnome» -keybinding-свойств. Оказывается, что это аккуратное приложение прикладывает все ярлыки к одному удобному месту для редактирования пользователями.
Поскольку в приложении Ubuntu для операций с ключами нет одного щелчка по экспорту и импорту, я написал один в python:
Экспорт вытаскивает настройки из системы. По существу, он содержит список всех мест привязки клавиш, жестко закодированных в словаре в скрипте. Сценарий отображает список и запускает команду «gconftool-2 --get [location]» для каждого ключа и сохраняет значение в словаре вместе с ключом. Затем, когда вы указываете местоположение для сохранения настроек, оно сохраняет словарь в файл в формате json.
Сценарий импорта отменяет этот процесс. Он загружает словарь из json-файла. Затем он перечисляет их и запускает команду «gconftool-2 - type string --set [location] [value]», чтобы восстановить все сохраненные настройки.
Один снимок с обоих концов и он сохраняет /! восстанавливает каждую комбинацию клавиш, не касаясь других параметров конфигурации системы.
Единственными зависимостями для этих скриптов являются:
Python необходим для выполнения сценария, gconftool-2 используется для получения / установки параметров, zenity необходим для файлов загрузки / сохранения диалогов gui.
Обновление:
Я обновил комбинированные сценарии импорта и экспорта в один , добавлена полная функциональность командной строки (в том числе --help) и сделал его совместимым как для python2x, так и для python3k. Кроме того, добавлена ссылка на идею Ubuntu Brainstorm.
gnome-keybinding-properties
и опубликовать патч с вашим скриптом.
– Oxwivi
11 March 2011 в 09:43
Клавиши быстрого доступа
, т.е. gnome-keybinding-properties
... и другие сочетания клавиш, добавленные, например, Xbindkeys
... поэтому я подозреваю, что gconf 'не там, где широко используются ярлыки sysetem «сохранен», но что он является интерфейсом чего-то / где-то глубже ... (я искал это место .. :). возможно, мне просто нужно сохранить 3 'экспортированных' списка на данный момент ...
– Peter.O
11 March 2011 в 09:51
В 11.10 запуске Gnome classic я нашел набор каталогов (Custom0, Custom1 ...) в
$ HOME / .gconf / desktop / gnome / keybindings
Я скопировал эти каталоги в одну и ту же папку в чистой установке 12.04 (снова запущен с резервным копированием Gnome), вышел из системы и снова вошел в систему. Ключевые комбинации немного перепутались с переходом (что-то смешное произошло с модификатором SUPER), но в остальном они были там.