ti-enxame.com

GUI personalizada do Linux: por onde começar?

Eu tenho um interesse de longa data no desenvolvimento de uma interface do usuário do SO adaptada às minhas necessidades e interesses. Quando eu era mais novo, fiquei louco brincando com as ferramentas de skin Stardock para Windows. Eu adorava desenvolver meus próprios estilos de janela e idéias de layout. Desde então, tive uma coceira inescrutável.

  • Não estou particularmente interessado em mexer com as operações do kernel de nível inferior, apenas os aspectos de apresentação. Eu estive considerando algum sabor do Linux.
  • Embora eu adorasse ter algumas ferramentas/aplicativos integrados básicos criados por mim, estou interessado principalmente nas apresentações de janelas básicas, barras de ferramentas, área de trabalho e gerenciamento de arquivos.
  • Não quero ser impedido de usar aplicativos existentes, se possível. Por exemplo, não tenho interesse em escrever meu próprio navegador da Web, mas ter a capacidade de trabalhar as ferramentas existentes em um design seria uma grande vantagem.
  • Às vezes, minhas idéias são muito visuais, por isso seria útil a capacidade de produzir efeitos de transparência mais complexos e formas incomuns de janelas. Mais ou menos, a capacidade de reproduzir a fidelidade gráfica dos designs de interface do usuário atuais para OS X ou Windows seria ideal.
  • Recomenda-se um sabor e ferramentas do SO que permitam começar com uma tela em branco e trabalhar a partir do zero ou incluir noções básicas. A idéia de uma "área de trabalho" no sentido tradicional não deve ser obrigatória. A flexibilidade para fazer coisas diferentes é importante para mim.

O que estou procurando:

Estou interessado em saber quais tipos de Linux/OS podem fazer sentido, quais ferramentas/estruturas seriam úteis para a realização da tarefa (Qt parece ser uma sugestão popular aqui) e informações básicas sobre como/onde alguém pode começar a desenvolver/testar tais uma interface do usuário. Eu também estaria interessado em ler sobre qualquer interface de usuário "pessoal" que as pessoas possam ter desenvolvido.

Esse é um interesse muito fora do meu trabalho normal de desenvolvimento; portanto, como um aviso, perdoe minha ingenuidade se parecer confuso. Visão corretiva bem-vinda.

Sei que essa é uma grande pergunta, por isso, obrigado por dedicar algum tempo para fazer sugestões.

57
grey

Você deseja criar seu próprio DE (ambiente de desktop). Exemplos comuns são o GNOME e o KDE, embora muitos deles fossem populares. Na verdade, costumava ser muito popular para criar seu próprio DE, e ferramentas de script dedicadas eram frequentemente criadas.

Você geralmente precisará combinar várias ferramentas: um gerenciador de janelas, um programa na barra de ferramentas, um gerenciador de área de trabalho (ícones), gerenciador de sessões e possivelmente mais. Fora disso, apenas um gerenciador de janelas é uma parte necessária (geralmente não faz sentido não executar nenhum WM dentro do servidor X), e outros são opcionais. Geralmente, você não escreve essas ferramentas do zero (é muito trabalhoso), mas usa componentes já disponíveis.

Observe que o GNOME e o KDE realmente consistem desses elementos (bem integrados). Por exemplo, o GNOME consiste em um gerenciador de janelas (metacity), barras de ferramentas (gnome-panel), gerenciador de área de trabalho (nautilus) e assim por diante. Você pode mudar um elemento para outro, se quiser: costumava ser popular usar sawfish como gerenciador de janelas em vez de metacity, mantendo todos os outros elementos intactos. Agora é popular usar compiz em vez de metacity.

Eu costumava usar FVWM , que é um gerenciador de janelas com recursos de script adicionais (muito bons) que podem ser usados ​​para criar barras de ferramentas, menus e outras coisas. Um dos exemplos de Nice é FVWM-Crystal , que é um DE completo, baseado no FVWM e em poucas outras ferramentas, escrito em uma mistura de scripts FVWM e Python. Você pode realmente mudar qualquer tipo de comportamento em tempo de execução, apenas abrindo o console de script do FVWM e digitando comandos. O FVWM-Crystal pode ser um bom ponto de partida se você deseja começar com algo que já pode ser usado; O FVWM bare é bom se você deseja criar seu DE a partir do zero.

[UPDATE: parece que gnome-Shell é muito semelhante nesse aspecto a FVWM. A maior parte do seu comportamento é script usando JavaScript (em vez de uma linguagem personalizada no FVWM) e é muito fácil de alterar. Também é desenvolvido ativamente, pois é uma parte importante do GNOME3, com muito bom suporte para composição. É o paraíso dos hackers ;-)]

[UPDATE2: então parece que eu estava certo no gnome-Shell. Há um Cinnamon , que usa a mesma estrutura (mutter gerenciador de janelas) que gnome-Shell, mas cria uma área de trabalho que funciona de maneira diferente de gnome-Shell.]

Havia um site que era uma boa fonte de idéias para implementar: lynucs.org . Está em baixa há dois anos, mas ficou arquivado .

Aviso: muitos desses componentes não são mais mantidos, especialmente desde que o GNOME/KDE começou a se tornar realmente útil. O desenvolvimento nessa área geralmente é impulsionado mais por requisitos específicos de dispositivos incorporados: telefones ou netbooks .

Agora, para responder às suas perguntas reais:

  • Flaver Linux/OS: qualquer coisa facilmente personalizável: Debian, Arch, Gentoo, LFS ...
  • Ferramentas/estruturas: depende do que você deseja alcançar. Se você quiser escrever uma barra de ferramentas personalizada, poderá usar apenas algumas linguagens de script (como as do FVWM), ferramentas personalizadas como adesklets ou escrever suas próprias no Qt (se a maioria dos outros componentes estiver no Qt) ou GTK (se a maioria dos outros componentes estiver em GTK).
  • UIs pessoais: havia muitos deles, e sites como o lynucs.org eram uma compilação legal deles (os componentes listados nos lynucs eram usados ​​em cada área de trabalho).
  • Efeitos complexos de transparência: as ferramentas mais antigas geralmente não lidam com isso de forma nativa ou fazem coisas simples, como reutilizar parte do papel de parede da área de trabalho como seu próprio plano de fundo (a chamada transparência falsa). Provavelmente, você precisará escrever seu próprio código, por exemplo, como um plugin para compiz.
47
liori

Eu provavelmente começaria com uma instalação do Ubuntu e o gerenciador de janelas OpenBox e construiria a partir daí.

O OpenBox é muito mínimo, mas você pode adicionar aplicativos (por exemplo, Docky, Awn, etc) para fornecer elementos da interface da área de trabalho ou escrever seus próprios.

3
Oli

Se você tiver uma interface de usuário rápida e legal, sugiro pesquisar em Iluminação . É mais antigo que o Gnome e eu achei a opção extremamente rápida e com baixo consumo de recursos.

1
Ashish

Você já experimentou Tcl/Tk? Tcl é uma linguagem de script. Tk é a parte da GUI do idioma. Seu aplicativo será executado em todos os lugares, mesmo em Android usando AndroWish.

Tão fácil e tão rápido.

Em apenas uma hora, consegui fazer uma agenda com um calendário.

0
superlinux