Construindo o Plasma

Plasma do KDE é uma coleção de pacotes baseados no Frameworks do KDE e QML. Eles implementam o Ambiente de Exibição do KDE (Plasma).

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.3.

As instruções abaixo constroem todos os pacotes do Plasma em uma etapa usando um conjunto de comandos sequenciais do Bash.

Informação do Pacote

Dependências do Plasma

Exigidas

Boost-1.87.0, FFmpeg-7.1, GTK-3.24.48, KDE Frameworks-6.11.0, kirigami-addons-1.4.0, libdisplay-info-0.2.0, libpwquality-1.4.5, libqalculate-5.5.1, libnl-3.11.0, libxcvt-0.1.3, libxkbcommon-1.8.0, Mesa-24.3.4 construído com Wayland-1.23.0, opencv-4.11.0, phonon-4.12.0, pipewire-1.2.7, pulseaudio-qt-1.7.0, qca-2.3.9, qcoro-0.11.0, sassc-3.6.2, taglib-2.0.2, xdotool-3.20211022.1 e Controlador Evdev do Xorg-2.11.0

Recomendadas

Recomendadas (tempo de execução)

Opcionais

AppStream-1.0.4 (construído com -qt=true), GLU-9.0.3, ibus-1.5.31, qtwebengine-6.8.2, KDevPlatform, libgps, libhybris, packagekit-qt, Qapt, SCIM e socat (para pam_kwallet)

Baixando o Plasma do KDE

A maneira mais fácil de obter os pacotes do Plasma do KDE é a de usar um wget para buscá-los todos de uma vez:

url=https://download.kde.org/stable/plasma/6.3.2/
wget -r -nH -nd -A '*.xz' -np $url

As opções usadas aqui são:
-r        recursivamente pelos diretórios descendentes
-nH       desabilita a geração de diretórios prefixados pelo anfitrião
-nd       não cria uma hierarquia de diretórios
-A '*.xz' apenas obtém os arquivos *.xz
-np       não obtém os diretórios pais
[Importante]

Importante

Existe um arquivo baixado, spectacle-6.3.2.1.tar.xz, que está rotulado incorretamente. Quando extraído, o diretório de nível superior não corresponde ao nome do tarball. Nós precisamos tornar esse arquivo consistente agora:

mv spectacle-6.3.2.1.tar.xz spectacle-6.3.2.tar.xz

Configurando a Ordem do Pacote

A ordem de construção dos arquivos é importante devido às dependências internas. Crie a lista de arquivos na ordem correta conforme segue:

cat > plasma-6.3.2.md5 << "EOF"
34c760dc07f498d800c78013e89720b8  kdecoration-6.3.2.tar.xz
1a23a3c130d5a73e851556638e05c86a  libkscreen-6.3.2.tar.xz
f8d52a88a1b4bb492fb4c590d93efd9f  libksysguard-6.3.2.tar.xz
7d88c11927b7254a48c239f8ff833161  breeze-6.3.2.tar.xz
7c23c6cca6ae3b75c7d6e338d655f6be  breeze-gtk-6.3.2.tar.xz
f56e4b5f766ddf07974646305e32f86e  layer-shell-qt-6.3.2.tar.xz
c1ee6ea5e63f87819e53aae19e7175f5  plasma-activities-6.3.2.tar.xz
d98a720f6c7bf6b18f68eaa0842454c9  libplasma-6.3.2.tar.xz
97d0ef783470792339b0ab04325bc374  kscreenlocker-6.3.2.tar.xz
cb1b7c21781685de53e066ed83f0ec88  kinfocenter-6.3.2.tar.xz
153b3403440f5376a170055b3e0e7740  kglobalacceld-6.3.2.tar.xz
425782c861e1b1bf0bb49a782b402cd6  kwayland-6.3.2.tar.xz
e4c54188e25914eb0d0e5693b0e6332c  kwin-6.3.2.1.tar.xz
#309881e87eab586be5448455f4d81b19  kwin-6.3.2.tar.xz
0c0eaea9839bff9b0ac70e09814618f2  plasma5support-6.3.2.tar.xz
b59f54a9c59f5633d4141f9acd6369ce  plasma-activities-stats-6.3.2.tar.xz
dbdc3c9f45d0e0e09ab2b6cf6b6b75d7  kpipewire-6.3.2.tar.xz
b83418536dead5549a9c87eaf7b1fe4d  plasma-workspace-6.3.2.tar.xz
5737bfdf712844e76b0da0acedd8f339  plasma-disks-6.3.2.tar.xz
62d50988f3833ed98e22a0c6fbb805ff  bluedevil-6.3.2.tar.xz
dfd47627bc8da5c5b53475214a648b28  kde-gtk-config-6.3.2.tar.xz
06577237fc872fb7659b11e829594144  kmenuedit-6.3.2.tar.xz
77dba21438203d747f9361ef91e3f27b  kscreen-6.3.2.tar.xz
2b880797d9e6ccd1cba40285436b1789  kwallet-pam-6.3.2.tar.xz
bf7edbc9fd326ab2764e1244e6835ffa  kwrited-6.3.2.tar.xz
7d787ff90098760bf8eb5db7fd833bc8  milou-6.3.2.tar.xz
1b9dd5ae4ebf274bc282d2636af50fbb  plasma-nm-6.3.2.tar.xz
281ec80a71b3942a8d42a5132682f1bc  plasma-pa-6.3.2.tar.xz
0f225ead05e73c43599a66cd6d796cc6  plasma-workspace-wallpapers-6.3.2.tar.xz
5bdd87252dc6713f4b9ebd44e2caaf4e  polkit-kde-agent-1-6.3.2.tar.xz
29608ea71ab87f3491adcb5584ca8dc9  powerdevil-6.3.2.tar.xz
f323dda4120302a0759fe81679c9dbd6  plasma-desktop-6.3.2.tar.xz
4353d584447fb28011637ed3d85b4920  kgamma-6.3.2.tar.xz
e278489c407a411270f70d945f6d6a51  ksshaskpass-6.3.2.tar.xz
#bf4d0d25e309e930cbf867b0f4460e51  plasma-sdk-6.3.2.tar.xz
2b4b42f97b187209a6d93f7167b793ca  sddm-kcm-6.3.2.tar.xz
#05dd805ad6eaaa6563ac16ef413f8ad3  discover-6.3.2.tar.xz
#037192907099c3a3edcceee135336040  breeze-grub-6.3.2.tar.xz
#5e2b70c2282b5597f86008e3bf27b632  breeze-plymouth-6.3.2.tar.xz
a7846a4612e60ac416b1db227d208e95  kactivitymanagerd-6.3.2.tar.xz
477b200bc4bc43344529a835c5e607a3  plasma-integration-6.3.2.tar.xz
#9b3e41e24234f6c01f64739babcede7a  plymouth-kcm-6.3.2.tar.xz
79cea0f52385ce4bb8448a0f7b17f212  xdg-desktop-portal-kde-6.3.2.tar.xz
6fd748a372f52c33ce869b58b7d5fe18  drkonqi-6.3.2.tar.xz
ed431307e4784a87bd24576df4394e6e  plasma-vault-6.3.2.tar.xz
#6ed2a9395f7e569ca38875c44db408db  plasma-browser-integration-6.3.2.tar.xz
147069fdc10dea3a7a7701df9fd2d9ee  kde-cli-tools-6.3.2.tar.xz
3a846d5cf8d923780e21f011ae2ceb17  systemsettings-6.3.2.tar.xz
8b43cda434ae5d88c9436e3d4b793164  plasma-thunderbolt-6.3.2.tar.xz
#5c1c23af1627d25842bfc28dc56fe048  plasma-mobile-6.3.2.tar.xz
#9a07133320259913c5a826b5256f86d8  plasma-nano-6.3.2.tar.xz
488fc23da31e10dd7bc2a1e36ee6716d  plasma-firewall-6.3.2.tar.xz
602917d54289a02a6711f215dae470bb  plasma-systemmonitor-6.3.2.tar.xz
361d1a0da813fd82bd36e11fcc4b157b  qqc2-breeze-style-6.3.2.tar.xz
b26d38fb9f9d83b27bcafaec1597843a  ksystemstats-6.3.2.tar.xz
2102f13838581d36a8247e2b54fff369  oxygen-sounds-6.3.2.tar.xz
ba8261586695cccdb01a6de8d400281c  kdeplasma-addons-6.3.2.tar.xz
#b32d6d4486fd549d61aeff96c1dfff85  flatpak-kcm-6.3.2.tar.xz
8d3998b1e171ee55c91a419cc8ba6319  plasma-welcome-6.3.2.tar.xz
faf86ec8c776cd351c1a96ed70328da3  ocean-sound-theme-6.3.2.tar.xz
f7a577b9baf316504e2ab9481f376008  print-manager-6.3.2.tar.xz
7d06df172f05b46ea6e97ae41f6e8be7  wacomtablet-6.3.2.tar.xz
#8575d2950cff501301f92426145e3056  kwayland-integration-6.3.2.tar.xz
#3679989f3a64f9c5b976175267119334  krdp-6.3.2.tar.xz
b812507c2d6720a1a9aca4e38b993f68  oxygen-6.3.2.tar.xz
#99b5985ac398900121545d03ab54530e  plasma-dialer-6.3.2.tar.xz
#ffeddc23f3e90de981301940b21550d0  spacebar-6.3.2.tar.xz
e9fc02ced53504b97341e0f248c63ee8  spectacle-6.3.2.tar.xz
EOF
[Nota]

Acerca de Pacotes Comentados

Na lista acima, vários arquivos estão comentados com um caractere cerquilha (#).

  • O pacote plasma-sdk é opcional e usado para desenvolvimento de software.

  • O pacote de descoberta exige que AppStream-1.0.4 seja construído com a chave -D qt=true.

  • Os pacotes breeze-grub, breeze-plymouth e plymouth-kcm acima são todos para suporte personalizado do Plymouth, que foi projetado para ser executado dentro de um disco inicial RAM durante a inicialização (veja-se “A respeito do initramfs”).

  • O pacote plasma-browser-integration foi projetado para implementar integração do navegador para Plasma no Mozilla Firefox e no Google Chrome. O pacote constrói, mas só é útil se você quiser que esses navegadores sejam integrados ao shell de uma forma que permita que você veja (e controle) transferências a partir da área de notificações do Plasma, bem como que permita que você pesquise o histórico do navegador no KDE Runner. Observe que você também precisa instalar uma extensão do navegador para isso funcionar. Para mais detalhes, veja-se a página wiki do KDE Plasma acerca de integração do navegador.

  • O pacote krdp é usado para permitir que um servidor RDP seja executado enquanto usar Plasma. Esse recurso exige a versão 2.x do FreeRDP, que não está no BLFS.

  • O pacote plasma-nano é usado para sistemas embarcados.

  • Os pacotes plasma-mobile, plasma-dialer e spacebar fornecem funcionalidade de telefone para o Plasma.

  • O pacote flatpak-kcm é para suporte de gerenciamento de aplicativos flatpak.

  • O aplicativo kwayland-integration exige suporte plasma5.

Instalação do Plasma

[Nota]

Nota

Quando instalar múltiplos pacotes em um conjunto de comandos sequenciais, a instalação precisa ser feita como o(a) usuário(a) root. Existem três opções gerais que podem ser usadas para se fazer isso:

  1. Executar o conjunto inteiro de comandos sequenciais como o(a) usuário(a) root (não recomendado).

  2. Usar o comando sudo oriundo do pacote Sudo-1.9.16p2.

  3. Usar su -c "argumentos do comando" (aspas exigidas), que solicitará a senha do(a) root para cada interação do loop.

Uma maneira de se lidar com essa situação é a de se criar uma função curta do bash que selecione automaticamente o método apropriado. Uma vez que o comando esteja configurado no ambiente, ele não precisa ser configurado novamente.

as_root()
{
  if   [ $EUID = 0 ];        then $*
  elif [ -x /usr/bin/sudo ]; then sudo $*
  else                            su -c \\"$*\\"
  fi
}

export -f as_root

Primeiro, inicie um sub shell que sairá em caso de erro:

bash -e

Instale todos os pacotes executando os seguintes comandos:


while read -r line; do

    # Get the file name, ignoring comments and blank lines
    if $(echo $line | grep -E -q '^ *$|^#' ); then continue; fi
    file=$(echo $line | cut -d" " -f2)

    pkg=$(echo $file|sed 's|^.*/||')           # Remove directory
    packagedir=$(echo $pkg |sed 's|\.tar.*||') # Source directory

    tar -xf $file
    pushd $packagedir

       mkdir build
       cd    build

       cmake -D CMAKE_INSTALL_PREFIX=$KF6_PREFIX \
             -D CMAKE_INSTALL_LIBEXECDIR=libexec \
             -D CMAKE_BUILD_TYPE=Release         \
             -D BUILD_QT5=OFF                    \
             -D BUILD_TESTING=OFF                \
             -W no-dev ..  &&

        make
        as_root make install
    popd


    as_root rm -rf $packagedir
    as_root /sbin/ldconfig

done < plasma-6.3.2.md5

exit

Se você não configurou $KF5_PREFIX como /usr, crie links simbólicos para permitir que gerenciadores de tela encontrem o Plasma e para permitir que XDG Desktop Portal seja detectado. Como o(a) usuário(a) root:

# Setup xsessions (X11 sessions)
install -dvm 755 /usr/share/xsessions
cd /usr/share/xsessions

[ -e plasma.desktop ] ||
ln -sfv $KF6_PREFIX/share/xsessions/plasmax11.desktop 

# Setup wayland-sessions 
install -dvm 755 /usr/share/wayland-sessions
cd /usr/share/wayland-sessions

[ -e plasmawayland.desktop ] ||
ln -sfv $KF6_PREFIX/share/wayland-sessions/plasma.desktop

# Setup xdg-desktop-portal
install -dvm 755 /usr/share/xdg-desktop-portal
cd /usr/share/xdg-desktop-portal 

[ -e kde-portals.conf ] ||
ln -sfv $KF6_PREFIX/share/xdg-desktop-portal/kde-portals.conf

# Setup kde portal
install -dvm 755 /usr/share/xdg-desktop-portal/portals
cd /usr/share/xdg-desktop-portal/portals

[ -e kde.portal ] ||
ln -sfv $KF6_PREFIX/share/xdg-desktop-portal/portals/kde.portal

Unidades do systemd inúteis foram instaladas em $KF6_PREFIX/lib. Remova-as agora (como root):

rm -rf $KF6_PREFIX/lib/systemd

Configurando Plasma

Configuração do Linux PAM

Se você construiu o Plasma com o suporte Linux PAM recomendado, crie os necessários arquivos de configuração executando os seguintes comandos como o(a) usuário(a) root:

cat > /etc/pam.d/kde << "EOF"
# Begin /etc/pam.d/kde

auth     requisite      pam_nologin.so
auth     required       pam_env.so

auth     required       pam_succeed_if.so uid >= 1000 quiet
auth     include        system-auth

account  include        system-account
password include        system-password
session  include        system-session

# End /etc/pam.d/kde
EOF

cat > /etc/pam.d/kde-np << "EOF"
# Begin /etc/pam.d/kde-np

auth     requisite      pam_nologin.so
auth     required       pam_env.so

auth     required       pam_succeed_if.so uid >= 1000 quiet
auth     required       pam_permit.so

account  include        system-account
password include        system-password
session  include        system-session

# End /etc/pam.d/kde-np
EOF

cat > /etc/pam.d/kscreensaver << "EOF"
# Begin /etc/pam.d/kscreensaver

auth    include system-auth
account include system-account

# End /etc/pam.d/kscreensaver
EOF

Iniciando o Plasma

Você consegue iniciar o Plasma a partir do nível de execução 3, usando o xinit-1.4.3, ou a partir do nível de execução 5, usando um Gerenciador de Tela, como o lightdm-1.32.0.

Para iniciar o Plasma usando o xinit-1.4.3, execute os seguintes comandos:

cat > ~/.xinitrc << "EOF"
dbus-launch --exit-with-x11 $KF6_PREFIX/bin/startplasma-x11
EOF

startx

A sessão do X inicia no primeiro terminal virtual não usado, normalmente o vt7. Você consegue comutar para outro vtn pressionando simultaneamente as teclas Ctrl-Alt-Fn (n=1, 2, ...). Para comutar de volta para a sessão do X, normalmente iniciada no vt7, use Ctrl-Alt-F7. O vt onde o comando startx foi executado exibirá muitas mensagens, incluindo mensagens de iniciação do X, aplicativos iniciados automaticamente com a sessão e, eventualmente, algumas mensagens de aviso e erro. Você possivelmente prefira redirecionar essas mensagens para um arquivo de registro, que não apenas manterá o vt inicial organizado, mas também poderá ser usado para fins de depuração. Isso pode ser feito iniciando-se o X com:

startx &> ~/x-session-errors

Ao desligar ou reinicializar, as mensagens de desligamento aparecem no terminal virtual onde o X estava executando. Se você desejar ver essas mensagens, pressione simultaneamente as teclas Alt-F7 (assumindo que o X estava executando no terminal virtual 7).

Conteúdo

Aplicativos Instalados: Existem muitíssimos aplicativos do Plasma (mais que cinquenta (50) em /opt/kf6/bin) para listar separadamente aqui.
Bibliotecas Instaladas: Existem muitíssimas bibliotecas do Plasma (mais que duzentas e cinquenta (250) em /opt/kf6/lib) para listar separadamente aqui.
Diretórios Instalados: Existem muitíssimos diretórios do Plasma (mais que dois mil e setecentos (2.700) em /opt/kf6) para listar separadamente aqui.