Kurzory nijak neměním, problém u mě vznikl tak, že jsem v Ubuntu 10.04 zkoušel KDE a pak se i v Gnome objevila ta oxygenní šipka a nemohl jsem se jí zbavit. Nakonec jsem se jí zbavil, načež se mi výchozí vzhled šipky změnil na to, co má X server implementováno jako výchozí a vůbec to není hezké. Jen v některých aplikacích. Pak jsem to vzdal a vrátil se k tomu pořádně až dnes a trochu pokročil a pochopil.
Tehdy jsem měl v Gnome nastaveno téma DMZ-White, ale výsledek byl zhruba takový: najedu myší nad Firefox a všechno se zdá vpořádku, šipka, klikací pracka, kurzor nad textovým polem, všechno ve vzhledu, který jsem si nastavil já, včetně velikosti. Najedu nad Operu a všechno je špatně - kurzor myši je komplet ve vzhledu, kterého se chci zbavit. Najedu nad Plochu, šipka je špatně, klikací pracka je správně a jako perlička - když najedu na okraj okna, kdy mohu měnit jeho velikost a mění se patřčně kurzor, stisknu myšítko, kurzor se změní zas na ten šeredný, ale tentokrát se správnou velikostí. Zní to fantasticky, že?
A kdo za to může? To nevím, ale zásadnější roli tu hrají tři řádky ve zdrojáku compiz-core, jejichž oprava je otázkou minut. Compiz je v Ubuntu 10.10 opaven, ale problém je trochu trochu komplikovanější, jak se dozvíte dále.
1a. Konfigurace index.theme
První částí řešení problému, bez opravy zdrojového kódu a rekompilace, je úprava konfigurace výchozího vzhledu kurzoru X serveru, aby souhlasil s tím, který jste si vybrali v Gnome. To zajistí správný vzhled kurzoru i v aplikacích, které nastavení Gnome neposlouchají. Je potřeba zapsat jméno vzhledu (vlastně jméno složky, ve které téma sídlí v /usr/share/icons/, případně ~/.icons/) do souboru index.theme a máte dvě možnosti - jednu globální a druhou pro konkrétního uživatele.
Buď tedy editujete
$ sudo nano /usr/share/icons/default/index.theme
nebo
$ nano ~/.icons/default/index.theme
Pokud zmíněné adresáře nemáte, vytvoříte si je (mkdir /cesta/adresář). Do index.theme napíšete jméno složky s vámi vybraným vzhledem, např.:
[Icon Theme]
Inherits=DMZ-White
Inherits=DMZ-White
Nakonec restartujete Compiz - Alt+F2 a spustíte:
compiz --replace
Pokud zvolíte konfiguraci na úrovni uživatele, musíte počítat s tím, že nad okny aplikací spuštěných s právy administrátora (tzv. pod rootem), se bude kurzor opět měnit na výchozí, definovaný v systému. Podoba kurzoru myši závisí na nastavení konkrétních aplikací, proto se změna v některých nemusí projevit hned. Operu, SMPlayer a další aplikace budete muset restartovat, aby si načetly vzhled nového kurzoru.
1b. Update-alternatives
1b. Update-alternatives
Toho samého, co v předchozím bodě, můžete dosáhnout pomocí správy alternativ. Systém alternativ spočívá v tom, že místo jednoho souboru, máte nějaký obecný link, který odkazuje na jiný link v /etc/alternatives/. Link v /etc/alternatives/ je zároveň jménem konkrétní skupiny a ten teprve odkazuje na zvolenou alternativu. Můžete alternativy přidávat, mazat, nastavovat prioritu, .. V našem případě je v systému definována skupina pod názvem x-cursor-theme spravující alternativy k /usr/share/icons/default/index.theme. Pokud instalujete nové vzhledy kurzorů z nějakého instalačního balíku, zpravidla se sem jako alternativa přidají, ručně je můžete přidávat pomocí update-alternatives --install, viz manuál. Vzhled kurzoru tedy můžete přenastavit takto:
$ sudo update-alternatives --force --config x-cursor-theme
Po spuštění příkazu se vypíše seznam registrovaných alternativ, ze kterého si vyberete napsáním pořadového čísla - to zajišťuje volba --config. Volba --force zajistí, že se zapíše zvolený link i v případě, že je na jeho místě běžný soubor, prostě ho přepíše. /usr/share/icons/default/index.theme tedy nyní nepřímo odkazuje na index zvoleného vzhledu v adresáři, ve kterém je vzhled instalován. Kam ve skutečnosti vede, se můžete podívat:
$ ls -l /usr/share/icons/default/index.theme
$ ls -l /etc/alternatives/x-cursor-theme
$ ls -l /etc/alternatives/x-cursor-theme
2. Oprava compiz-core
Druhou částí je oprava oněch tří řádků v balíku compiz-core., která vám krom okamžité změny kurzoru, přidá funkčnost nastavení velikosti hlavního kurzoru (šipky), kteréžto bez opravy nefunguje s Compizem vůbec. Upozorňuji, že tento postup je pro Ubuntu 10.04 Lucid Lynx, v 10.10 je to již opraveno.
Protože je potřeba balík překompilovat, budete potřebovat nějaké nástroje, kreré si pořídíte takto:
Protože je potřeba balík překompilovat, budete potřebovat nějaké nástroje, kreré si pořídíte takto:
$ sudo apt-get install build-essential apt-src
Nyní stáhnete zdrojové kódy:
$ mkdir ~/compiz-core; cd ~/compiz-core
$ sudo apt-src install compiz-core
$ sudo apt-src install compiz-core
A upravíte soubor compiz-0.8.4/debian/patches/013-add-cursor-theme-support.patch nahrazením řeťezce core.xml.in za core.xml.in.in na řádcích 133, 135, 136. Můžete to udělat ve svém oblíbeném editoru spuštěném s právy superuživatele, například:
$ gksudo gedit compiz-0.8.4/debian/patches/013-add-cursor-theme-support.patch
nebo to rovnou vyměnit příkazem:
$ sudo sed -i "s/core.xml.in/core.xml.in.in/g" compiz-0.8.4/debian/patches/013-add-cursor-theme-support.patch
Po úpravě vyrobíte instalační balík (chvilku to bude trvat, podle rychlosti pece):
$ sudo apt-src build compiz-core
A hotový nový balík nainstalujete místo původního. Zde je samozřejmě rozdíl v závislosti na tom, zda máte 64bit systém:
$ sudo dpkg -i compiz-core_0.8.4-0ubuntu15_amd64.deb
nebo 32bit systém:
$ sudo dpkg -i compiz-core_0.8.4-0ubuntu15_i386.deb
Nakonec restartujete Compiz (Alt+F2 compiz --replace).
Nyní se můžete radovat, jak se pěkně kurzor mění hned jak si ho vyberete, velikost jakbysmet, ale nadšení vás nejspíš opustí při spuštění Opery, SMPlayeru, změně velikosti, nebo tažení okna. Sakra! Ten kurzor se zas mění na něco jiného!
Zkrátka některé aplikace budou vyžadovat použití prvního bodu tak jako tak a to i v Ubuntu 10.10. V těchto aplikacích můžete zapomenout na změnu velikosti kurzoru (nebo snad ne? čtěte dál..), ta bude podle výchozího nastavení konkrétního tématu. Není to už problém Compizu, tyto aplikace čtou nastavení přímo z X serveru, místo z gconfu a stejně tak to budou dělat i bez Compizu.
A je tu ještě další bota: s příští aktualizací Compizu se to zase přepíše špatným kódem a můžete začít znovu. Nebo zamknout balík a neaktualizovat.
3. Změna velikosti kurzoru u nestandardních aplikací
Ovšem s tou změnou velikosti u postižených aplikací se dá také něco dělat - můžete ještě využít konfiguračního souboru ~/.Xresources, který Ubuntu v základu neobsahuje, ale nic vám nebrání si ho vytvořit. V něm definujete velikost kurzoru a pokud zvolené téma tuto změnu podporuje, bude použita:
Zkrátka některé aplikace budou vyžadovat použití prvního bodu tak jako tak a to i v Ubuntu 10.10. V těchto aplikacích můžete zapomenout na změnu velikosti kurzoru (nebo snad ne? čtěte dál..), ta bude podle výchozího nastavení konkrétního tématu. Není to už problém Compizu, tyto aplikace čtou nastavení přímo z X serveru, místo z gconfu a stejně tak to budou dělat i bez Compizu.
A je tu ještě další bota: s příští aktualizací Compizu se to zase přepíše špatným kódem a můžete začít znovu. Nebo zamknout balík a neaktualizovat.
3. Změna velikosti kurzoru u nestandardních aplikací
Ovšem s tou změnou velikosti u postižených aplikací se dá také něco dělat - můžete ještě využít konfiguračního souboru ~/.Xresources, který Ubuntu v základu neobsahuje, ale nic vám nebrání si ho vytvořit. V něm definujete velikost kurzoru a pokud zvolené téma tuto změnu podporuje, bude použita:
Xcursor.size: 48
Nastavení se samozřejmě vztahuje ke konkrétnímu uživateli, v jehož domovském adresáři se soubor nachází. Změna se projeví po restartu X.
4. Automatizace
Pokud měníte kurzory častěji, můžete si přenos konfigurace trochu zautomatizovat. Následující příkazy si přečtou nastavení kurzoru v Gnome gconf a přepíší nastavení /usr/share/icon/index.theme a ~/.Xresources. Předpokladem pro správnou funkci je, že soubory existují a je v nich nastavení definováno způsobem, který jsem ukázal dříve. Pokud jste použili výše popsanou metodu 1b., smažte před použitím následujících příkazů index.theme a nahraďte ho řešením z 1a.
$ sudo sed -i "s/`grep Inherits /usr/share/icons/default/index.theme`/Inherits=`gconftool-2 --get /desktop/gnome/peripherals/mouse/cursor_theme`/" /usr/share/icons/default/index.theme
Nastavení velikosti:
sudo sed -i "s/`grep Xcursor.size ~/.Xresources`/Xcursor.size: `gconftool-2 --get /desktop/gnome/peripherals/mouse/cursor_size`/" ~/.Xresources
Takto nastavená velikost kurzoru se projeví až po restartu X serveru.
Pokud si uložíte předchozí řádky do skriptu někde na disku, můžete je pak spouštět jedním klikem, když si budete měnit téma.
A pak že to nejde, nevidím důvod, proč by to už nemohlo být v Ubuntu dávno vyřešeno tak, aby si uživatel ničeho nevšiml. Ale taky už nemám zrak takový, jako za mlada :)
Na závěr ještě varování: pokud v souboru index.theme definujete kurzor špatně, nepřihlásíte se vůbec do Gnome. Už přihlašovací obrazovka se bude chovat tak, že by vás nenapadlo, že je to kurzorem, protože šipka tu normálně funguje, jenže ani nejde napsat heslo, jako by nefungovala klávesnice a nakonec zmizí i pole pro zadávání hesla. V tomto případě je potřeba přihlásit se do konzoly (Ctrl+Alt+F1) a nejjistější je použít metodu 1b.
Poslední úprava článku 20.3.2011 14:05 spočívá v doplnění bodu 1b a varování. Zatím se loučím, případně to zase doplním... :)
Pokud si uložíte předchozí řádky do skriptu někde na disku, můžete je pak spouštět jedním klikem, když si budete měnit téma.
A pak že to nejde, nevidím důvod, proč by to už nemohlo být v Ubuntu dávno vyřešeno tak, aby si uživatel ničeho nevšiml. Ale taky už nemám zrak takový, jako za mlada :)
Na závěr ještě varování: pokud v souboru index.theme definujete kurzor špatně, nepřihlásíte se vůbec do Gnome. Už přihlašovací obrazovka se bude chovat tak, že by vás nenapadlo, že je to kurzorem, protože šipka tu normálně funguje, jenže ani nejde napsat heslo, jako by nefungovala klávesnice a nakonec zmizí i pole pro zadávání hesla. V tomto případě je potřeba přihlásit se do konzoly (Ctrl+Alt+F1) a nejjistější je použít metodu 1b.
Poslední úprava článku 20.3.2011 14:05 spočívá v doplnění bodu 1b a varování. Zatím se loučím, případně to zase doplním... :)
Žádné komentáře:
Okomentovat
Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.
Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.