From dadc105c7534459d12c34bc835b780bd896f2adf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=93=D0=B5=D1=80=D1=85=D0=B0=D1=80=D0=B4=20PICCORO=20Len?= =?UTF-8?q?z=20McKAY?= Date: Fri, 9 Sep 2022 10:35:04 -0400 Subject: [PATCH] tutorial - first version alpine wayland desktop * fix sections ducplication of DESKTOP in main readme of community way * in the same way of the xfce fast forward desktop * include pipewire and sesion handler * unfortunatelly is not pure wayland only.. * provide ways to use sway over TTY or GUI (lightdm) and the bug related --- tutorials/README.md | 7 +- tutorials/community-way/README.md | 13 +- .../alpine-tutorial-desktop-wayland-try.md | 401 ++++++++++++++++++ ...ine-tutorial-desktop-xfce4-fast-forward.md | 6 +- 4 files changed, 413 insertions(+), 14 deletions(-) create mode 100644 tutorials/community-way/alpine-tutorial-desktop-wayland-try.md diff --git a/tutorials/README.md b/tutorials/README.md index cef4ffd..967c38e 100644 --- a/tutorials/README.md +++ b/tutorials/README.md @@ -2,10 +2,11 @@ Alpine Linux tutorias and howtos ================================= **Where to start?** Check the next section. Ok but **if you are impatient and -want an Alpine ready touse in 4 hours**, use [.. this link...alpine XFCE](../newbie/alpine-newbie-xfce-desktop.md) +want an Alpine ready touse in 1 hour**, use [.. this link...alpine XFCE desktop](../newbie/alpine-newbie-xfce-desktop.md) a single explanatory article that installs a complete desktop -or [this one more minimal version](community-way/alpine-tutorial-desktop-xfce4-fast-forward.md) -if you want to avoid the explanations and just go all the way. +or [this minimal version](community-way/alpine-tutorial-desktop-xfce4-fast-forward.md) +if you want to avoid the explanations and just go all the way. For the wayland fashioned +desktop try the guide [alpine tutorial desktop wayland try](community-way/alpine-tutorial-desktop-wayland-try.md) . ## TUTORIALS AND HOWTOS diff --git a/tutorials/community-way/README.md b/tutorials/community-way/README.md index f306ed4..73041a8 100644 --- a/tutorials/community-way/README.md +++ b/tutorials/community-way/README.md @@ -17,25 +17,20 @@ TODO ## PHONES -* [alpine-tutorial-in-phones.md](alpine-tutorial-in-phones.md) +* Alpine in your phone: [alpine-tutorial-in-phones.md](alpine-tutorial-in-phones.md) * [phones-androit-allow-external-apps-install.md](phones-androit-allow-external-apps-install.md) ## DESKTOPS -* [alpine-tutorial-desktop-xfce4-fast-forward.md](alpine-tutorial-desktop-xfce4-fast-forward.md) -* [alpine-tutorial-desktops-openbox-fast-forward.md](alpine-tutorial-desktops-openbox-fast-forward.md) +* XFCE4 desktop (quick guide): [alpine-tutorial-desktop-xfce4-fast-forward.md](alpine-tutorial-desktop-xfce4-fast-forward.md) +* WAYLAND desktop: [alpine-tutorial-desktop-wayland-try.md](alpine-tutorial-desktop-wayland-try.md) +* Openbox by compile way: [alpine-tutorial-desktops-openbox-fast-forward.md](alpine-tutorial-desktops-openbox-fast-forward.md) ## SERVERS * [servers-howto-setup-PXE-service-for-others-linuxes-ES.md](servers-howto-setup-PXE-service-for-others-linuxes-ES.md) * [alpine-howto-gitea-package.md](alpine-howto-gitea-package.md) -## DESKTOP - -TODO - -NOTE: in this directory (we will called category spaces) each member or contributor will or can put their own tutorial or guides - ## Convention for naming the files: 1. each one must started with the word "alpine" unless are just a extra document like the androit external apps diff --git a/tutorials/community-way/alpine-tutorial-desktop-wayland-try.md b/tutorials/community-way/alpine-tutorial-desktop-wayland-try.md new file mode 100644 index 0000000..53eef45 --- /dev/null +++ b/tutorials/community-way/alpine-tutorial-desktop-wayland-try.md @@ -0,0 +1,401 @@ +# Alpine WAYLAND desktop setup: FF version +=========================================================== + +Alpine must be previously installed. This will install a new fashioned desktop, for more traditional check [../../newbie/alpine-newbie-xfce-desktop.md](../../newbie/alpine-newbie-xfce-desktop.md) + +* [How to use this guide](#how-to-use-this-guide) +* [Preparation](#preparation-alpine) + * [setup OS configuration](#setup-os-configuration) + * [setup system users](#setup-system-users) + * [setup hardware support](#setup-hardware-support) + * [setup audio and video](#setup-audio-and-video) +* [Instalacion WAYLAND Alpine](#instalacion-wayland-apine) + * [wayland sway console login](#wayland-sway-console-login) + * [wayland gui login manager](#wayland-gui-login-manager) + * [multimedia and device enhanced](#multimedia-and-device-enhanced) +* [Licensing clarifications](#licensing-clarifications) +* [See also](#see-also) + +## preparation Alpine + +You must have already installed alpine, and wayland only works well in alpine 3.14 and up + +**YOU MUST HAVE DIRECT WIRED INTERNET, if not ask for an ISO from VenenuX:** [https://t.me/alpine_linux/762](https://t.me/s/alpine_linux/762) + +#### setup OS configuration + +Feels lost here? check [How to use this guide](#how-to-use-this-guide) section of this document + + +``` +sed -i -r 's|#PermitRootLogin.*|PermitRootLogin no|g' /etc/ssh/sshd_config + +rc-service sshd restart;rc-update add sshd default + +hostname venenux-desktop +echo 'hostname="venenux-desktop"' > /etc/conf.d/hostname +echo "venenux-desktop" > /etc/hostname + +cat > /etc/hosts << EOF +127.0.0.1 venenux-desktop localhost.localdomain localhost +::1 localhost localhost.localdomain +EOF + +cat > /etc/network/interfaces << EOF +auto lo +iface lo inet loopback + +auto eth0 +iface eth0 inet dhcp + +iface eth0 inet6 dhcp + pre-up echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_ra +EOF + +rc-service networking restart;rc-update add networking boot + +cat > /root/.cshrc << EOF +unsetenv DISPLAY || true +HISTCONTROL=ignoreboth +EOF + +cp /root/.cshrc /root/.bashrc + + echo "root:toor" | chpasswd + +apk add tcsh + +add-shell '/bin/csh' + +adduser -D -g "" -u 998 -h /opt/daru -s /bin/csh daru + + echo "daru:daru" | chpasswd + +rm -f /opt/daru/* +mkdir /opt/daru +cat > /opt/daru/.cshrc << EOF +unsetenv DISPLAY +export PAGER=less +set autologout = 6 +set prompt = "$ " +set history = 0 +set ignoreeof +EOF +cp /opt/daru/.cshrc /opt/daru/.bashrc +chown -R daru:daru /opt/daru + +cat > /etc/apk/repositories << EOF +http://dl-4.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main +http://dl-4.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community +EOF + +apk update + +apk add man-db man-pages nano binutils coreutils readline \ + sed attr dialog lsof less groff wget curl terminus-font \ + zip p7zip xz tar cabextract cpio binutils lha acpi musl-locales musl-locales-lang \ + e2fsprogs e2fsprogs-doc btrfs-progs btrfs-progs-doc exfat-utils \ + f2fs-tools f2fs-tools-doc dosfstools dosfstools-doc xfsprogs xfsprogs-doc jfsutils jfsutils-doc \ + testdisk testdisk-doc partimage partimage-doc parted parted-doc util-linux zram-init + +sed -i "s#.*consolefont.*=.*#consolefont="ter-132n.psf.gz"#g" /etc/conf.d/consolefont +setfont /usr/share/consolefonts/ter-132n.psf.gz + +rc-update add consolefont boot +``` + +For more extended info check [../../newbie/alpine-newbie-xfce-desktop.md](../../newbie/alpine-newbie-xfce-desktop.md#setup-os-configuration) + +#### setup system users + +``` +apk add shadow shadow-uidmap doas musl-locales musl-locales-lang + +cat > /tmp/tmp.tmp << EOF +set history = 10000 +set prompt = "$ " +EOF + +mkdir /etc/skel +cat /tmp/tmp.tmp > /etc/skel/.cshrc +cat /tmp/tmp.tmp > /etc/skel/.bashrc + +cat > /etc/skel/.Xresources << EOF +Xft.antialias: 0 +Xft.rgba: rgb +Xft.autohint: 0 +Xft.hinting: 1 +Xft.hintstyle: hintslight +EOF + +cat > /etc/default/useradd << EOF +# useradd defaults file +HOME=/home +INACTIVE=-1 +EXPIRE= +SHELL=/bin/bash +SKEL=/etc/skel +CREATE_MAIL_SPOOL=yes +EOF + +cat > /etc/login.defs << EOF +USERGROUPS_ENAB yes +SYSLOG_SU_ENAB yes +SYSLOG_SG_ENAB yes +SULOG_FILE /var/log/sulog +SU_NAME su +EOF + +useradd -m -U -c "" -G wheel,input,disk,floppy,cdrom,dialout,audio,video,lp,netdev,games,users,ping general + +for u in $(ls /home); do for g in disk lp floppy audio cdrom dialout video lp netdev games users ping; do addgroup $u $g; done;done +``` + +**WARNING** your user name must be `general`, you can put a "human name" as you wish, later. + +For more details check [../../newbie/alpine-newbie-configuration.md](../../newbie/alpine-newbie-configuration.md#setup-system-users) + +#### setup hardware support + +``` +apk add acpi eudev eudev-doc eudev-rule-generator eudev-openrc pciutils util-linux zram-init \ + fuse fuse-exfat-utils fuse-exfat avfs pcre2 cpufreqd bluez bluez-openrc \ + wpa_supplicant dhcpcd chrony macchanger wireless-tools iputils linux-firmware \ + networkmanager networkmanager-lang networkmanager-openvpn networkmanager-openvpn-lang + +rc-update add udev +rc-update add acpid +rc-update add cpufreqd +rc-update add fuse +rc-update add bluetooth +rc-update add chronyd +rc-update add wpa_supplicant +rc-update add networkmanager + +rc-service networking restart + +rc-service wpa_supplicant restart + +rc-service bluetooth restart + +rc-service udev restart + +rc-service fuse restart + +rc-service cpufreqd restart + +``` + +For more details check [../../newbie/alpine-newbie-configuration.md](../../newbie/alpine-newbie-configuration.md#setup-software-graphical-fonts-and-languajes) + +#### setup audio and video for wayland + +**HINT** on alpine 3.14 gtk3 will force xorg dependencies.. for 3.16 will use gtk4 and SDL2 + +``` +apk add xf86-input-evdev cairo pango pixman \ + mesa xinit mesa-dri-gallium xf86-video-modesetting xf86-input-libinput libxinerama xrandr kbd setxkbmap + +apk add bluez bluez-openrc polkit polkit-openrc polkit-elogind udisks2 udisks2-lang \ + dbus dbus-x11 elogind elogind-openrc \ + gvfs gvfs-fuse gvfs-archive gvfs-dav gvfs-nfs gvfs-lang \ + networkmanager-elogind + +dbus-uuidgen > /var/lib/dbus/machine-id + +rc-update add dbus +rc-update add elogind +rc-update add polkit + +apk add font-noto-all ttf-dejavu ttf-linux-libertine ttf-liberation \ + font-bitstream-type1 font-bitstream-100dpi font-bitstream-75dpi \ + font-adobe-utopia-type1 font-adobe-utopia-75dpi font-adobe-utopia-100dpi \ + font-isas-misc + +apk add alsa-utils alsa-plugins alsa-tools alsaconf \ + pipewire pipewire-pulse pipewire-alsa pipewire-spa-bluez + +cat > /etc/security/limits.d/audio-limits.conf << EOF +@audio - memlock 256 +@audio - nice -11 +@audio - rtprio 88 +EOF + +rc-service dbus restart + +rc-service elogind restart + +rc-service polkit restart + +rc-update del lightdm +``` + +**WARNING** your user name must be `general`, you can put a "human name" as you wish, later. +**ADVERTISE** pure wayland will work only in modern gpu, otherwise will use xwayland if you need some modules like xf86-video packages as `xf86-video-intel`, `xf86-video-amdgpu`, `xf86-video-noveau`, `xf86-video-ati` or `xf86-video-nv` + +## Instalacion WAYLAND Alpine + +``` +apk add wayland wlroots foot sway sway-doc bemenu swaylock swaylockd swaybg swayidle \ + weston weston-backend-wayland weston-backend-x11 weston-backend-drm weston-backend-wayland weston-backend-headless \ + weston-doc weston-shell-desktop weston-desktop-x11 weston-clients weston-terminal \ + weston-xwayland weston-shell-desktop weston-shell-fullscreen weston-cms-static +``` + +At this point you already has a waylan environment and can choose beetween weston and sway, +just login into and start your desktop, weston is just the first implementation, can be run +inside and X11 or another wayland session, sway is a window manager and compositor. + +#### configurations + +``` +for u in $(ls /home); do mkdir -p /home/$u/.config/sway/ && cp /etc/sway/config /home/$u/.config/sway/config ;done + +for u in $(ls /home); touch /home/$u/.config/weston.ini;done +``` + +The wayland weston and sway configurations depens on your preferences, +the above commands just provide defaults to made those compositors able to run for users. + +#### wayland sway console login + +If want autologin with TTY use this script to your system users: + +``` +mkdir /home/general/ + +cat > /etc/skel/.profile << EOF + if test -z "\${XDG_RUNTIME_DIR}"; then + export XDG_RUNTIME_DIR=/tmp/\$(id -u)-runtime-dir + if ! test -d "\${XDG_RUNTIME_DIR}"; then + mkdir "\${XDG_RUNTIME_DIR}" + chmod 0700 "\${XDG_RUNTIME_DIR}" + fi + fi +EOF +for u in $(ls /home); do cp /etc/skel/.profile /home/$u/ ;done + +cat > /home/general/.xinitrc << EOF + +if [ -z "\${DISPLAY}" ] && [ "\${XDG_VTNR}" -eq 1 ]; then + if [ "\$(fgconsole 2>/dev/null || echo -1)" -eq 1 ]; then + dbus-run-session -- sway + export SWAYSOCK=/run/user/$(id -u)/sway-ipc.$(id -u).$(pgrep -x sway).sock + fi +fi +EOF + +``` + +#### wayland gui login manager + + +Wayland its on early stages.. so there is no login manager compatible, +this is cos wayland per ser its another way to run GUI, and +all the sesion and login GUI managers runs over Xorg. + +``` +apk add lightdm elogind elogind-openrc elogind-lang polkit polkit-openrc polkit-elogind \ + lightdm-lang lightdm-gtk-greeter + +rc-update add lightdm + +rc-service lightdm restart +``` + +**WARNING**: for alpine 3.14, 3.15 just works the login sesion for sway, maybe 3.16 and up will +result in a blank screen, check https://github.com/swaywm/sway/pull/3634#issuecomment-462779163 + +#### desktop integration and device media + + +``` +apk add xdg-desktop-portal xdg-desktop-portal-wlr xdg-desktop-portal-lang xdg-desktop-portal-gtk xdg-desktop-portal-gtk-lang +``` + +#### multimedia and device enhanced + +``` +apk add gst-plugins-base gst-plugins-bad gst-plugins-ugly gst-plugins-good \ + libcanberra-gstreamer wxgtk-media \ + mediainfo ffmpeg ffmpeg-doc ffmpeg-libs lame lame-doc rtkit rtkit-doc \ + mpv mpv-doc deadbeef deadbeef-lang libxinerama xrandr + +for u in $(ls /home); do for g in plugdev audio cdrom dialout video netdev; do addgroup $u $g; done;done + +cat > /etc/network/interfaces << EOF +auto lo +iface lo inet loopback +EOF + +service networking restart + +service wpa_supplicant restart + +service networkmanager restart + +``` + +## How to use this guide + +This guide **structure all the commands in blocks, each block its separated by a line spaced**, +so you must **type each line as is.. and hit enter**, so you noted that then you +typed each separated clocks of commands, copy/type only blocks separated by an empty line, +all new(next) lines are made by just enter. the terminal will detect if must execute or not. + +**If you have another computer or gui**, try to use SSH client like putty or just in terminal (MAC or Linux) do: + +1. at the Alpine installation: `sed -i 's|.*PermitRootLogin.*|PermitRootLogin yes|g' /etc/ssh/sshd_config;service sshd restart` +2. at the other OS just connect: `ssh -l root ` change "``" with the address of your device. +3. copy each separated by empty line, block of command, copy only blocks separate by empty line +4. and paste each separated by empty line block in the remnote (ssh), do not paste all the blocks at same time! + +**CAUTION** Some Linux or/and Mac terminals have security cut/paste locks, so +if you paste, the first line will be preceded by garbage, check always the first char of your paste. + +**WARNING** after finish, rerun: `sed -i -r 's|.*PermitRootLogin.*|PermitRootLogin no|g' /etc/ssh/sshd_config` +and restart ssh `service sshd restart` becouse security implications. + +Done? return to [Preparation](#preparation-alpine) section of this document. + +#### hardware used + +| item | minimal feature | Extra recommendations | +| ---------------- | ----------------- | ---------------------------------- | +| RAM MB | 1Gb DDR1 | 6Gb DDR3, web browsers consumes so much | +| CPU | intel Dual Core | Not necesary | +| RAM CPU | 2Mb (L2) 4kb/L1 | | +| GPU | intel G41 | Radeon X1200 For web browsers and modern apps will be need | +| RAM GPU | 256Mb | 1Gb For web browsers and modern apps will be need | +| Storage | 120Gb HDD WD | 256Gb SSD are mandatory for speed | +| ARCH | 32bits (i386/arm6)| 64bits (amd64) mandatory for most modern apps unfortunatelly | +| Audio | AC 97 | HD audio and HDMI audio are a mess | + +#### usernames + +| item | name | password | +| --------- | ------------------- | -------- | +| remote | daru | daru | +| admin | root | toor | +| user | general | general | + +Done? return to [Preparation](#preparation-alpine) section of this document. + +## Licensing clarifications + +**CC BY-NC-SA**: the project allows reusers to distribute, remix, adapt, and build upon the material +in any medium or format for noncommercial purposes only, and only so long as attribution is given +to the creators involved. If you remix, adapt, or build upon the material, you must license the modified +material under identical terms, includes the following elements: + +* **BY** – Credit must be given to the creator of each content respectivelly, starting at the first contributor. +* **NC** – Only noncommercial uses of the work are permitted, with exceptions if you fill an issue here! +* **SA** – Adaptations must be shared under the same terms, you must obey this terms and do not change it. + +https://codeberg.org/alpine/alpine-wiki/src/branch/main#license + +## See also + +* [README.md](README.md) +* [alpine-newbie-install.md](../../newbie/alpine-newbie-install.md) +* [alpine-tutorial-desktop-xfce4-fast-forward.md](alpine-tutorial-desktop-xfce4-fast-forward.md) diff --git a/tutorials/community-way/alpine-tutorial-desktop-xfce4-fast-forward.md b/tutorials/community-way/alpine-tutorial-desktop-xfce4-fast-forward.md index 68fe72f..1c34583 100644 --- a/tutorials/community-way/alpine-tutorial-desktop-xfce4-fast-forward.md +++ b/tutorials/community-way/alpine-tutorial-desktop-xfce4-fast-forward.md @@ -1,7 +1,8 @@ # Alpine XFCE4 desktop setup: FF version =========================================================== -Alpine must be previously installed. For more extended verson of this document check [../../newbie/alpine-newbie-xfce-desktop.md](../../newbie/alpine-newbie-xfce-desktop.md) +Alpine must be previously installed. For a WAYLAND desktop check [alpine-tutorial-desktop-wayland-try.md](alpine-tutorial-desktop-wayland-try.md). +For more extended verson of this document check [../../newbie/alpine-newbie-xfce-desktop.md](../../newbie/alpine-newbie-xfce-desktop.md) * [How to use this guide](#how-to-use-this-guide) * [Preparation](#preparation-xfce4-aline) @@ -362,4 +363,5 @@ https://codeberg.org/alpine/alpine-wiki/src/branch/main#license ## See also * [README.md](README.md) -* [alpine-newbie-install.md](alpine-newbie-install.md) +* [alpine-newbie-install.md](../../newbie/alpine-newbie-install.md) +* [alpine-tutorial-desktop-wayland-try.md](alpine-tutorial-desktop-wayland-try.md)