Repository navigation
Desenvolvimento
| Pasta | Conteúdo |
|---|---|
Theme/Win2k |
Tema de janelas: gtk-2.0, gtk-3.0, gtk-4.0, xfwm4, xfwm4_hidpi, openbox-3, metacity-1, cinnamon, gnome-shell, xfce-notify-4.0
|
Icon/Win2k |
Pacote de ícones. Icon/icones.html é gerado |
Cursor/Win2k_Cursors |
Cursores Xcursor |
Sound/Win2k |
Tema de sons (stereo/*.wav) e win2k-logon-sound.desktop
|
Wallpaper/Win2k |
Papéis de parede |
Menu |
win2k-start.menu, applications/, desktop-directories/, win2k-logoff.py
|
Panel |
Perfil do xfce4-panel-profiles |
Setup |
win2k-installer.py e imagens do assistente |
tools |
win2k-sounds.py, icon-gallery.py
|
Screenshots |
Capturas do README e do wiki |
- Interface em português do Brasil. Os
.desktoptêmNameem inglês eName[pt_BR]. - CSS GTK 3: indentação de 2 espaços e seletores relacionados empilhados (veja as notas no topo de cada arquivo).
- Comentários: CSS e
.menuem inglês; scripts Python em português. - O
gtk-4.0é independente dogtk-3.0: os assets dele ficam emgtk-4.0/assets.
-
gtk.cssdefine as cores (@define-color) e importa os arquivos por widget (gtk-buttons.css,gtk-menu.css,gtk-treeviews.css...) e os de aplicativos (apps/xfce.css,apps/thunar.css,apps/whiskermenu.css,apps/xfce-panel-hacks.css...). -
Painel do XFCE: o widget do plugin (
#separator-7,#showdesktop-1) não desenha nada. A estilização vai nos filhos (#tasklist-N > box,#showdesktop-button). Os IDs dos plugins mudam conforme o layout; por issoxfce-panel-hacks.csslista-1a-24. -
Menus de contexto herdam o CSS do widget que os abre:
font: initialemmenu, .menu, .context-menu. -
border-imagesó tem efeito comborder-stylediferente denone. Uma regraborder: nonezera a largura e esconde a imagem.
- Os seletores seguem o Adwaita do GTK 4.22 e do libadwaita (
gtk-adwaita.css). - Popovers herdam a fonte do widget pai:
popover.background { font: initial; }. - Para testar como os apps libadwaita veem o tema, sincronize com
~/.config/gtk-4.0.
- O degradê da barra de título vem de
title-active-stretch.pngetitle-inactive-stretch.png, com 2048 px de largura. Oxfwm4_hidpitem as mesmas imagens em 2×. - O fundo dos botões nos
.xpmé transparente (c None), para o degradê aparecer por trás. As cores das bordas ficam emthemerc(active_color_1,inactive_color_1...).
Setup/win2k-installer.py tem três partes:
-
Cópia de arquivos (
install_files,remove_files): copia para.newe troca comrename.COMPONENTSdefine origem e destino de cada componente nos modosuseresystem. Para um componente novo, basta uma entrada ali. -
Configurações (
apply_component,restore_component): grava peloxfconf-querye guarda o valor anterior em~/.local/share/win2k-installer/state.json. -
Interface (
gui_main): assistente GTK 3 sobre o fundo do Setup, com o diálogo desenhado numGtk.Overlay(posição pelo sinalget-child-position, arrastável pela barra de título).
Modo sistema: o script chama a si mesmo com
pkexec python3 -I win2k-installer.py --root install <componentes>. O lado root só aceita
nomes de COMPONENTS e destinos fixos no código, nunca caminhos vindos da linha de comando.
A janela não roda como root.
Tema da janela: use_project_theme cria links Win2k-Setup para o tema e os ícones do
projeto num diretório temporário, colocado no XDG_DATA_DIRS antes de o GTK iniciar. Os
comandos chamados recebem CHILD_ENV, o ambiente original.
Com PyGObject, sempre fixe a versão do Gdk junto com a do Gtk:
gi.require_version("Gtk", "3.0")
gi.require_version("Gdk", "3.0")Sem isso, o Gdk 4 pode ser carregado primeiro e o GTK 3 falha.
Tema numa janela isolada (sem instalar):
mkdir -p /tmp/w2k/themes && ln -s "$PWD/Theme/Win2k" /tmp/w2k/themes/Win2k
Xephyr :5 -screen 1024x768 -ac &
env -u DBUS_SESSION_BUS_ADDRESS DISPLAY=:5 XDG_DATA_DIRS=/tmp/w2k:/usr/share \
GTK_THEME=Win2k gtk3-widget-factorySessão XFCE completa isolada (como nas capturas): dbus-run-session com um HOME de
demonstração contendo cópias dos canais xfconf (xsettings, xfwm4, xfce4-panel,
xfce4-desktop...), rodando xfsettingsd, xfwm4, xfdesktop e xfce4-panel no Xephyr.
Instalador sem efeitos reais: rode com um HOME falso e versões falsas de
xfconf-query, xfce4-panel e xfce4-panel-profiles no começo do PATH, que só registram
as chamadas.
Painel: copie xfce4-panel.xml e ~/.config/xfce4/panel para um XDG_CONFIG_HOME
temporário e rode xfce4-panel dentro de dbus-run-session, no Xephyr. Um gtk.css em
$XDG_CONFIG_HOME/gtk-3.0/ permite testar regras sem editar o tema.
Tela de login: lightdm --test-mode --config <arquivo> abre o greeter num Xephyr.
Sem xdotool/wmctrl, cliques e teclas podem ser enviados com ctypes e libXtst
(XTestFakeButtonEvent, XTestFakeKeyEvent), e janelas podem ser posicionadas com Wnck.
As capturas do README foram feitas numa sessão XFCE isolada, com pasta pessoal de
demonstração (/home/usuario, montada num namespace com unshare), ícones da área de
trabalho ocultos e o tema direto do projeto. Antes de publicar capturas, confira se não
aparecem nomes de usuário, caminhos pessoais, dispositivos ou IPs.
python3 tools/icon-gallery.pyGera Icon/icones.html com os ícones listados em SECTIONS. Os caminhos apontam para o
arquivo real (links resolvidos).
Usar
Componentes
Projeto