sexta-feira, 20 de abril de 2012

Instale o recurso appmenu-qt no KDE 4.8.2

Olá mundo!

Ontem experimentei o excelente recurso chamado appmenu-qt, que tem como função ocultar o conteúdo da barra de menus de um app, adaptando-o  um botão integrado à barra de título.

Pra quem possui laptop é perfeito, já que ocupa menos espaço na tela, além do visual que fica muito bonito.

Na minha tentativa de ativar esse recurso no meu KDE 4.8.2 fiz umas buscas no Google e não consegui obter respostas satisfatórias.

Resumo: Fui dormir 1h00 da manhã, tirando KDE 4.8.2, botando KDE 4.7.4, aplicando patch, compilando apps em qt pelo cmake... Tudo bem, gosto de fazer isso. A prática ajuda bastante no aprendizado, mas não obtive sucesso.

Apenas hoje, para chegar a esse resultado fiz o seguinte:

1. Instalei o KDE 4.8.2 normalmente, o git, os "patterns" de desenvolvimento devel_kerneldevel_C_C++ e devel_kde e os pacotes libdbusmenu-qt-devel e libqjson-devel para preparar o ambiente para a compilação dos plugins e softwares responsáveis pelo recurso.

2. Baixei os seguintes sources para compila-los nesta ordem:
appmenu-qt-0.2.6 pelo site oficial do projeto
plasma-widget-menubar-0.1.17 pelo site oficial do projeto
oxygen-appmenu pelo git

O appmenu-qt é o "mediador" entre o dbus e o qt que rorna possível esse processo de "exportação" da barra de menu dos apps, para um widget, botão, etc.

O plasma-widget-menubar é, como o nome já diz, um widget para o plasma do KDE que lhe permite criar um menu global como no Mac OS X. Aquele painel superior que serve como container universal para a barra de menu de qualquer app.

O oxygen-appmenu é uma versão modificada do decorador KWIN OXYGEN padrão do KDE. Tive que baixa-lo pelo git porque a versão que está no kde-look.org é definida como 4.7.3 DEPRECATED, em outras palavras, é compatível até a versão 4.7.3, considerada ultrapassada.

Tudo instalado e pronto pra compilar, extraia os sources em /usr/src e compile da seguinte forma

1. Vá ao diretório extraído ( exemplo: /usr/src/appmenu-qt-0.2.6/ ) e crie um diretório /usr/src/appmenu-qt-0.2.6/ chamado build. Ficará assim: /usr/src/appmenu-qt-0.2.6/build/

2. Acesse a pasta build e execute os comandos abaixo
# cmake -DCMAKE_INSTALL_PREFIX=/usr ..
# make
# make install

Após a compilação faça o mesmo processo com as outras fontes extraídas, seguindo a ordem citada acima.

Tudo compilado e instalado, reinicie sua sessão no KDE, vá até
Configurações do Sistema -> Aparência do Espaço de Trabalho -> Decorações da Janela
e escolha Oxygen-appmenu

Clicando em Configurar decoração, você encontra algumas opções referentes ao recurso appmenu. Clicando em Configurar botões, você define a ordem dos objetos (botões, espaços, menu, etc) apresentados na barra de título. 

O appmenu será exatamente o objeto "menu" que fica dentro de Configurar botões.




Espero que gostem da dica.

[ ] ' s e até a próxima.
Share:

quarta-feira, 18 de abril de 2012

Desativando o "Top Corner Hover" das Atividades no Gnome 3

Olá pessoal,

só pra finalizar as dicas de hoje sobre o Gnome 3, vou ensina-los como desativar o recurso de exposição ao movimentar o ponteiro do mouse para o canto superior esquerdo da tela.

Essa dica eu encontrei aqui e espero que seja útil para vocês como foi para mim.

Como root edite o arquivo  /usr/share/gnome-shell/js/ui/panel.js

Navegue até a linha 630 e substitua


hotBox.x1 = Math.round(x);
hotBox.x2 = hotBox.x1 + this._hotCorner.actor.width;
hotBox.y1 = Math.round(y);
hotBox.y2 = hotBox.y1 + this._hotCorner.actor.height;
    this._hotCorner.actor.allocate(hotBox, flags);

por


hotBox.x1 = Math.round(x);
hotBox.x2 = hotBox.x1 + this._hotCorner.actor.width;
hotBox.y1 = Math.round(y);
hotBox.y2 = hotBox.y1 + this._hotCorner.actor.height;
    //qualquercoisa this._hotCorner.actor.allocate(hotBox, flags);


Reinicie o Gnome!
No link original explica o motivo de comentar a linha e colocar algo escrito em "qualquercoisa". No momento eu não me recordo.



[ ] ' s
Share:

Alterando os status disponiveis no Menu de IM no Gnome 3

Olá, turma!!

Estou com muito sono para criar um post extenso. Vou direto ao assunto!

Eu não entendia o motivo de o "User Menu" (aquele que fica no canto superior direito do Gnome 3) só conter as opções disponível e indisponível do IM. Eu sempre fui de utilizar o status ocupado por padrão, pois nem sempre estou com tempo livre, mas costumo conectado ao Talk.

Resolvi fuçar um pouco e acabei descobrindo como colocar as opções OCUPADO e INDISPONÍVEL no menu do IM.

Abra o terminal e edite o arquivo /usr/share/gnome-shell/js/ui/userMenu.js

Vá até a linha 332 e substitua


if (i == IMStatus.AVAILABLE || i == IMStatus.OFFLINE)


por


if (i == IMStatus.BUSY || i == IMStatus.OFFLINE)


Agora, nas linhas 343 e 344 faça as seguintes modificações


if (id == IMStatus.AVAILABLE) {
        newPresence = Tp.ConnectionPresenceType.AVAILABLE;


por


if (id == IMStatus.BUSY) {
        newPresence = Tp.ConnectionPresenceType.BUSY;


Reinicie o gnome e aproveite.
Share:

sábado, 14 de abril de 2012

Recompilando o Freetype2 no OpenSUSE 12.1

Salve, pessoal!!

Ainda na busca pela melhoria da renderização das fontes no OpenSUSE 12.1 encontrei uma ótima dica (nesse blog) sobre recompilação do Freetype2 através do arquivo SPEC.

Para quem não sabe, um arquivo SPEC é um tipo de script que contém informações (especificações) sobre como o compilador deve proceder para compilar um software qualquer e estruturá-lo em um pacote RPM.

Eu já tive a experiência de recompilar o Freetype2 no Slackware com suporte ao Subpixel -  inclusive mantenho em meu disco rígido um pacote txz com esse recurso ativado - mas nunca havia feito isso em sistemas que utilizam RPM como pacote padrão.

Existem duas formas de ativar o subpixel no OpenSUSE. A primeira é instalando um repositório extra que contem esses pacotes já prontos. A segunda, é recompilando através do SPEC.

A primeira opção traz uma maior risco de falhas pois, quanto mais repositórios se habilita, mais possíveis problemas relacionados a conflitos entre pacotes oficiais e pacotes mantidos por terceiros.

Então vamos partir pra segunda opção. Primeiramente instale o arquivo de fonte (source) do Freetype2:
# zypper source-install freetype2 (ou zypper si freetype2)
Siga para o diretório /usr/src/packages/SOURCES/ e observe que ja estarão disponíveis os arquivos freetype-2.4.7.tar.bz2 e freetype-doc-2.4.7.tar.bz2, entre outros.

Instale os pacotes necessários pra compilação:
# zypper in gcc zlib-devel patch
ou, se preferir fazer como eu, instale os grupos de pacotes de desenvolvimento
# zypper in --type pattern devel_C_C++ devel_kernel
Agora siga para o diretório /usr/src/packages/SPECS/ e observe o arquivo freetype2.spec

Abra-o através do seu editor preferido (lembrando de abri-lo como root) e navegue até mais ou menos a linha 98
%define enable_subpixel_rendering 0
Nessa linha deverá ser trocado o valor 0 para 1
%define enable_subpixel_rendering 1
Salve a alteração, feche o editor e execute
# rpmbuild -bb freetype2.spec
Aguarde a compilação dos pacotes terminarem.

Por fim vá até o diretório /usr/src/packages/RPMS/x86_64 (ou i686i586, depende da arquitetura do seu sistema) e instale os pacotes gerados:
# zypper in --force freetype2-devel-2.4.7-6.1.x86_64.rpm libfreetype6-2.4.7-6.1.x86_64.rpm
Lembrando que o nome do pacote no seu sistema pode variar a arquitetura de x86_64 para qualquer outra, dependendo da versão que esteja instalada.

Depois de concluída a instalação, reinicie o PC e ative o subpixel no seu gerenciador de janelas preferido na parte de aparência ou fontes.

Agora é só curtir as belas fontes no OpenSUSE.

[ ] ' s  e até a próxima!

UPDATE

Após a instalação dos pacotes fui atualizar o sistema e percebi que o zypper estava sugerindo a substituição de ambos pela versão que está no repositório. Em outras palavras, os pacotes com o subpixel ativado seriam removidos para que a versão padrão (sem subpixel) fossem instalados novamente.

Então me lembrei que havia lido algo sobre bloqueio de pacotes através do próprio zypper. Fiz uma rápida busca no Google, dei uma olhada no manual (man) e encontrei exatamente o que eu queria.

De acordo com o man, quando você bloqueia um pacote significa que SE ESTE ESTIVER INSTALADO NÃO PODERÁ SER REMOVIDO, OU, SE NÃO ESTIVER INSTALADO, QUALQUER TENTATIVA DE INSTALA-LO SERÁ NEGADA.

Abaixo mostrarei os comandos relacionados a  bloqueio de pacotes:

BLOQUEIO DE PACOTES
# zypper al package(s)
# zypper addlock package(s)

REMOVER O BLOQUEIO DE PACOTES
# zypper rl package(s)
# zypper removelock packages(s)

LISTAR OS PACOTES BLOQUEADOS
# zypper ll
# zypper locks

REMOVER TODOS OS BLOQUEIOS DE PACOTES DE FORMA INTERATIVA
# zypper cl
# zypper cleanlocks
No caso do Freetype2, executei o comando
# zypper al freetype2-devel libfreetype6
A lista com os pacotes bloqueados pode ser vista tambem no arquivo
/etc/zypp/locks

[ ] ' s
Share:

quinta-feira, 12 de abril de 2012

Instalar o Ubuntu numa partição LVM

E aí pessoal, tudo certo?

Hoje decidi passar pela experiência de instalar o Ubuntu no meu notebook após muitos anos sem utiliza-lo (a ultima vez foi em 2006). Como não tinha exatamente nada pra fazer resolvi dar uma espiadinha nas novidades e aproveitei para testá-lo numa partição LVM.

Quando iniciei o instalador percebi que minhas partições LVM não foram reconhecidas. Aí pensei: isso é fácil! Basta instalar os pacotes referentes ao lvm2. Então, 

# apt-get install lvm2 (pra instalar o suporte ao LVM)
# partprobe /dev/sda (pra detecar as partições no disco sda)

Perfeito!!

Reconhecidas as partições, instalei o Ubuntu sem problemas. Daí veio a surpresa. Reiniciei o PC e NADA do sistema carregar. Parava no processo do initramfs.

Pensei um pouco... Se no LIVE CD não havia o suporte ao LVM instalado, obviamente no sistema que instalei não vai ter tambem.

Pra resolver isso precisei carregar novamente o LIVE, refazer o processo de instalação do LVM e detecção de partições e montar a partição raiz (/) do Ubuntu instalado em /mnt

# mount /dev/mappar/particao_root_lvm /mnt

Agora, como fazer pra alterar o conteúdo da distro instalada no disco rígido? Montando os diretorios de processos e dispositivos


# mount -o bind /dev /mnt/dev
# mount -o bind /dev/pts /mnt/dev/pts
# mount -o bind /proc /mnt/proc
# mount -o bind /sys /mnt/sys

Fazendo um chroot
# chroot /mnt /bin/bash

Carregando o profile
# source /etc/profile

Pronto!

Diretorios montados, chroot efetuado e arquivo de configurações do perfil padrão carregado, basta instalar o LVM
# apt-get install lvm

Após finalizar a instalação o próprio sistema irá se encarregar de atualizar o ramdisk pra carregar os módulos necessários para o funcionamento do LVM durante a inicialização.

Se você chegou até aqui deve saber o /boot tem que ser montado numa partição normal (fora do LVM) senão o sistema não carrega.

Por hoje é só!!

[ ] ' s
Share:

sexta-feira, 6 de abril de 2012

Melhorando as fontes no openSUSE

Que o openSUSE é uma ótima distro eu já percebi. Antigamente eu não gostava muito, achava meio pesada, confusa e tal... ficava muito preso ao YAST e achava tudo uma complicação e tanta!


Aprendendo a lidar com o "modo openSUSE" de resolver as coisas acabei por me adaptar.

No momento só tenho uma reclamação: a renderização das fontes são péssimas.

Fiz uma busca no Google e encontrei alguns resultados...
Foi necessário remover o "hint" das fontes. Estranho, hein?

Segue abaixo a configuração ideal

1. Arquivo ~/.fonts.conf

<match target="font">
  <edit name="rgba" mode="assign">
    <const>none</const>
  </edit>
</match>

<match target="font">
  <edit name="autohint" mode="assign">
    <bool>false</bool>
  </edit>
</match>

<match target="font">
  <edit name="hinting" mode="assign">
    <bool>false</bool>
  </edit>
</match>

<match target="font">
  <edit name="hintstyle" mode="assign">
    <const>hintnone</const>
  </edit>
</match>

<match target="font">
  <edit name="antialias" mode="assign">
    <bool>true</bool>
  </edit>
</match>

<match target="font">
  <edit name="lcdfilter" mode="assign">
    <const>lcddefault</const>
  </edit>
</match>

2. Arquivo ~/.Xresources

Xft.autohint: 0
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintnone
Xft.hinting: 0
Xft.antialias: 1
Xft.rgba: none
Share:

terça-feira, 3 de abril de 2012

Adicionando um usuário a um grupo no OpenSUSE

Acabei de instalar o Virtualbox no OpenSUSE e na hora que tentei adicionar meu usuário ao grupo vboxusers obtive uma mensagem de erro que nunca havia visto.

# gpasswd -a usuario grupo
Eu sempre usei o comando acima, mas no OpenSUSE parece que a opção -a não existe no gpasswd. Bom, encontrei este:

# usermod -aG grupo usuario
Fica a dica.
Share:

Linux, sua segmentação e... o synaptics.

Você ja procurou entender o motivo do touchpad do seu notebook funcionar tão bem no fedora 15 e, de repente, nem ser reconhecido no fedora 16? É a mesma distro, só mudou a versão.

E quando você muda de distro, vai para o OpenSUSE 12.1 e descobre que as configurações que você fazia no fedora 15 funciona perfeitamente?

Pois é.

Cheguei a conclusão que temos que compreender a lógica da segmentação do desenvolvimento Linux (promovido pela filosofia opensource & software livre) e as particularidades de cada distribuição. Entenda que 90% do que você configura no /etc/X11/xorg.conf.d/50-synaptics.conf só vai funcionar na tela de login (KDM, GDM, etc.) e que ao entrar no ambiente de trabalho (Gnome, KDE, Xfce, etc.) algumas dessas configurações provavelmente não estarão funcionando (abstraídas por algum outro recurso).

Enrolei, enrolei, enrolei bastante para não deixar o post sem graça rsrs

Vamos configurar o touchpad?

Mão na massa:

Primeiro, edite e salve o arquivo /etc/X11/xorg.conf.d/50-synaptics.conf



Section "InputClass"
    Identifier "touchpad catchall"
    Driver "synaptics"
    MatchIsTouchpad "on"
    MatchDevicePath "/dev/input/event*"
    Option "TapButton1" "1"
    Option "TapButton2" "3"
    Option "VertTwoFingerScroll" "on"
    Option "HorizTwoFingerScroll" "on"
    Option "VertEdgeScroll" "off"
    Option "HorizEdgeScroll" "off"
    Option "VertScrollDelta" "113"
    Option "HorizScrollDelta" "113"
EndSection



Section "InputClass"
    Identifier "touchpad ignore duplicates"
    MatchIsTouchpad "on"
    MatchOS "Linux"
    MatchDevicePath "/dev/input/mouse*"
    Option "Ignore" "on"
EndSection



O parâmetro MatchDevicePath "/dev/input/event*" deve ser utilizado em um sistema com suporte ao evdev. Combinado com o parâmetro MatchDevicePath "/dev/input/mouse*" e a opção Option "Ignore" "on" evitará que erros e conflitos ocorram devido ao reconhecimento duplicado entre dispositivos touchpad e mouse.
Veja um pouco mais sobre esse assunto aqui. [Em inglês]

Depois crie um script com qualquer nome. Por exemplo, synclient-script.sh



#!/bin/bash

synclient TapButton1=1
synclient TapButton2=3
synclient VertTwoFingerScroll=1
synclient HorizTwoFingerScroll=1
synclient VertEdgeScroll=0
synclient HorizEdgeScroll=0
synclient VertScrollDelta=113
synclient HorizScrollDelta=113

Salve e mude a permissão para +x (permissão de execução) e copie para o diretório de inicialização automática do KDE

$HOME/.kde4/env

Esse diretório tem a função de armazenar scripts que devem ser carregados antes da inicialização do ambiente grafico KDE. Diferente do $HOME/.kde4/Autostart que é utilizado para armazenar scripts que devem ser carregados após o KDE ter sido completamente iniciado, por exemplo, algum navegador de internet que vocẽ deseja que seja aberto automaticamente toda vez que você entrar no KDE.

Para finalizar, analise se não tem nenhum outro gerenciador de touchpad/synaptic correndo no ambiente gráfico. Eu tive problemas para usar meu script porque ja havia o synaptiks instalado (gerenciador de touchpad para KDE). Simplesmente minhas configurações não funcionavam. Como o synaptiks não estava funcionando bem resolvi remove-lo e ficar so com o script.

Espero ter ajudado. ;-)

[ ] ' s
Share: