Устранение проблем с хот-кеями при активной не латинской раскладке в Ubuntu (Unity)

Всем нам хорошо известно, что ребята из Canonical и Gnome просто страсть как любят ломать переключение раскладок или еще что-либо, связанное с хот-кеями, и периодически новые баги всплывают в той или иной версии.

Баг, который существует с хот-кеями где-то с версии бубунты 13.10 не раз заставлял меня искать альтернативы. Но что-то нигде не мог прижиться. Не смотря на то, что многие считают Unity отвратным DE, лично для себя более удобного окружения не нашел.

И вот, в очередной раз возвращаясь на 14.04.3 очень надеялся, что баг таки устранили, но не тут то было. :(

Пришлось немного погуглить и вот что нашел.

Оказывается, ребята из ROSA давно поправили этот баг в своем дистрибутиве, но я нигде не мог найти патч. Но случайно нашел его в ALT Linux.

Что ж, попробуем накатить его нам :)
И так, как я понял, все беды от unity-settings-daemon. Качаем его исходники:

apt-get source unity-settings-daemon

После того, как скачали, в терминале делаем cd в папку с исходниками (пригодится на будущее).
Затем, открываем файл ./plugins/keyboard/gsd-keyboard-manager.c, ищем код (~159 строка)

static gpointer manager_object = NULL;

и добавляем после него такое:

static guint group_position = 0;

Далее, ищем строку (в начале 700-ых строк, в функции upload_xkb_description):

XkbLockGroup (display, XkbUseCoreKbd, 0);

и меняем ее на:

XkbLockGroup (display, XkbUseCoreKbd, group_position);

Далее, строка (~750, функция build_xkb_group_string):

if (latin)
          length += strlen (latin);    
else 
          commas -= 1;                

и меняем на такое:

if (latin) {
        length += strlen (latin);
        group_position = 1;
	}
else {
        commas -= 1;
        group_position = 0;
	}

Чуть ниже, в этой же функции

        if (locale && latin)
                sprintf (string, "%s,%s,%s", user, locale, latin);
        else if (locale)
                sprintf (string, "%s,%s", user, locale);
        else if (latin)
                sprintf (string, "%s,%s", user, latin);

меняем на

        if (locale && latin)
                sprintf (string, "%s,%s,%s", latin, user, locale);
        else if (locale)
                sprintf (string, "%s,%s", user, locale);
        else if (latin)
                sprintf (string, "%s,%s", latin, user);

Все. Сохраняем, возвращаемся обратно в терминал:

sudo apt-get build-dep unity-settings-daemon

Эта команда установит уйму библиотек для компиляции исходников unity-settings-daemon и сборки пакета.
После того, как все зависимости для этого будут скачаны, собираем пакетик:

dpkg-buildpackage -rfakeroot -uc -b

Если все для сборки есть, все должно завершиться успехом, и в папке, на один уровень выше текущей, должен появиться файл с пакетом. Поставим его через dpkg. Пример команды (в зависимости от версии, пакет с которой собирали, команда может отличаться. Набираем unity и используем TAB для автодополнения):

sudo dpkg -i ../unity-settings-daemon_14.04.0+14.04.20140606-0ubuntu3_amd64.deb

Вот и все. Осталось только перезагрузиться! Или перезапустить LightDM:

sudo restart lightdm

Если все сделали правильно, то на любой раскладке (в том числе и отличной от английской) все хоткеи должны работать. Проверено в WPS Office, Intellij Idea (без LinuxJavaFixes есесно) - все ок.
Возможно, можно как-то автоматизировать процесс, а еще лучше - собрать пакеты и залить в PPA, но я не умею)
Если по какой-то причине что-то пошло не так, можно вернуть пакет из репозитария:

sudo apt-get install --reinstall ubuntu-settings-daemon

Статья написана для заметок, для себя (но с надеждой помочь кому-нибудь еще) и не гарантирует успех (хотя, у автора получилось :) ), используйте приведенное руководство на свой страх и риск)) За сломанную систему ответственности не несу)

UPD:

Эх, гулять - так гулять :D Сделал PPA для 14.04 Trusty:

sudo apt-add-repository ppa:zoltor/unity-settings-daemon
sudo apt-get update
sudo apt-get dist-upgrade

Для отката изменений:

sudo apt-get install ppa-purge
sudo ppa-purge ppa:zoltor/unity-settings-daemon


Комментарии:

 
Аватар
 

http://loveawake.ru - Кодекс чести, Сайт знакомств Loveawake.Ru

Аватар
 

Online Pharmacy Doxycycline 100mg <a href=http://frigra.com>viagra cialis</a> Buy Moduretic Cost Of Levitra Predisone Pills For Sale From Canada Generic Viagra Customer Reviews Forum Online Canadian Pharmacy <a href=http://cpsmeds.com>cialis online</a> Discount Plavix Coupons Best Overseas Pharmacy Keflex Ng Tube Compatability Drug Route <a href=http://czdyhl.com>cialis online</a> Flagyl Pills Order Elocon 5g Amoxicillin Cyp2d6 Farmacia Viagra Senza Ricetta Dosage De Clomid Amoxicillin For Macaw <a href=http://cure-rx.com>online pharmacy</a> Propecia Soldeu Keflex Headache Cheap Tamoxifen Citrate <a href=http://bs-meds.com>cialis</a> Cialis Doses Levitra Information Diflucan Price Cialis Levitra Comprar Espana <a href=http://drugsor.com>levitra 10mg</a> Mail Order Pharmacy For Nexium 40 Mg Cephalexin Side Effects Dogs On Line Worldwide Amoxicilina With Free Shipping Clomid Allaitement Medicaments <a href=http://e4drugs.com>buy kamagra with american express</a> Best Viagra Online Kamagra Barato Viagra Alle Erbe Ultimate <a href=http://4rxday.com>Cheap Cialis</a> Se Puede Comprar Viagra En La Farmacia

Аватар
 

Mastering macromedia dreamweaver mx

http://theodajung.000a.biz/lytaxely/virtualdj-home-edition-mac-os-x.html
Amazing designs baroque swirls and butterflies
http://blatorer.260mb.net/fuvudyc/avast-internet-security-5-license-file.html
Typing instructor for kids version 3
http://liaplebtio.eazylaunch.com/duwufu/lexware-lohnauskunft-2017-v170-german-cygiso.html
http://smudreni.hst5.com/kigivelu/outlook-email-address-extractor-27.html
<a href=”http://plotnackey.000a.biz/zyleqaze/powerdvd-902320a-ultra-rush.html”>powerdvd 9.0.2320a ultra rush</a>
<a href=http://nuclittlu.cuccfree.com/nabuli/adobe-acrobat-505-works-perfectfxg2017jumper.html>adobe acrobat 5.05 works perfectfxg2017jumper</a>



Добавить комментарий