├── .gitignore ├── Common ├── CDE │ ├── cde.desktop │ └── xinitrc ├── CINNAMON │ └── xinitrc ├── FLUXBOX │ └── xinitrc ├── GNOME │ └── xinitrc ├── ICEWM │ └── xinitrc ├── KDE │ └── xinitrc ├── KODI │ └── xinitrc ├── LUMINA │ ├── gtkrc │ └── xinitrc ├── LXDE │ └── xinitrc ├── LXQT │ └── xinitrc ├── MATE │ └── xinitrc ├── OTHER │ └── xinitrc ├── SDDM │ └── sddm.conf ├── WMAKER │ └── xinitrc ├── XDM │ └── GiveConsole ├── XFCE4 │ └── xinitrc ├── Xdefaults-xterm └── battery-shutdown.cron ├── Doc ├── cups ├── desktop-installer.dbk └── qmediamanager.png ├── FreeBSD ├── XDM │ ├── Xsetup_0 │ ├── beastie.xpm │ ├── bsd_background.jpg │ └── xdmshutdown ├── desktop-installer └── desktop-installer.man ├── LICENSE ├── NetBSD ├── XDM │ ├── Xsetup_0 │ ├── netbsd-background.jpg │ └── xdmshutdown ├── desktop-installer ├── desktop-installer.man ├── getting-started.md ├── smartos-install.sh └── todo ├── OpenBSD ├── XenoDM │ ├── GiveConsole │ ├── Xsetup_0 │ ├── openbsd-background.jpg │ └── xenodmshutdown ├── desktop-installer ├── desktop-installer.man └── getting-started.md ├── Plugins └── Asus │ └── desktop-installer-eeepc-1015pe ├── README.md ├── Scripts └── battery-shutdown.sh ├── WIP ├── 40-virtualbox.conf └── desktop-menu ├── notes ├── rock64.md └── todo /.gitignore: -------------------------------------------------------------------------------- 1 | README.html 2 | getting-started.html 3 | -------------------------------------------------------------------------------- /Common/CDE/cde.desktop: -------------------------------------------------------------------------------- 1 | [Desktop Entry] 2 | Exec=/usr/local/dt/bin/Xsession 3 | Encoding=ISO-8859-1 4 | Icon=CDE 5 | Type=Application 6 | Name=CDE 7 | Name[vi]=CDE 8 | Comment=Common Desktop Environment 9 | -------------------------------------------------------------------------------- /Common/CDE/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | ln -sf /usr/local/dt/bin/Xsession $HOME/.Xsession 35 | env LANG=C /usr/local/dt/bin/dtsession 36 | -------------------------------------------------------------------------------- /Common/CINNAMON/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | cinnamon-session 35 | -------------------------------------------------------------------------------- /Common/FLUXBOX/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | # FIXME: Should this be necessary, or is it a WM responsibility? 28 | if sysctl dev.acpi.0.%desc | fgrep -q VBOX; then 29 | # VBoxClient is part of guest additions, which may not be installed 30 | VBoxClient --display || true 31 | fi 32 | 33 | aa_dir=/usr/local/etc/auto-admin 34 | for local_xsession in $aa_dir/xsession.*; do 35 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 36 | . $local_xsession 37 | fi 38 | done 39 | 40 | exec startfluxbox 41 | -------------------------------------------------------------------------------- /Common/GNOME/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | # Modern Gnome3 35 | export XDG_SESSION_TYPE=x11 36 | export GDK_BACKEND=x11 37 | exec gnome-session 38 | -------------------------------------------------------------------------------- /Common/ICEWM/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | # FIXME: Should this be necessary, or is it a WM responsibility? 28 | if sysctl dev.acpi.0.%desc | fgrep -q VBOX; then 29 | # VBoxClient is part of guest additions, which may not be installed 30 | VBoxClient --display || true 31 | fi 32 | 33 | aa_dir=/usr/local/etc/auto-admin 34 | for local_xsession in $aa_dir/xsession.*; do 35 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 36 | . $local_xsession 37 | fi 38 | done 39 | 40 | exec icewm-session 41 | -------------------------------------------------------------------------------- /Common/KDE/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | startplasma-x11 35 | -------------------------------------------------------------------------------- /Common/KODI/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | kodi-standalone 35 | -------------------------------------------------------------------------------- /Common/LUMINA/gtkrc: -------------------------------------------------------------------------------- 1 | gtk-theme-name="QtCurve" 2 | gtk-icon-theme-name="oxygen" 3 | gtk-font-name="Sans Serif 10.000000" 4 | gtk-cursor-theme-name="Adwaita" 5 | gtk-cursor-theme-size=0 6 | gtk-toolbar-style=GTK_TOOLBAR_ICONS 7 | gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR 8 | gtk-button-images=1 9 | gtk-menu-images=1 10 | gtk-enable-event-sounds=1 11 | gtk-enable-input-feedback-sounds=1 12 | gtk-xft-antialias=1 13 | gtk-xft-hinting=1 14 | gtk-xft-hintstyle="hintfull" 15 | gtk-xft-rgba="none" 16 | -------------------------------------------------------------------------------- /Common/LUMINA/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | /usr/local/bin/start-lumina-desktop 35 | -------------------------------------------------------------------------------- /Common/LXDE/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | startlxde 35 | -------------------------------------------------------------------------------- /Common/LXQT/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | startlxqt 35 | -------------------------------------------------------------------------------- /Common/MATE/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | mate-session 35 | -------------------------------------------------------------------------------- /Common/OTHER/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | start-session 35 | -------------------------------------------------------------------------------- /Common/SDDM/sddm.conf: -------------------------------------------------------------------------------- 1 | [Theme] 2 | 3 | Current=sddm-freebsd-black-theme 4 | -------------------------------------------------------------------------------- /Common/WMAKER/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | # FIXME: Should this be necessary, or is it a WM responsibility? 28 | if sysctl dev.acpi.0.%desc | fgrep -q VBOX; then 29 | # VBoxClient is part of guest additions, which may not be installed 30 | VBoxClient --display || true 31 | fi 32 | 33 | aa_dir=/usr/local/etc/auto-admin 34 | for local_xsession in $aa_dir/xsession.*; do 35 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 36 | . $local_xsession 37 | fi 38 | done 39 | 40 | exec wmaker 41 | -------------------------------------------------------------------------------- /Common/XDM/GiveConsole: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Assign ownership of the console to the invoking user 3 | # 4 | # By convention, both xconsole and xterm -C check that the 5 | # console is owned by the invoking user and is readable before attaching 6 | # the console output. This way a random user can invoke xterm -C without 7 | # causing serious grief. 8 | # 9 | chown $USER /dev/console 10 | pid=$(cat /var/run/xdmshutdown.pid 2> /dev/null) 11 | test -n "$pid" && kill -9 $pid 2> /dev/null 12 | -------------------------------------------------------------------------------- /Common/XFCE4/xinitrc: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $ 3 | 4 | userresources=$HOME/.Xresources 5 | usermodmap=$HOME/.Xmodmap 6 | sysresources=/usr/local/lib/X11/xinit/.Xresources 7 | sysmodmap=/usr/local/lib/X11/xinit/.Xmodmap 8 | 9 | # merge in defaults and keymaps 10 | 11 | if [ -f $sysresources ]; then 12 | xrdb -merge $sysresources 13 | fi 14 | 15 | if [ -f $sysmodmap ]; then 16 | xmodmap $sysmodmap 17 | fi 18 | 19 | if [ -f "$userresources" ]; then 20 | xrdb -merge "$userresources" 21 | fi 22 | 23 | if [ -f "$usermodmap" ]; then 24 | xmodmap "$usermodmap" 25 | fi 26 | 27 | aa_dir=/usr/local/etc/auto-admin 28 | for local_xsession in $aa_dir/xsession.*; do 29 | if [ -e ] && /usr/local/sbin/auto-file-secure $local_xsession; then 30 | . $local_xsession 31 | fi 32 | done 33 | 34 | startxfce4 35 | -------------------------------------------------------------------------------- /Common/Xdefaults-xterm: -------------------------------------------------------------------------------- 1 | 2 | # Some nicer defaults for xterm 3 | xterm*geometry: 80x30 4 | xterm*faceName: Monospace 5 | xterm*faceSize: 12 6 | xterm*foreground: white 7 | xterm*background: black 8 | xterm*saveLines: 1000 9 | xterm*scrollBar: true 10 | -------------------------------------------------------------------------------- /Common/battery-shutdown.cron: -------------------------------------------------------------------------------- 1 | SHELL=/bin/sh 2 | PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin 3 | 4 | * * * * * root /usr/local/sbin/battery-shutdown.sh > /var/log/battery-shutdown 2>&1 5 | -------------------------------------------------------------------------------- /Doc/cups: -------------------------------------------------------------------------------- 1 | To enable printing with local printer you need to give group 'cups' 2 | r/w access to printer device: 3 | 4 | 1) Add following to /etc/devfs.rules (create if it doesn't exist): 5 | 6 | [system=10] 7 | add path 'unlpt*' mode 0660 group cups 8 | add path 'ulpt*' mode 0660 group cups 9 | add path 'lpt*' mode 0660 group cups 10 | 11 | 2) And following to /etc/rc.conf: 12 | 13 | devfs_system_ruleset="system" 14 | 15 | 3) Restart devfs: /etc/rc.d/devfs restart 16 | 17 | If your system supports 'devd' you can copy 18 | $PREFIX/share/examples/cups/lpt-cupsd.conf to $PREFIX/etc/devd/ 19 | 20 | To enable printing under Gimp and MS-Windows clients do the following: 21 | 22 | 1) Uncomment application/octet-stream line in mime.types 23 | 2) Uncomment application/octet-stream line in mime.convs 24 | 3) Restart cupsd 25 | ====================================================================== 26 | 27 | -------------------------------------------------------------------------------- /Doc/desktop-installer.dbk: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Desktop-installer Guide 5 | 6 | 7 | User your cleverness for creativity 8 | 9 | How would you like to spend minimal time setting up 10 | your workstation or laptop, and most of it doing creative 11 | work? This is the design goal of desktop-installer, and 12 | FreeBSD helps make it possible. 13 | 14 | The core purpose of desktop-installer is to help you 15 | quickly and easily create the most reliable and secure desktop 16 | system available, so you can spend your time on productive 17 | work rather than tedious systems management. 18 | 19 | FreeBSD provides the vast majority of the features 20 | necessary to make a great desktop system for WEB browsing, 21 | editing documents, playing music and videos, developing 22 | software, and much more. It also offers solid support for most 23 | popular PC hardware. However, fully configuring a stock 24 | FreeBSD desktop system by hand is a bit like assembling a 25 | 1,000-piece jigsaw puzzle. Unless your goal is to learn how to 26 | integrate the components of a Unix desktop environment, manual 27 | configuration would not be a good use of your valuable time. 28 | 29 | 30 | There are some important issues that new FreeBSD users 31 | are unlikely to know about, such as ensuring that your ports 32 | tree and packages are in sync, how to correctly configure 33 | devd, sound devices and graphics drivers, to name a few. 34 | 35 | 36 | Desktop-installer is a post-install script that 37 | embodies the extensive knowledge needed to configure a clean, 38 | reliable FreeBSD desktop system. It automates the process of 39 | configuring a FreeBSD workstation or laptop computer, allowing 40 | typical users to set up a fully functional desktop environment 41 | in less than an hour. 42 | 43 | More than a dozen popular desktop environments and 44 | window managers are explicitly supported and any other can be 45 | configured with relative ease using the "Custom" option. 46 | 47 | 48 | Desktop-installer installs and configures 49 | desktop-independent tools and features, such as QMediaManager 50 | (shown in ), a GUI application 51 | that is automatically launched when removable media are 52 | inserted. 53 | 54 |
55 | Qmediamanager 56 | 58 | 59 |
60 | 61 | The VirtualBox guest environment is automatically 62 | detected and configured with the VirtualBox guest additions, 63 | so you can easily try out desktop-installer even if you don't 64 | have a spare PC. Parallels and VMWare Fusion are also 65 | automatically detected and configured with a basic graphics 66 | setup. Hyper V can also run FreeBSD, but in our experience it 67 | is slow and unreliable. Windows users are advised to install 68 | VirtualBox instead. Note that Hyper V should be disabled via 69 | Control Panel if you are running a different virtualization 70 | system. 71 |
72 | 73 | 74 | Design principles 75 | 76 | 77 | Desktop-installer is strictly a configuration tool, i.e. a 78 | convenient user interface for integrating standard FreeBSD 79 | tools and ports. Unlike most desktop distributions built on 80 | FreeBSD and Linux, desktop-installer does not duplicate 81 | components of or add components to the FreeBSD base. Our goal 82 | is to work with the underlying operating system, not around 83 | it, integrating the many features already provided by FreeBSD 84 | to create a fast, stable, and secure desktop experience. 85 | 86 | 87 | 88 | Any general enhancements made to FreeBSD for the sake of 89 | desktop-installer will be desktop-independent and available 90 | via the ports collection for use with or without 91 | desktop-installer. 92 | 93 | 94 | 95 | One of the primary objectives of desktop-installer is 96 | long-term sustainability. Since man-hours are costly, efforts 97 | are focused on improving the functionality of the end-result, 98 | not the appearance of the tool. 99 | 100 | 101 | 102 | Desktop-installer does not try to compensate for FreeBSD's 103 | shortcomings. We prefer to leave them exposed so that there is 104 | motivation to fix them in the FreeBSD base or ports system. 105 | 106 | 107 | 108 | Desktop-installer will not impose any arbitrary limitations. 109 | While the GUI distributions tend to support only AMD64 systems 110 | running the latest FreeBSD release, desktop-installer allows 111 | you to use any supported version of FreeBSD on any supported 112 | CPU architecture. ARM, PowerPC, RISC-V and Sparc are treated 113 | no differently than x86. Desktop-installer is tested on an 114 | iMac G5 and a Rock 64, in addition to numerous x86 PCs and 115 | laptops. While we can't guarantee that all ports/packages will 116 | work on all platforms, desktop-installer won't stand in your 117 | way. 118 | 119 | 120 | 121 | 122 | How it Works 123 | 124 | 125 | The desktop-installer script installs necessary 126 | ports/packages, configures the graphical desktop of your 127 | choice and performs basic setup for devices and services such 128 | as devd, WiFi, sound, Bluetooth, printing and remote login. 129 | 130 | 131 | 132 | Using desktop-installer, a typical desktop system can be fully 133 | configured and ready to use in less than an hour on reasonably 134 | modern hardware with a reasonably fast Internet connection. 135 | 136 | 137 | 138 | Some user input is required, but desktop-installer should 139 | provide sufficient guidance. You should not have to search the 140 | web for complicated instructions on configuring software and 141 | services. Anything that does not work out-of-the-box is 142 | considered a bug and should be reported. The end-user is only 143 | expected to run desktop-installer and answer the questions. 144 | 145 | 146 |
147 | -------------------------------------------------------------------------------- /Doc/qmediamanager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/outpaddling/desktop-installer/05d1d01fc32b361d975168394ff46444a60decc7/Doc/qmediamanager.png -------------------------------------------------------------------------------- /FreeBSD/XDM/Xsetup_0: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: Xsetup_0,v 1.3 2000/08/17 19:54:17 cpqbld Exp $ 3 | 4 | # put me in /usr/local/etc/X11/xdm 5 | 6 | # Use FreeBSD logo as background instead default steelblue 7 | # /usr/local/bin/xsetroot -solid steelblue 8 | /usr/local/bin/feh --bg-fill /usr/local/share/pixmaps/bsd_background.jpg 9 | 10 | # Add shutdown, reboot, restart X11 buttons 11 | # xwininfo sees multiple monitors as one big screen 12 | # Use xrandr to separate them. Assuming monitors are side-by-side, 13 | # so xwininfo is fine for height. 14 | # width=`xwininfo -root | awk '$1 == "Width:" { print $2 }'` 15 | 16 | # Uncomment these to debug 17 | # xwininfo -root > /root/xwininfo 18 | # xrandr --screen 0 > /root/xrandr 19 | 20 | height=`xwininfo -root | awk '$1 == "Height:" { print $2 }'` 21 | 22 | # First component of field containing ####x###+#+# 23 | width=`xrandr --screen 0 | grep -E '[0-9]+x[0-9]+\+[0-9]+\+[0-9]+' | awk -F x '{ print $1 }' | awk '{ print $NF }'` 24 | 25 | printf "width = $width height = $height\n" > /root/dims 26 | 27 | # Primary display could be on left or right. 3rd value in xrandr output 28 | # is the offset of the left edge of a monitor, e.g. 29 | # VGA-1 connected primary 1280x1024+1925+0 30 | left_edge=`xrandr --screen 0 | grep primary | awk '{ print $4 }' \ 31 | | awk -F [x\+] '{ print $3 }'` 32 | 33 | x=$(( $left_edge + ($width - 150) / 2 )) 34 | y=$(( ($height - 10) / 2 + 120 )) 35 | /usr/local/sbin/xdmshutdown -geometry +$x+$y & 36 | echo $! > /var/run/xdmshutdown.pid 37 | -------------------------------------------------------------------------------- /FreeBSD/XDM/beastie.xpm: -------------------------------------------------------------------------------- 1 | /* XPM */ 2 | static char * bsd2_xpm[] = { 3 | "151 161 129 2", 4 | " c None", 5 | ". c #6E6B75", 6 | "+ c #8B362C", 7 | "@ c #B9B7B8", 8 | "# c #C7C8C8", 9 | "$ c #2E2932", 10 | "% c #FBEDCB", 11 | "& c #E0C5B3", 12 | "* c #D0B39E", 13 | "= c #4A494D", 14 | "- c #FEFEFE", 15 | "; c #A7A4A7", 16 | "> c #AB4134", 17 | ", c #53472A", 18 | "' c #506C9A", 19 | ") c #72322B", 20 | "! c #F2F2F2", 21 | "~ c #0C0305", 22 | "{ c #27140E", 23 | "] c #4A3124", 24 | "^ c #474763", 25 | "/ c #E35733", 26 | "( c #CEAB1D", 27 | "_ c #C44B3A", 28 | ": c #A59169", 29 | "< c #F2C916", 30 | "[ c #B0901B", 31 | "} c #ECEBEB", 32 | "| c #F0DDC1", 33 | "1 c #DADADA", 34 | "2 c #E4E4E4", 35 | "3 c #8A534C", 36 | "4 c #FDF8DD", 37 | "5 c #D4D3D3", 38 | "6 c #50241B", 39 | "7 c #BB9593", 40 | "8 c #403B4A", 41 | "9 c #EC6845", 42 | "0 c #7E7469", 43 | "a c #39343A", 44 | "b c #C6A44E", 45 | "c c #99969A", 46 | "d c #D74D33", 47 | "e c #F7EBE4", 48 | "f c #FAF9F9", 49 | "g c #665F46", 50 | "h c #754D46", 51 | "i c #9C9BA3", 52 | "j c #DB5237", 53 | "k c #38271B", 54 | "l c #868389", 55 | "m c #7D787F", 56 | "n c #FCFAF2", 57 | "o c #EFF4F5", 58 | "p c #FAF3F0", 59 | "q c #241D25", 60 | "r c #D8C5C4", 61 | "s c #A49B9F", 62 | "t c #953F39", 63 | "u c #856360", 64 | "v c #F0D13F", 65 | "w c #C1A89B", 66 | "x c #948B91", 67 | "y c #8B8A93", 68 | "z c #CABFC0", 69 | "A c #ABAAAD", 70 | "B c #E05231", 71 | "C c #81680B", 72 | "D c #B0AAAB", 73 | "E c #42405B", 74 | "F c #636262", 75 | "G c #A64844", 76 | "H c #BCBCBD", 77 | "I c #FCFAF8", 78 | "J c #FEFDF9", 79 | "K c #381C13", 80 | "L c #E0D2D0", 81 | "M c #5E5D71", 82 | "N c #F0E4DA", 83 | "O c #BC4535", 84 | "P c #612B23", 85 | "Q c #D3D0CF", 86 | "R c #A09B83", 87 | "S c #967F28", 88 | "T c #E7EBED", 89 | "U c #B4B0B2", 90 | "V c #C1C2C3", 91 | "W c #9D8090", 92 | "X c #D0CECF", 93 | "Y c #D0D5D7", 94 | "Z c #F1EFEE", 95 | "` c #180F17", 96 | " . c #CCCACB", 97 | ".. c #EFE8E6", 98 | "+. c #E5D8D5", 99 | "@. c #D5DADC", 100 | "#. c #BDB2A6", 101 | "$. c #DDDCDD", 102 | "%. c #FEFAFB", 103 | "&. c #F4F8F8", 104 | "*. c #A06259", 105 | "=. c #F5F5F4", 106 | "-. c #B2B3B4", 107 | ";. c #54545A", 108 | ">. c #E7E6E5", 109 | ",. c #AA8379", 110 | "'. c #FAF7F7", 111 | "). c #E75E3B", 112 | "!. c #E2E1E2", 113 | "~. c #A1A0A4", 114 | "{. c #E0DFDF", 115 | "]. c #D6D5D6", 116 | "^. c #F0F1F0", 117 | "/. c #F8F7F7", 118 | "(. c #CCCFCF", 119 | "_. c #E7E6EC", 120 | ":. c #AEAEAF", 121 | "<. c #D25441", 122 | "[. c #E9E8E8", 123 | "}. c #BFBFBE", 124 | "|. c #799CCF", 125 | "1. c #FCFCFC", 126 | "2. c #FBFBFB", 127 | "3. c #929098", 128 | "4. c #EEEEED", 129 | "5. c #CC4A33", 130 | "6. c #D8D8D7", 131 | "7. c #FBFDFF", 132 | "8. c #FFFFFF", 133 | " ", 134 | " ", 135 | " ", 136 | " }.:. ", 137 | " {.m , k 0 ", 138 | " ; P P ] ] {. ", 139 | " # 3 ) + P { H !.; x U 2 ", 140 | " e s P ) t P K c A , P h ; >. ", 141 | " N h ) + > ) { m 1 m > > P u 6. ", 142 | " z h ) > > t k , } [.; + O t K g } ", 143 | " @ ) t > > G P { V 1 l + O P { W ", 144 | " r h > > O O ) K ;. @ *.5.) K { D ", 145 | " L 3 > > O O G ] { H } } } A x O > K K K . ", 146 | " +.3 + O O _ O t K { X 2 .; l 0 0 . . 0 3.-.$. !.c > 5.) { ` ] $. ", 147 | " ..u + O j 5.O > t K ~ c } 5 c g P P P P 6 K K { ` ` { , x D H >. [.c G d + K { ~ m ", 148 | " s + O d d _ O G ) 6 { k U U u 3 + > O O G G t t ) P K K { ` ` { , F s 1 } c G d t K { ~ k ]. ", 149 | " z ) t d / 5.O O G ) K K K k K P + > O O O > t + + + ) 6 K K K { { ` ~ { m s !. >.c t B G K { { ~ 3. ", 150 | " 0 ) O / B 5.O > + K P + + P { 6 > O O > ) 6 K 6 ) ) ) ) ) 6 6 K K { { { ~ K ; 1 @ c t B > P { { ~ K $. ", 151 | " h t j B j 5.O > P ) t G O G + + O O > P P P ) K K 6 P ) ) ) ) P K { { { { ~ { x $. [.1 s u 5.d t 6 { { ~ ~ ~. ", 152 | " r h O / / j 5.O ) t O O d d d 5.O 5.5.t + d B d O ) { 6 P ) ) ) ) P K { { { { ~ ` c 6.} !.1 D F P > j O + 6 { { { ~ F ", 153 | " z 3 5./ / j 5.t ) 5.d d O t > 5.d B B 5.B / B B B O P { 6 ) + ) + ) P { { { { { ~ { s D c x h ) O 5.d > + 6 { { { ~ , X ", 154 | " w 3 5./ / j O P 5.B 5.P P h P > B d O > + + > O B B G K K P + + + + ) 6 K { { K K K P t + t 5.B d d O t ) 6 { { { ~ ] V ", 155 | " #.u O / / d + O B > ) u w & u + j 5.+ + h 3 t + O B d + K P + + + + + ) ) 6 6 + > 5.d d B B B B d 5.> + P K { { { ~ ] V ", 156 | " z u > / / > ) / O 6 ,.4 % & h ) B > ) R & & 7 ) + O B O K ) + + + + + + + ) ) t O B B B B B B d 5.O t ) 6 K { { { ~ ] V ", 157 | " u 3 / d ) 5.O P ,.4 % % w P 5.O + * | | | & 7 ) t 5.d + ) + + + + + + + + + + O j B B B B d 5.O > + P K { { { { ~ , ", 158 | " ,.h 5.t + B P u 4 4 % | u + j + : % % % | & * m 6 + B 5.t + + + + + + + + + + > 5.d d d 5.O > t + P K { { { { { ~ l ", 159 | " +.h + P d + 3 4 4 % & ) O + *.% 4 % % | | & 7 ] + j B O t + + + + + + + + + t > > O > > > + + P K { { { { { ~ { !. ", 160 | " x 6 P 5.) & 4 4 % ,.) 5.t | 4 4 4 % % | & w 3 + j j _ > t + + + + + + + + + + t t t t + ) P K { { { { { { ~ l ", 161 | " Q K O + : 4 4 % | u + + 0 4 4 4 4 % % | & w m P O j 5.O > t + + + + + + + + + + + + ) P 6 K { { { { { { ~ k [. ", 162 | " L P 5.+ % 4 % % & h O t | 4 4 4 % % % | & * W + O d 5.O > t + + + + + + ) ) ) ) P P 6 K K { { { { { { ~ { s ", 163 | " # + + ,.4 4 % % w + + : % 4 4 4 % % % | & * W ) 5.d 5.O > t + + + ) ) ) P P P 6 6 K K K { { { { { { ~ ~ }. ", 164 | " x + ) r 7 c ] & N ,.+ ) | 4 4 % % % % % | & * W h O d 5._ > t + + ) ) P P 6 6 6 K K { { { { { { { { ~ { ; ", 165 | " g + 3 : s @ ~ 0 N h + + * 0 & | % % % % % | * W ) > j d 5.O > + + + ) P 6 K K K K { { { { { { { { ~ ~ ~. ", 166 | " ].P + : 0 {.] ~ , 7 ) + ~ x c ~ u % % % % % | * W ) > j d 5.O > + + + ) P K K { { { { { { { { { { ~ k ; ", 167 | " H ) 3 7 , s ~ ~ ] u ) 6 ~ .l ~ K * % % % % | * W ) > / d 5.O > + + + ) P K { { { { { { { { { { ~ { @ ", 168 | " ; + t 6 ~ ~ ~ ~ , h t K { >.g ~ ~ ,.% % % % & * W ) O / j 5.O > t + + ) 6 K { { { { { { { { { ~ ] Q ", 169 | " x > + { ~ ~ ~ ~ , 3 t ~ ~ ; k ~ ~ g % % % | & * W ) O B j 5.O > t + + ) 6 K { { { { { { { ~ { 0 {. ", 170 | " .) 5.t K ~ ~ ~ ~ K > ) ~ ~ ~ ~ ~ ~ , % % % | & * u + O B B 5.O > t + + ) 6 K { { { { { ~ ~ ] # ", 171 | " 1 t > / 5.6 ~ ~ ~ ~ + d P ~ ~ ~ ~ ~ ~ , % % % | & w h t 5.B B 5.O > t + + ) 6 K { { { { { ~ ~ ; ]. ", 172 | " 3 O B / / > P { { P O 5.P ~ ~ ~ ~ ~ ~ , % % % | & W 6 > / B B 5.O > t + ) P 6 K { { { { { ~ ~ x . ", 173 | " ,.> B / / j B > P ) > O 5.+ ~ ~ ~ ~ ~ ~ : % % % | * m ) O B B j 5.O > t + ) P 6 K { { { { ~ ~ ~ l 5 ", 174 | " 6.t j / / B j > + > > > + > O { ~ ~ ~ ~ K & % % | & 7 = > d B B d 5.O > t + ) P 6 K { { { { ~ ~ ~ m !. ", 175 | " u O / / / B O > d B B d 5.O 5.+ ~ ~ ~ ~ u | % % | w m P O d B B d 5.O > t + ) P 6 K { { { { ~ ~ ~ l [. ", 176 | " : : * e ..) 5./ / / B > B ).9 9 9 )./ O O P ~ ~ , | % | & w m 6 + d d B d 5.O > > + + ) P 6 { { { { { ~ ~ ` x ", 177 | " L [ ( S #. L ) 5./ / / d > j 9 9 9 9 9 ).d + + + { h 7 w R 3 P K K P + > O > > > t + + + ) 6 K { { { { ~ ~ ~ { x ", 178 | " & ( < C : +. r + 5./ / / B t 5.).9 9 9 9 / d + P ) > + P P + + > O O > > O O > t t + + + + P 6 K { { { { ~ ~ ~ K $. ", 179 | " : v < S , ; ..h O / / / B O ) 5.B / / / / _ ) P K + _ O 5.d B B B B / / / j 5.O t + + + ) P 6 K { { { { ~ ~ ~ m [. ", 180 | " & b < ( C , {. w > d B B B j O ) + > O O > 6 K P K + 5.d d B B B B / ).).).).j 5.t + + + ) 6 K { { { { ~ ~ ~ k :. ", 181 | " & v ( [ , H ..>.*.5.j d _ d j O ) P P P P 6 6 P ) O 5.d B B B B / ).9 ).9 )./ d > + + + P 6 K { { { { ~ ~ ~ 0 >. ", 182 | " +.[ * [ b b [ , }. 7 > <.j > ) ) 5.d > + P ) P + > _ 5.d B B B B B B / )./ / / B d O + + ) P 6 K { { { ~ ~ ~ ~ c ", 183 | " e ( ( S & & N N +.b C C !.{.0 > j _ t K ) d B d O O O d d d d B B B B B B B d d 5.O O 5.5.> + + ) 6 K { { { ~ ~ ~ ~ . } ", 184 | " : v < ( C R & [ , ; ..L h + O _ G 6 + j d d d B d B d d B B B B B d 5.O > + + + t > + + ) P 6 K { { { ~ ~ ~ ] :. ", 185 | " e b v < [ C w e * S ] g >. +.u ) + G t P t d d d d d d d d B B B d 5.O > t ) K { K P ) ) ) P 6 K { { { ` ~ ~ { c } ", 186 | " {.v v b < ( S : ..>.#.C , k >. @ u 6 + t 6 t _ d d d 5.5.d d d 5.5.O > t P { { P + + + ) 6 6 K { { { { ~ ~ { ; [. ", 187 | " ..& b b b < < [ : #.S C ] k } e @ 0 h P P t O 5.5.5.5.O O O O > + ) K K P t G G t t + P K { { { { { ~ { m >. ", 188 | " Q e N S ( < ( S C , ] : $.l 6 6 ) t > O O O G t + P K { P > O G G G G G t ) K { { { { ~ K ; 2 ", 189 | " b b b w & .. N b ( < ( C ] , +. H ) 6 ) P P ) ) P 6 K 6 P t O O O G G t t + + P K { { { ~ , s >. ", 190 | " & b v v [ S C , & & b v < [ , , #.e r 7 <.<.*.7 .. Q u ) + + P 6 6 P + O 5._ O G G G t ) ) ) ) 6 { { { ` { ; ", 191 | " r b v < < C w N w b v v < ( C , , D 7 <.).)./ B t u .. # 0 ) t O O O _ O G G t + ) P P ) ) ) P 6 { { { ~ , . ", 192 | " >.* v v ( C * & * b b ( v v v [ [ [ C , S > 9 9 9 ).B G K ; X 3 P ) + + + ) P 6 K K ) + + + + P 6 K { { ~ l ", 193 | " * b v < < < < < < < < ( ( * * [ [ C C > ).).)./ _ ) 6 m Q ) 6 K { K K K P + t > > > t t + P 6 { { ~ c ", 194 | " & b v v < < < < ( ( b N e e * [ [ S + / / / d t P k 0 $.h > > > t t > O 5.d d 5._ O O > + ) K { ` F ]. ", 195 | " e * b ( ( ( ( * | e e * C ( t > j j O ] k { 3. #.) 5.5.d d d d B B d d d d d d O > + 6 { ` k ~. ", 196 | " e | | | e ..D + O + t G ) k K , @ 1 z 3 t d B B B B B B d d d d d d d 5.> + P { { ` x ", 197 | " r G / ).).5.t ) 6 K ] k k ] h m s h t d B B B B B B B d d d d d d d 5.> + P { { ` k ; ", 198 | " 7 j ).9 9 )./ G ) K ] ] ] K { K ] ) _ j B B B B B B B B d d d d d d 5.> + P K { { ~ 0 ", 199 | " ,./ ).9 9 ).j G ] k P P ] k k K ] ) t t t > O d B B B B B d d d d 5.G > + P K { { ~ ;. ", 200 | " ,.j ).9 9 ).d t ] 6 P P ] k ] K P t O _ _ O > t + O d B B d d d d G t t + P K { { ~ , } ", 201 | " 7 _ j j j j _ t k 6 P P ] k k { t j ).).).)./ / O + + O _ d d 5.G t ) t t P { { { ` { Q ", 202 | " N *.> _ O G ) K K ) ) ] k k K K + / ).9 9 9 ).)./ d + K + t t t ) ) ) t t P { { { ~ ~ U ", 203 | " +.,.) ) P 6 ) t t ) ] k { K k { _ 9 9 9 9 9 9 9 / d t P P ] P P K + G t P { { { { ~ s ", 204 | " e 7 _ d d _ O t ) k K k ] k K d ).).9 9 9 9 9 9 j d O G + ) ) ) t G ) 6 { { { { ~ m ", 205 | " e 7 G B j _ t K { ] ] ] { O / / / / ).).9 9 ).B d _ G G t t t t + P K { { { { ~ g ", 206 | " w *.3 h 6 k ] ] k { ) / B B / / / B / / B 5._ O G t + ) t ) ] k { { { { { ~ , ", 207 | " N L +.#.] K K K ) 5.B B B / / / B j j _ G G t t + ) P ] 6 K K { { { { { ~ = ", 208 | " +.0 6 G _ 5.d j B B B j d 5._ O t t t + ) P ] k k K { { { { { { ~ g ", 209 | " z P G G O _ _ d j 5.5._ O G t t + ) ) P ] ] k K { { { { { { { ~ , ", 210 | " 0 ) t t G G O O O G G t t t + ) ) P P ] k k K { { { { { { { ~ x ", 211 | " L P P ) t t t t t t t t t + ) ) P P ] k K K K { { { { { { ~ ] >. ", 212 | " e h { P ) ) ) + t t t t ) ) ) ) P ] ] k { { { { { { { { { ~ 0 ", 213 | " N 3 ) P ) P ) ) ) ) ) ) ) ) ) ) P ] k K K { { { { { { { { ~ x ", 214 | " +.<.5.) 6 P ) ) ) ) ) ) ) ) P ] k k K K K K { { { ` { { { ~ . ", 215 | " & j B d P 6 P ) ) P P ) P ] ] K { { { { q q { { { { { { { ~ g ", 216 | " * j B B j O + 6 P 6 K K K { { { { { , g g S S K K K { { { ` k {. ", 217 | " w j / / B B d t ) 6 { { { ~ { { K K , [ [ ( ( S , k { K { { ` ; ", 218 | " z j / / / / d 5.O t ) K K K 6 P P P P K g [ S [ ( S { { K { ` g ", 219 | " L _ / B / / / B d 5.O > t + ) ) ) P P P K , [ [ ( ( [ , { { { { }. ", 220 | " ..) 5./ / / / / B d d d 5.O t + + ) P P P ] { g [ S [ ( C { { ~ . ", 221 | " ; + B / B / / B d 5.5.5.O > t + ) P P P ] k K g [ S [ ( { ` ` ] !. ", 222 | " u O / / / / B d 5._ O > t + ) P ) P ] ] ] k { { g [ g ` { { ~ m ", 223 | " r t 5.d d B B d 5.O O > + ) P P P ] k K K K { { { { ~ { { { { ~ c ", 224 | " e 7 ) > O 5.5.5.O > > t ) P P 6 ] k K { { { { { { { { { ` { { ` k 6. ", 225 | " x 6 P ) + + + + + + ) P P P ] k { { { { { { { { { { { { { { { { ] Q ", 226 | " x k 6 6 6 6 6 6 K 6 6 K K K K K { { { { { { { { { { { { { { K K ` , H ", 227 | " U k = g 0 F k K { K K k a a k { { ~ ~ ~ ~ { K ] K { { { { { K k k { { s ", 228 | " ]., , 0 0 g , k k { K , , g , k { k k ] , = a ] k { { ~ { { K k k k { K l . ", 229 | " F : R R R 0 , = { k , , g g g , ^ ' ' ' ^ ^ a ] K ; , ~ ~ { { K k k k K K F ]. ", 230 | " g 0 R R R R 0 M k g R R 0 0 0 g = ' ' ' a a k ] { s [.. K ~ { { k k K k k { , s # [. ", 231 | " # 3.;.. R 0 0 g g g ' a ] g , , , g 0 , ' ' ^ , m m a k ] 5 2 U = { { K k k K k k k K k , 0 ; H 5 ", 232 | " 2 L .# .# c . m F , 0 0 0 R R 0 M ^ k 0 R R R R 0 , = ' ' ^ . l l a k { D Q s m k ~ { K k k K K k K K ] , g 0 s .[. ", 233 | " T Y H i 3.y l u h ] K a . . a ' i R #.R 0 g k , M ^ $ a , , g R R R 0 ^ ' ' = m l m k k ` . } D 0 k { { { K k k K k k k K { K ] F c H ].2 ", 234 | " _.H -.V # V V V V ; F = ] , ' |.|.|.' ' M m ' ' ' ' ' ' a = M 0 0 g , ] a a ^ ' ' ' ' a a ] k ] { , >.V c l g k { { K K K k k k K K { K k , F l s -. .5 6.$. ", 235 | " 1 (.-.V T :.. ;.= ' ' ' ' ;.F F F ;.= a = ' ' m R m = a k a ^ ^ ^ ' ' ' ' ' ^ k k ] ] k k 1 2 ].U l g , ] { { { K K K K K K K K { K k ] , g l U X [. ", 236 | " 1 ~.V Y # . F F a M ~.# } T Y -.m ;.$ = ' F M ' ' ' ' ' ' ' ' ' ' ' ' ^ ^ a a a ] { c {.@ x , k ~ ~ ~ { { { { K ) ) ) P K { k , m . ", 237 | " T A V # T Y :.m . l V $.H l F ] = ' ' ' ' ' ' ' ' ' ' ' ' ^ ^ a a a a ] ] k F !.@ c m g g , , ] ) ) + + + ) P 6 K K . }. ", 238 | " V ; T Y -.-.# Y Y Y # H H H :.l = ; Y ~.m F k ' ' ' ' ' ' ' ' ' ' ' ^ a a a a ] k k a 8 8 ]. 5 .; 0 t > > + ) P ~ ~ m ", 239 | " .i # T Y Y Y # # # -.; l l l c # Y :.l . , k ' ' ' ' ' ' ' ^ ^ a a a a k k a 8 = ;.= 8 ]. X w G > t + 6 ~ m } ", 240 | " T i -. # c F F H H -.T # ; l . 8 k ' ' ' ' ^ = a ] ] ] ] k k $ 8 ;.;.;.= $ F >.3 > > ) { ~ x ", 241 | " 2 c ; # $.# ~.. ;.-.Y # -.-.}.# Y T Y V :.c l F 8 k a ^ = ] ] k k k k k a 8 = ;.;.;.= $ F D 2 z U *.> + 6 ~ ] ", 242 | " 2 c . l ; V V # H :.c m ;.; # -.~.c c l m m F F ;.8 8 a ] k k K k k k ] 8 E = ;.;.;.;.= 8 a 8 l [. @ k K {. 7 > + 6 ` K $. ", 243 | " @. . . . . .# V # V c # T T Y # V V V ; l F ;.;.;.= E E E = ;.;.;.;.;.;.= = a = l @ {. Y m + t ) c :.+ ) 6 { ~ k ", 244 | " @.-.H Y T # y F ;.;.;.;.;.;.;.;.= = 8 8 = ;.m ~.5 !.:.h + O _ > h .,.P P { ~ ~ ~ m ", 245 | " T Y -.-.V # # Y T Y # # :.F = = = = 8 8 $ $ $ a = . :.5 [. s h t O _ _ <._ P l :.c g ) P P K ~ ~ ~ ~ F ", 246 | " (.@ :.c c c l m m . F ;.;.F . m l c ~.H Q [. @ ,.+ > O _ <.<.<._ ) 6 6 6 6 6 K ~ ~ ~ ~ { . ", 247 | " U 3 > O O O _ _ <._ _ > + + ) 6 ~ ~ ~ ~ ~ K m 1 ", 248 | " D *.> O O O O O O _ _ > > + ) 6 { { g . c ; .} ", 249 | " # *.> O O O O > > > + + + P P P K ~ { Q ", 250 | " 6.0 ) ) + + P P P 6 ] , g g g g g g g g . 2 ", 251 | " .x c s s :.z 5 @.@._. ", 252 | " ", 253 | " ", 254 | " ", 255 | " ", 256 | " ", 257 | " ", 258 | " ", 259 | " ", 260 | " ", 261 | " ", 262 | " ", 263 | " ", 264 | " -.F F F F F F F F F F F F F . X [. $.F F F F F F F F F F F F F F F F m :. 2 . F F F F F F F F F F F m {.[. H F F F F F F F F F F F F F F F F F . ", 265 | " m ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ = $ U # ~ ~ ~ ~ ~ ~ ` ~ ~ ~ ~ ~ ~ ~ ~ ` = i 1 s ` ~ ~ ~ ` = q ~ ~ ~ ~ ~ ~ ~ ;.a . y ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ` F ", 266 | " 2 ~.~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ = 2 >.;.~ ~ ~ ~ . = ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ;.].@ } .` ~ ~ ~ $ F ` ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ F [.c ~ ~ ~ ~ ` q ` ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ . ", 267 | " [.# }.q ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ` ]. .= ~ ~ ~ = . ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ $ 8 . >.= ~ ~ ~ q = ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ = .H q ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ $ ` ~ ~ } ", 268 | " [.V :.q ~ ~ ~ ~ ~ ~ . A ; ; ~.~.D H c . 5 }.8 ~ ~ ~ . $ ~ a :.A ; ~.3.q ~ ~ ~ ~ ~ ~ 8 X ` ~ ~ ~ F ~ ~ q c ~.; ; ~.~.~.D @ ;.m V -.q ~ ~ ~ ~ ~ ~ F D s s x a ~ ~ ~ a ;.~ ~ m ", 269 | " [.# :.q ~ ~ ~ ~ ~ ~ l .}.}.H H V (. 5 }.8 ~ ~ ~ F q ~ = (.H @ U -.F ~ ~ ~ ~ ~ ~ 8 >.H q ~ ~ ~ ` ~ ~ m .H }.}.H H H }.5 [.# U q ~ ~ ~ ~ ~ ~ m .@ :.A -.a ~ ~ $ c ~ ~ m ", 270 | " # :.q ~ ~ ~ ~ ~ ~ c >.6.6.6.].].$. X Q 5 # z # 1 Q X .2 1 .z z z .z z z z z z z 5 [. [.].z # .X X 5 ].].].Q .Q $. 5 H 8 ~ ~ ` F ~ ~ ;.[.6.Q H -.F ~ ~ ~ ~ ~ ~ = $.-.q ~ ~ ~ ` ~ ~ x [.1 1 1 6.6.].5 {. } .U q ~ ~ ~ ~ ~ ~ y 2 5 # -.-.8 ~ ~ $ l ~ ~ m ", 271 | " # :.q ~ ~ ~ ~ ` ~ A ; ~ ~ ~ ~ ~ ~ V m ~ ~ ~ a .U m ~ ~ ~ q m a ~ ~ ~ ~ ~ ~ ` q x X q ~ ~ ~ = m ` ~ ~ ~ ~ ~ ~ ~ ~ m 6.}.= ~ ~ q F ~ ~ . [.(.H F ~ ~ ` ` ~ ~ = 6.-.q ~ ~ ~ $ ` ~ a $. .U $ ~ ~ ~ ~ ~ ~ c } 1 V @ 8 ~ ~ q = ~ ~ m ", 272 | " # A q ~ ` ` ` ` ~ @ i ~ ` ` ` ` ` ;.q ` ` ` 8 . 8 [. l ~ ` ` ` l y ` ~ ~ ~ ~ ` ` ` q @ } {.q ~ ` ` q . ;.~ ~ ~ ~ ` ` ` ` ~ ` m 5 }.= ~ ~ q = ~ ~ m 6.V . ~ ` ` ` ` ~ 8 6.:.q ~ ` ~ a a ~ ` a ;.= = = = = = = U .-.$ ~ ` ` ` ` ~ ~. } X @ 8 ~ ` ` q ~ ~ m ", 273 | " # D q ` ` ` ` ` = ]. X ].{.y ~ ` q q 8 8 l $ ` ` ` ` ~ ` 2 6.a ` ` $ l a ~ a 8 a 8 $ ` ` ` ` 8 m ; m ~ ` ` a $ ` q 8 8 8 a ` ` ` a F ` q {.$.H = ~ ` ` q ` ~ m >.}.;.` ` ` ` ` ~ F ].A q ` ` ~ $ c q ` ` ` ` ` ` ` ` ` ~ q }. .-.$ ~ ` ` ` ` ~ ; 5 H 8 ~ ` ` ` ` ~ m ", 274 | " # A $ ` ` ` ` ` m X l m m m l U . s ].l ~ ` q $ l 8 ` ~ ` ~ ~ ~ ~ ` 6.; ` q ` F . ~ a H V H V l ` ` ` ` ` $ 8 [.$.= ` q $ 0 q ~ m .V H H a ` ` 8 c q ~ i >.}.= ~ ` ` ` ` ` a U c m . ;.` ` ` ` ` ~ 8 !.(.:.$ ` ` ` ~ F ~.$ q q q q q q q q q ` = X U a ` ` ` ` ` ~ ; ].H = ~ ` ` ` ` ~ m ", 275 | " # D a ` q q q ` $ l . q ` ` ` q ;.8 ~.5 m ` q q q $ ` ` q l 3.3.; i 8 .i ` q ` = q ` F # V @ :.y q q q q q q a {. .= ` ` a F ` $ D # }.U :.= ` q q q q ` c 2 H ;.` q { { q q ` q q ` ` ` q q q q ` m # :.$ ` ` ` ` ` ;.m = $ $ $ $ $ $ $ q q ` H ].-.a ` q q q q ` A ].H = ` ` ` ` q ` l ", 276 | " # :.a q q q q q q ` q q q q q q q ` ~.Q l ` q q q ` ` q 3.# }.}. .{.!. .3.` q q a $ ` . >.{.(.H l q q q q q q a 6.H = ` q a ;.` a 5 2 6.V -.8 ` q q ` q ` i >.H ;.` q q q q q q ` ` ` ` ` ` q q q q F z [.(.A $ q q ` ` ` ` q q q q q q q $ . a q ` H ].U a ` q q q q ` A ].H = ` q { q q ` l ", 277 | " # :.a q q $ $ q q q q q q q q q q q ~.5 l q q q q q q 8 $.].5 Q ].2 $.# y q $ q 8 a q F Q @ 3.$ q $ $ $ q 8 X H = q q = 0 q $ H $.}.-.;.q q q q q ` c >.H F q q q q q q 8 . F F F F = q q q $ M M X Q -.;.` q q ` ` ` ` ` { { q ` q q a $ q q H ].-.8 q $ q q $ ` :. ].H ;.q q q q q ` y ", 278 | " # A 8 $ $ $ $ $ q m A ~.~.~.~.:. .# V .l q $ $ $ $ q = $.V y q $ q a a q $ . . a a a $ $ $ $ $ $ 8 X @ = q q 8 . q q E i 8 a a $ $ q q q q q i !.H F q $ $ $ $ q . }.@ -.:.A x $ q $ q ^ E . ].-.m q q q ` q q q q q q q q ` q q q $ q H ].-.8 q q $ q $ q :. 5 H ;.q $ q $ $ ` y ", 279 | " .D 8 $ $ $ $ $ q 3.# }.}.}.}.# {. 2 # l q $ $ $ $ q ;. !.V y $ $ $ a a $ $ $ $ $ $ q q $ $ q $ q 8 5 @ ;.q $ a a $ $ $ $ $ $ q q q q q q q ` i >.@ M $ $ $ $ $ $ c X # # H :.3.a $ $ $ $ $ M 1 -.c a q q q q q q q q q q q q q q q $ q }.].U E $ $ $ $ $ q :. ].@ ;.q q $ $ $ q y ", 280 | " # A = $ a a a $ q ~.>.$.$.$.$.$.} !.# l $ a a a $ $ ;. 2 # 3.$ $ $ a a $ a 8 8 8 8 8 8 a a a a 8 ;.X @ ;.$ $ $ $ $ $ a 8 8 8 8 8 8 a a a 8 a ; 2 H M $ $ $ $ $ a :. 2 {.(.@ c a $ a $ $ $ M [.H :.c l = a 8 a a a a 8 $ q $ q $ $ $ q }.].U = $ $ $ a a $ -. 5 @ M $ $ $ $ $ q y ", 281 | " # :.= a a a a a $ H !.# l $ a a a a $ M !.V 3.$ a a a a $ = @ @ -.:.:.A A A :.}.{.} 5 @ ;.$ a a a a $ m }.@ -.:.A A A :.-.5 ].@ F $ a $ $ $ $ ~. $.}.c 8 a a a a $ . X @ -.-.A A A A A ; ; A m a $ $ $ $ a $ V ].U = $ a a a a $ -. 5 @ M $ a a a a $ 3. ", 282 | " # D = a 8 8 8 8 $ # !.V l a a a a a $ M 2 V 3.$ a a a a a 8 H V }.V V V }.}.V 5 [.} Q @ ;.$ a $ a a a y .V }.V }.H }.V # $. 6.@ M $ a a a a $ l !.V c E a 8 8 a $ . 2 5 # V }.V }.}.}.}.-.A ; 8 $ a $ a a $ V ].U ;.a a a 8 8 $ -. ].H M $ a a a a $ 3. ", 283 | " # :.^ 8 8 E E E a V !.V y 8 8 8 8 a a M 2 V 3.a a a a a a M !.!.{.{.!.!.!.!.{. X @ M a a a $ a a ; } {.2 !.{.!.!.2 2 ].@ . a a a a a a y # c E 8 8 8 8 a . } } } } } } ..2 ].}.~.= 8 a a a a a }.].U ;.8 8 8 8 ;.E H $.H ;.a 8 a a a $ 3. ", 284 | " # A ;.8 8 8 8 E a # {.V l 8 8 8 a 8 a M !.V c E 8 a a a 8 8 @ $.A 5 ].@ . 8 a a a 8 a . [. } } V @ ].@ . 8 8 a a 8 a 3. ].@ 3.l M = 8 8 8 8 8 . !.c i i i i i i i 3.l M 8 8 8 a a 8 E .5 D ;.8 8 8 8 8 M $. A i 3.. 8 8 8 8 8 8 E X ", 285 | " # D ;.8 8 E 8 E 8 . {.V l 8 8 8 a 8 a . 2 V :.M 8 8 a 8 8 8 M i m . . . . . . M E @ $.@ 3.8 8 8 8 8 8 E y y M . . . . M . ^ M 6.@ . 8 8 8 8 8 8 M y M ^ E E E E 8 8 8 E 8 :. @ 8 E E E E E E E E E E E 8 8 8 8 a . (.D ;.8 8 8 8 8 E m l ^ 8 E E E 8 8 8 8 a M ", 286 | " } .3.^ ^ E E E ^ E V {.V y E E 8 8 8 8 M [.# :.3.^ 8 8 8 8 ^ ^ E E E E E E E E E E H 2 @ ; M 8 8 8 8 E ^ ^ E E E E E E E E E . 5 U M E E 8 8 8 E E E E ^ ^ ^ ^ E E E E 8 M >.!.6.A E ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E E 8 8 8 ^ @ (.c ^ E E E E E E E E ^ ^ ^ ^ ^ 8 8 8 E ^ . ", 287 | " [. .l E ^ ^ ^ ^ ^ E m {.V y E ^ ^ ^ ^ ^ ^ V Q -.; 3.;.E ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ X } }.:.i . E ^ E ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E l ].; ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E . 5 6.V i E ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E 3. } # y E ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ E m ", 288 | " >.# :.i ~.i ~.; V $._. !.V A i ~.i ; -.X !. !.# :.:.~.i ~.; A A :.A A A A A A U # 2 Q @ :.A i ~.~.; A :.:.A :.:.A A :.H ]. 5 -.i ~.~.~.~.~.~.; ; ; ~.~.~.i ~.~.; -.$. 1 }.:.~.~.~.~.~.~.~.~.~.~.~.i ~.~.A H {. {.V D i ~.i i ~.~.~.~.; ~.~.~.~.~.i ~.A H {. ", 289 | " } X }.}.}.H H V $. >.(.}.H }.H }.X >. $.# }.H }.}.}.}.V V }.}.}.V V }.X 2 >.Q }.H }.}.}.}.V }.}.}.}.V }.}.# 5 1 V H H H }.}.}.}.}.}.}.}.}.}.H H }. .1 >.X }.}.}.}.}.}.}.}.}.}.}.H }.}.V # 1 >.>.{.# }.}.}.}.H }.}.}.}.}.}.}.H H H H }.# {. ", 290 | " !.1 1 1 1 1 1 >. 2 1 1 6.1 1 {. 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 !.} >.$.1 1 1 1 1 1 1 1 1 1 1 1 1 $.>. [.$.1 1 1 1 1 1 1 1 1 1 1 1 6.1 1 1 {. !.1 1 1 1 1 1 1 1 1 1 6.6.1 1 1 !.[.} } 2 {.1 1 1 1 1 6.1 1 1 1 1 1 6.1 1 1 1 !.} ", 291 | " ", 292 | " ", 293 | " "}; 294 | -------------------------------------------------------------------------------- /FreeBSD/XDM/bsd_background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/outpaddling/desktop-installer/05d1d01fc32b361d975168394ff46444a60decc7/FreeBSD/XDM/bsd_background.jpg -------------------------------------------------------------------------------- /FreeBSD/XDM/xdmshutdown: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/wish 2 | # NT 20 October 2002 - adapted/copied from various similar 3 | # scripts dragged kicking and screaming from the bowels of the web:) 4 | # NT 27 January 2003 - added a reboot button 5 | # 6 | 7 | proc shutdownf {} { exec /sbin/shutdown -p now 2>/dev/console >/dev/console } 8 | 9 | proc rebootf {} { exec /sbin/shutdown -r now 2>/dev/console >/dev/console } 10 | 11 | proc restartx {} { exec /bin/pkill Xorg 2>/dev/console >/dev/console } 12 | 13 | button .shutdown -text "Shutdown" -background gray -activebackground #664444 -width 15 -command shutdownf 14 | 15 | button .reboot -text "Reboot" -background gray -activebackground #446644 -width 15 -command rebootf 16 | 17 | button .restartx -text "Restart X Server" -background gray -activebackground #444466 -width 15 -command restartx 18 | 19 | pack .reboot -side top 20 | pack .shutdown -side top 21 | pack .restartx -side top 22 | 23 | -------------------------------------------------------------------------------- /FreeBSD/desktop-installer.man: -------------------------------------------------------------------------------- 1 | .TH desktop-installer 1 2 | .SH NAME \" Section header 3 | .PP 4 | desktop-installer \- Quickly configure a FreeBSD desktop system 5 | 6 | \" Convention: 7 | \" Underline anything that is typed verbatim - commands, etc. 8 | 9 | .SH SYNOPSIS 10 | .PP 11 | .nf 12 | .na 13 | desktop-installer 14 | .ad 15 | .fi 16 | 17 | .SH "DESCRIPTION" 18 | 19 | The FreeBSD desktop configuration process requires installing many 20 | ports/packages and configuring many different subsystems, which can be a 21 | daunting task for all but the most seasoned users. 22 | 23 | The 24 | .B desktop-installer 25 | script automates the process of configuring a FreeBSD machine as a desktop 26 | system running any desktop environment or simple window manager in the 27 | FreeBSD ports tree. More than a dozen of the most popular desktops are 28 | explicitly supported and any other can be configured using the "Custom" 29 | option. 30 | 31 | To use "Custom", you need only know the category/portname of the desktop you 32 | want, and the command for starting the desktop from xinit or xsession, 33 | e.g. start-lumina-desktop for the Lumina desktop. This command can be found 34 | in category/portname/pkg-plist. The only other advantage to explicitly 35 | supported desktops is automatic installation of a few common utilities, such 36 | as qpdfview and coreterminal for Lumina. You can easily install the utilities 37 | you want using "pkg install" or "auto-admin" after a Custom desktop install. 38 | 39 | .B Desktop-installer 40 | is a post-install script, i.e. one that you run AFTER doing a standard 41 | operating system and booting the new installation for the first time. 42 | ( See details below. ) 43 | 44 | .B Desktop-installer 45 | installs all the software necessary for the chosen desktop 46 | as well as common desktop-independent packages such as CUPS, Firefox, 47 | LibreOffice.org, etc. 48 | 49 | It also configures system services and settings to facilitate 50 | convenient use of CD/DVD drives, USB ports, etc. 51 | 52 | .SH "MOTIVATION" 53 | 54 | This script is meant to provide a middle-ground between totally manual 55 | configuration and complete distributions such as GhostBSD or Ubuntu Linux. 56 | 57 | The post-install script approach has some advantages over complete 58 | distributions. The post-install script itself is far easier to maintain and 59 | unlike separate distributions, the resulting desktop system is a 60 | nearly pristine FreeBSD system with minimal differences from the default 61 | install. The system can therefore be maintained and upgraded using 62 | traditional FreeBSD command-line tools (pkg install, adduser, freebsd-update, 63 | etc.), or stock tools of the chosen desktop suite. 64 | 65 | For easy management of common system settings, try the auto-admin menu. 66 | 67 | Desktop-installer supports all CPU architectures that run FreeBSD and all 68 | supported FreeBSD versions, whereas distributions are generally limited to 69 | one version on AMD64. 70 | 71 | .SH "BASIC USE" 72 | 73 | To use 74 | .B desktop-installer: 75 | 76 | 1. Install a basic FreeBSD system. 77 | 78 | The recommended install options are a basic user system including: 79 | 80 | .nf 81 | .na 82 | All binaries 83 | Docs in your preferred language(s) 84 | Source code 85 | .ad 86 | .fi 87 | 88 | Installing the ports tree from the installation media is a waste of time. 89 | It will be replaced with a git clone by desktop installer. 90 | 91 | If you neglect to install the source tree, desktop-installer will install it 92 | for you automatically. 93 | 94 | It is best to use 95 | .B desktop-installer 96 | on a pristine FreeBSD installation. 97 | 98 | .B Desktop-installer 99 | can also be used to upgrade all the software on an existing system, but there 100 | are too many possibilities for failure to support here since it is impossible 101 | to predict what kinds of system hacks it might encounter. Also, it's generally 102 | a good idea to back up your data, wipe your disk clean, and reinstall 103 | everything every few years, since data on magnetic disks can fall victim 104 | to "bit rot" (magnetic polarity fades over time) 105 | and read errors will eventually occur. 106 | 107 | .B Desktop-installer 108 | can install software from source or from binary packages (pkg install). 109 | Binary packages install much faster (seconds per package, vs minutes or 110 | hours per port built from source). However, installing from ports allows you 111 | to install on systems for which binary packages are not maintained. 112 | 113 | If you enjoy a simple life, install a -RELEASE or -STABLE version rather 114 | than -CURRENT. If you would like to help the project move forward by 115 | testing the latest changes, run -CURRENT. 116 | 117 | If you do not choose to install software from source, 118 | .B desktop-installer 119 | installs most packages over the network using "pkg install", but falling 120 | back on build-from-source where necessary. (e.g. some software cannot 121 | be distributed as a binary package for licensing reasons.) 122 | 123 | 2. Install desktop-installer: 124 | 125 | pkg install desktop-installer 126 | 127 | or (if you have a ports tree installed) 128 | 129 | cd /usr/ports/sysutils/desktop-installer 130 | make install 131 | 132 | or if you want the latest development version of desktop-installer, install 133 | from the latest freebsd-ports-wip: 134 | 135 | pkg install auto-admin 136 | auto-freebsd-wip-checkout 137 | wip-reinstall-port auto-admin 138 | wip-reinstall-port desktop-installer 139 | 140 | 3. Run desktop-installer: 141 | 142 | rehash # If using tcsh and just installed desktop-installer 143 | desktop-installer 144 | 145 | .SH "SEE ALSO" 146 | auto-admin 147 | 148 | .SH AUTHOR 149 | .nf 150 | .na 151 | J. Bacon 152 | Acadix Consulting, LLC 153 | 154 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright <2010-2020> 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4 | 5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 | 7 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | 9 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 10 | -------------------------------------------------------------------------------- /NetBSD/XDM/Xsetup_0: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # xconsole -geometry 480x130-50-50 -daemon -notify -verbose -fn fixed -exitOnFail 4 | 5 | # put me in /etc/X11/xdm 6 | 7 | # Use NetBSD logo as background instead default steelblue 8 | # /usr/X11R7/bin/xsetroot -solid steelblue 9 | /usr/pkg/bin/feh --bg-fill /usr/pkg/share/desktop-installer/XDM/netbsd-background.jpg 10 | 11 | # Add shutdown, reboot, restart X11 buttons 12 | # xwininfo sees multiple monitors as one big screen 13 | # Use xrandr to separate them. Assuming monitors are side-by-side, 14 | # so xwininfo is fine for height. 15 | # width=`xwininfo -root | awk '$1 == "Width:" { print $2 }'` 16 | 17 | # Uncomment these to debug 18 | # xwininfo -root > /root/xwininfo 19 | # xrandr --screen 0 > /root/xrandr 20 | 21 | height=`xwininfo -root | awk '$1 == "Height:" { print $2 }'` 22 | 23 | # First component of field containing ####x###+#+# 24 | width=`xrandr --screen 0 | grep -E '[0-9]+x[0-9]+\+[0-9]+\+[0-9]+' | awk -F x '{ print $1 }' | awk '{ print $NF }'` 25 | 26 | printf "width = $width height = $height\n" > /root/dims 27 | 28 | # Primary display could be on left or right. 3rd value in xrandr output 29 | # is the offset of the left edge of a monitor, e.g. 30 | # VGA-1 connected primary 1280x1024+1925+0 31 | left_edge=`xrandr --screen 0 | grep primary | awk '{ print $4 }' \ 32 | | awk -F [x\+] '{ print $3 }'` 33 | 34 | x=$(( $left_edge + ($width - 150) / 2 )) 35 | y=$(( ($height - 10) / 2 + 160 )) 36 | /usr/pkg/share/desktop-installer/XDM/xdmshutdown -geometry +$x+$y & 37 | echo $! > /var/run/xdmshutdown.pid 38 | -------------------------------------------------------------------------------- /NetBSD/XDM/netbsd-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/outpaddling/desktop-installer/05d1d01fc32b361d975168394ff46444a60decc7/NetBSD/XDM/netbsd-background.jpg -------------------------------------------------------------------------------- /NetBSD/XDM/xdmshutdown: -------------------------------------------------------------------------------- 1 | #!/usr/pkg/bin/wish 2 | # NT 20 October 2002 - adapted/copied from various similar 3 | # scripts dragged kicking and screaming from the bowels of the web:) 4 | # NT 27 January 2003 - added a reboot button 5 | # 6 | 7 | proc shutdownf {} { exec /sbin/shutdown -p now 2>/dev/console >/dev/console } 8 | 9 | proc rebootf {} { exec /sbin/shutdown -r now 2>/dev/console >/dev/console } 10 | 11 | proc restartx {} { exec /usr/sbin/service xdm restart 2>/dev/console >/dev/console } 12 | 13 | button .shutdown -text "Shutdown" -background gray -activebackground #664444 -width 15 -command shutdownf 14 | 15 | button .reboot -text "Reboot" -background gray -activebackground #446644 -width 15 -command rebootf 16 | 17 | button .restartx -text "Restart X Server" -background gray -activebackground #444466 -width 15 -command restartx 18 | 19 | pack .reboot -side top 20 | pack .shutdown -side top 21 | pack .restartx -side top 22 | 23 | -------------------------------------------------------------------------------- /NetBSD/desktop-installer: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | ########################################################################## 4 | # Description: 5 | # NetBSD desktop-installer 6 | # 7 | # History: 8 | # Date Name Modification 9 | # 2023-06-10 J Bacon Begin 10 | ########################################################################## 11 | 12 | usage() 13 | { 14 | printf "Usage: $0\n" 15 | exit 1 16 | } 17 | 18 | 19 | ########################################################################## 20 | # Function description: 21 | # Create a global Xsession file 22 | # Arguments: 23 | # 24 | # Returns: 25 | # 26 | # History: 27 | # Date Name Modification 28 | # 2023-06-13 J Bacon Begin 29 | ########################################################################## 30 | 31 | create_xsession() 32 | { 33 | if [ $# != 1 ]; then 34 | printf "Usage: create_xsession session-command\n" 35 | exit 1 36 | fi 37 | session_cmd=$1 38 | 39 | # FIXME: Use auto-something 40 | if [ ! -e $XSESSION.ctwm ]; then 41 | mv $XSESSION $XSESSION.ctwm 42 | fi 43 | 44 | # ck-launch-session may only be necessary for LXDE to enable reboot, 45 | # shutdown, etc when exiting the session. It causes problems with LXQT. 46 | if [ $de = lxde ]; then 47 | cat << EOM > $XSESSION 48 | #!/bin/sh 49 | 50 | exec ck-launch-session dbus-launch --exit-with-session $session_cmd 51 | # exec ck-launch-session $session_cmd 52 | EOM 53 | 54 | cat << EOM > $HOME/.xinitrc 55 | #!/bin/sh -e 56 | 57 | exec ck-launch-session dbus-launch --exit-with-session $session_cmd 58 | # exec ck-launch-session $session_cmd 59 | EOM 60 | else 61 | cat << EOM > $XSESSION 62 | #!/bin/sh 63 | 64 | exec $session_cmd 65 | EOM 66 | 67 | cat << EOM > $HOME/.xinitrc 68 | #!/bin/sh -e 69 | 70 | exec $session_cmd 71 | EOM 72 | fi 73 | 74 | auto-append-line 'DisplayManager*authName' \ 75 | 'DisplayManager*authName: MIT-MAGIC-COOKIE-1' $XDM_CONF nocomment 76 | } 77 | 78 | 79 | ########################################################################## 80 | # Main 81 | ########################################################################## 82 | 83 | if [ $# != 0 ]; then 84 | usage 85 | fi 86 | 87 | cat << EOM 88 | 89 | It is best to have all installed packages up-to-date before installing 90 | more packages, in case not every dependency version is checked 91 | correctly. The pkgsrc tree should also be updated in case you 92 | must install something from source, such as software than cannot 93 | be redistributed in binary form, and hence has no binary package. 94 | 95 | If you have updated recently using auto-pkgsrc-update, auto-update-system, 96 | or pkgin upgrade and cvs update, then you can skip this step now. 97 | 98 | EOM 99 | printf "Update installed packages and pkgsrc tree? [y]/n " 100 | read update 101 | if [ 0"$update" != 0n ]; then 102 | auto-pkgsrc-update --defaults 103 | fi 104 | 105 | # Digest should have been installed as a dep, but just in case 106 | # Likewise for fetch if FETCH_USING=fetch is set in mk.conf 107 | pkgin -y install digest fetch 108 | pkgin -y install git cvs gmake xz feh tk consolekit 109 | 110 | if ! auto-package-installed security/mozilla-rootcerts-openssl; then 111 | printf "Install mozilla root certs? (Needed to access many sites) [y]/n " 112 | read mz 113 | if [ 0"$mz" != 0n ]; then 114 | pkgin -y install mozilla-rootcerts-openssl 115 | fi 116 | fi 117 | 118 | # Install sets only if running a RELEASE 119 | # uname -r displays only X.Y 120 | # For non-release versions, it displays something like 10.0_BETA 121 | if uname -r | grep -E '^[0-9]+\.[0-9]+$'; then 122 | for base_set in comp games man modules text xbase xetc xcomp xfont xserver; do 123 | if [ ! -e /etc/mtree/set.$base_set ]; then 124 | printf "Installing $set...\n" 125 | auto-install-base-components $base_set 126 | else 127 | printf "$base_set already installed.\n" 128 | fi 129 | done 130 | else 131 | cat << EOM 132 | 133 | Skipping installation of base sets. If you don't have all you need, 134 | you'll have to reinstall the OS. 135 | 136 | EOM 137 | fi 138 | 139 | if [ ! -e /usr/pkgsrc ]; then 140 | printf "Installing pkgsrc tree...\n" 141 | cd /usr 142 | ftp ftp://ftp.netbsd.org/pub/pkgsrc/stable/pkgsrc.tar.xz 143 | tar -zxvf pkgsrc.tar.xz 144 | fi 145 | 146 | if [ ! -e /usr/pkgsrc/wip ]; then 147 | printf "Install pkgsrc-wip? y/[n] " 148 | read wip 149 | if [ 0"$wip" = 0y ]; then 150 | cd /usr/pkgsrc 151 | auto-pkgsrc-wip-checkout 152 | fi 153 | fi 154 | 155 | cat << EOM 156 | 157 | 1.. CTWM (NetBSD default) 158 | 2.. Gnome 159 | 3.. KDE 160 | 4.. LXDE 161 | 5.. LXQT 162 | 6.. MATE 163 | 7.. XFCE 164 | 8.. Custom 165 | 166 | EOM 167 | printf "Selection? " 168 | read de_num 169 | 170 | XDM_CONF=/etc/X11/xdm/xdm-config 171 | XSESSION=/etc/X11/xdm/Xsession 172 | 173 | de='unknown' 174 | case $de_num in 175 | 1) 176 | # Install separately so user sees error messages 177 | if [ -e $XSESSION.ctwm ]; then 178 | mv -f $XSESSION.ctwm $XSESSION 179 | fi 180 | for pkg in evince xscreensaver; do 181 | pkgin -y install $pkg 182 | done 183 | rm $HOME/.xinitrc 184 | ;; 185 | 186 | 2) 187 | # Install separately so user sees error messages 188 | for pkg in evince gnome; do 189 | pkgin -y install $pkg 190 | done 191 | create_xsession gnome-session 192 | ;; 193 | 194 | 3) 195 | # Install separately so user sees error messages 196 | pkgin -y install kde 197 | create_xsession startkde 198 | ;; 199 | 200 | 4) 201 | # Install separately so user sees error messages 202 | # xscreensaver is used if present, but not a dep 203 | for pkg in evince xscreensaver lxde; do 204 | pkgin -y install $pkg 205 | done 206 | create_xsession startlxde 207 | ;; 208 | 209 | 5) 210 | # Install separately so user sees error messages 211 | for pkg in evince lxqt; do 212 | pkgin -y install $pkg 213 | done 214 | create_xsession startlxqt 215 | ;; 216 | 217 | 6) 218 | # Install separately so user sees error messages 219 | for pkg in evince mate; do 220 | pkgin -y install $pkg 221 | done 222 | create_xsession mate-session 223 | ;; 224 | 225 | 7) 226 | # Install separately so user sees error messages 227 | for pkg in evince xfce4; do 228 | pkgin -y install $pkg 229 | done 230 | create_xsession xfce4-session 231 | ;; 232 | 233 | 8) 234 | printf "Package name? (Use pkgin search to verify) " 235 | read package 236 | printf "Session command? (See category/$package/PLIST) " 237 | read session_cmd 238 | 239 | for pkg in xscreensaver $package; do 240 | pkgin -y install $pkg 241 | done 242 | create_xsession $session_cmd 243 | ;; 244 | 245 | *) 246 | printf "Invalid selection.\n" 247 | exit 1 248 | ;; 249 | 250 | esac 251 | 252 | ########################################################################## 253 | # From guide 254 | ########################################################################## 255 | 256 | cp /usr/pkg/share/examples/rc.d/dbus /etc/rc.d 257 | # A dbus child process is started by LXQT, but it is not sufficient 258 | # to enable shutdown/reboot buttons on exit. We apparently need a dbus 259 | # service running as root. 260 | auto-enable-service dbus $0 261 | 262 | # Enhanced XDM with background and restart/shutdown/restart-x11 buttons 263 | auto-replace-file /usr/pkg/share/desktop-installer/XDM/Xsetup_0 /etc/X11/xdm/Xsetup_0 264 | auto-replace-file /usr/pkg/share/desktop-installer/XDM/GiveConsole /etc/X11/xdm/GiveConsole 265 | 266 | cat << EOM 267 | 268 | Enabling XDM will cause the screen to switch to graphics mode. 269 | 270 | If you are running desktop-installer on the primary text console, 271 | you can return to the text console by typing Ctrl+Alt+F1 on most 272 | systems (or Meta-key + F1 under VirtualBox). 273 | 274 | EOM 275 | # Offer to enable xdm if not already running 276 | if ! pgrep bin/xdm; then 277 | printf "Enable XDM graphical login? [y]/n " 278 | read xdm 279 | if [ 0"$xdm" != 0n ]; then 280 | auto-enable-service xdm $0 281 | fi 282 | fi 283 | 284 | # Enable devpubd-based external media mounting 285 | # FIXME: Tolerate failure for now, since qmediamagager is 286 | # difficult to install until a binary package exists 287 | auto-automount-setup || true 288 | 289 | for app in firefox thunderbird keepassxc; do 290 | if ! auto-package-installed $app; then 291 | printf "Install $app? y/[n] " 292 | read install 293 | if [ 0"$install" = 0y ]; then 294 | apps="$apps ${app}" 295 | fi 296 | fi 297 | done 298 | if [ ! -z "$apps" ]; then 299 | pkgin -y install $apps 300 | fi 301 | 302 | printf "Run auto-admin now to add users, etc? [y]/n " 303 | read admin 304 | if [ 0"$admin" != 0n ]; then 305 | auto-admin 306 | fi 307 | -------------------------------------------------------------------------------- /NetBSD/desktop-installer.man: -------------------------------------------------------------------------------- 1 | .TH desktop-installer 1 2 | .SH NAME \" Section header 3 | .PP 4 | desktop-installer \- Quickly configure a NetBSD desktop system 5 | 6 | \" Convention: 7 | \" Underline anything that is typed verbatim - commands, etc. 8 | 9 | .SH SYNOPSIS 10 | .PP 11 | .nf 12 | .na 13 | desktop-installer 14 | .ad 15 | .fi 16 | 17 | .SH "DESCRIPTION" 18 | 19 | The NetBSD desktop configuration process requires installing many 20 | packages and configuring many different subsystems, which can be a 21 | daunting task for all but the most seasoned users. 22 | 23 | The 24 | .B desktop-installer 25 | script automates the process of configuring a NetBSD machine as a desktop 26 | system running any desktop environment or simple window manager in the 27 | pkgsrc tree. Several of the most popular desktops are 28 | explicitly supported and any other can be configured using the "Custom" 29 | option. 30 | 31 | To use "Custom", you need only know the category/packagename of the desktop you 32 | want, and the command for starting the desktop from xinit or xsession, 33 | e.g. xfce4-session for the XFCE desktop. This command can be found 34 | in category/packagename/pkg-plist. The only other advantage to explicitly 35 | supported desktops is automatic installation of a few common utilities. 36 | You can easily install the utilities 37 | you want using "pkgin install" or "auto-admin" after a Custom desktop install. 38 | 39 | .B Desktop-installer 40 | is a post-install script, i.e. one that you run AFTER doing a standard 41 | operating system and booting the new installation for the first time. 42 | ( See details below. ) 43 | 44 | .B Desktop-installer 45 | installs all the software necessary for the chosen desktop 46 | as well as common desktop-independent packages such as CUPS, Firefox, 47 | LibreOffice.org, etc. 48 | 49 | It also configures system services and settings to facilitate 50 | convenient use of CD/DVD drives, USB ports, etc. 51 | 52 | .SH "MOTIVATION" 53 | 54 | This script is meant to provide a middle-ground between totally manual 55 | configuration and complete distributions such as GhostBSD or Ubuntu Linux. 56 | 57 | The post-install script approach has some advantages over complete 58 | distributions. The post-install script itself is far easier to maintain and 59 | unlike separate distributions, the resulting desktop system is a 60 | nearly pristine NetBSD system with minimal differences from the default 61 | install. The system can therefore be maintained and upgraded using 62 | traditional NetBSD command-line tools (pkgin install, adduser, NetBSD-update, 63 | etc.), or stock tools of the chosen desktop suite. 64 | 65 | For easy management of common system settings, try the auto-admin menu. 66 | 67 | Desktop-installer supports all CPU architectures that run NetBSD and all 68 | supported NetBSD versions, whereas distributions are generally limited to 69 | one version on AMD64. 70 | 71 | .SH "BASIC USE" 72 | 73 | To use 74 | .B desktop-installer: 75 | 76 | 1. Install a basic NetBSD system. 77 | 78 | The recommended install options are a basic user system including: 79 | 80 | .nf 81 | .na 82 | All binaries 83 | Docs in your preferred language(s) 84 | Source code 85 | .ad 86 | .fi 87 | 88 | It is best to use 89 | .B desktop-installer 90 | on a pristine NetBSD installation. 91 | 92 | .B Desktop-installer 93 | can also be used to upgrade all the software on an existing system, but there 94 | are too many possibilities for failure to support here since it is impossible 95 | to predict what kinds of system hacks it might encounter. Also, it's generally 96 | a good idea to back up your data, wipe your disk clean, and reinstall 97 | everything every few years, since data on magnetic disks can fall victim 98 | to "bit rot" (magnetic polarity fades over time) 99 | and read errors will eventually occur. 100 | 101 | .B Desktop-installer 102 | can install software from source or from binary packages (pkgin install). 103 | Binary packages install much faster (seconds per package, vs minutes or 104 | hours per package built from source). However, installing from source 105 | allows you 106 | to install on systems for which binary packages are not maintained. 107 | 108 | If you enjoy a simple life, install a -RELEASE or -STABLE version rather 109 | than -CURRENT. If you would like to help the project move forward by 110 | testing the latest changes, run -CURRENT. 111 | 112 | If you do not choose to install software from source, 113 | .B desktop-installer 114 | installs most packages over the network using "pkgin install", but falling 115 | back on build-from-source where necessary. (e.g. some software cannot 116 | be distributed as a binary package for licensing reasons.) 117 | 118 | 2. Install desktop-installer: 119 | 120 | pkgin install desktop-installer 121 | 122 | or (if you have a pkgsrc tree installed) 123 | 124 | cd /usr/pkgsrc/sysutils/desktop-installer 125 | make install 126 | 127 | or if you want the latest development version of desktop-installer, install 128 | from the latest NetBSD-pkgsrc-wip: 129 | 130 | pkgin install auto-admin 131 | auto-pkgsrc-wip-checkout 132 | wip-reinstall-pkg auto-admin 133 | wip-reinstall-pkg desktop-installer 134 | 135 | 3. Run desktop-installer: 136 | 137 | rehash # If using tcsh and just installed desktop-installer 138 | desktop-installer 139 | 140 | .SH "SEE ALSO" 141 | auto-admin 142 | 143 | .SH AUTHOR 144 | .nf 145 | .na 146 | J. Bacon 147 | Acadix Consulting, LLC 148 | 149 | -------------------------------------------------------------------------------- /NetBSD/getting-started.md: -------------------------------------------------------------------------------- 1 | 2 | # Getting started on NetBSD 3 | 4 | ## To-dos for improving the NetBSD desktop experience 5 | 6 | - More regular binary package builds for both stable (quarterly) and current 7 | - Improvements to desktop-environment packages (LXQT, Mate, etc.) 8 | - Improvements to auto-media-format (sysutils/auto-admin) 9 | - Used by qmediamanager 10 | - Upgrade key packages such as fusefs-* 11 | - newfs requires manual use of disklabel first 12 | - Interactive fdisk seems to be the only way to create an MBR. 13 | FreeBSD's gpart does this quickly and easily: 14 | gpart create -s MBR da0 15 | - Add more configuration options to desktop-installer 16 | - Binary updates for the NetBSD base system 17 | 18 | ## System requirements 19 | 20 | - 1 GiB RAM minimum 21 | - More if building large packages like gcc, clang 22 | - More if running Gnome or KDE 23 | - Minimum 30 GB disk 24 | - If running under VirtualBox: 25 | - Download the NetBSD installer ISO image from 26 | [https://netbsd.org](https://netbsd.org). 27 | - Set pointing device to USB tablet. 28 | - 2 or more cores. 29 | - The paravirtualized network device may offer the best performance. 30 | - Boot order: Hard Disk first, then Optical (This will cause the 31 | VM to boot from the 32 | ISO image before install and the hard disk after.) 33 | - Load the ISO image into the virtual optical drive under Storage. 34 | 35 | ## NetBSD Current/Beta Installation 36 | 37 | Only NetBSD systems with binary packages are supported. 38 | 39 | Note: For non-release versions of NetBSD (e.g. 10.0-BETA), 40 | base components cannot be added after installation, 41 | so all the base sets you need must be selected during OS 42 | installation. You can choose "Full install" or choose "Custom installation" 43 | and select at least the following sets to ensure that desktop-installer will 44 | work: 45 | 46 | Compiler tools 47 | X11 sets (all) 48 | 49 | Otherwise, the installation process is the same as for NetBSD releases. 50 | 51 | ### Configuration 52 | 53 | Network (hostname only for hostname, domain is asked for after) 54 | 55 | Timezone 56 | 57 | Root shell 58 | 59 | If not using binary packages from smartos.org: 60 | 61 | Enable installation of binary packages 62 | Fetch and update binary pkgsrc 63 | 64 | Enable ntpd and ntpdate on real hardware only, not on virtual machines 65 | 66 | Other options are unimportant to desktop-installer 67 | 68 | ## Installing smartos.org pkgsrc packages 69 | 70 | Packages for the latest pkgsrc tree on select NetBSD versions 71 | are available at 72 | [https://pkgsrc.smartos.org/install-on-netbsd/](https://pkgsrc.smartos.org/install-on-netbsd/). 73 | 74 | To use these packages, download and run the install script from smartos.org. 75 | This entirely replaces /usr/pkg with a new pkgsrc installation. 76 | 77 | ``` 78 | ftp https://raw.githubusercontent.com/outpaddling/desktop-installer/master/NetBSD/smartos-install.sh 79 | sh smartos-install.sh 80 | ``` 81 | 82 | Note that this script is an augmented copy of the script from smartos.org 83 | and it may become outdated. Please report any issues on this Github site. 84 | 85 | Then follow the post-installation instructions below as you would for 86 | any other NetBSD installation. The main difference is you'll be using 87 | the latest "current" packages instead of "stable" 88 | (from quarterly pkgsrc snapshots). 89 | 90 | ## Post-installation 91 | 92 | Do the following as the root user: 93 | 94 | ``` 95 | pkgin upgrade 96 | pkgin -y install desktop-installer 97 | desktop-installer 98 | 99 | # Follow the instructions on the screen to set up your desktop system. 100 | # If you do not understand a particular question asked by desktop-installer, 101 | # accepting the default response should be fine in most cases. 102 | ``` 103 | 104 | -------------------------------------------------------------------------------- /NetBSD/smartos-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | # 4 | # Copy and paste the lines below to install the NetBSD/amd64 set. 5 | # 6 | BOOTSTRAP_TAR="bootstrap-netbsd-trunk-x86_64-20230918.tar.gz" 7 | BOOTSTRAP_SHA="493161aa5dd4c91c99e77187fa9fc3498fd2560b" 8 | 9 | # Download the bootstrap kit to the current directory. 10 | ftp https://pkgsrc.smartos.org/packages/NetBSD/bootstrap/${BOOTSTRAP_TAR} 11 | 12 | # Verify the SHA1 checksum. 13 | echo "${BOOTSTRAP_SHA} ${BOOTSTRAP_TAR}" | sha1 -c 14 | 15 | # Verify PGP signature. This step is optional, and requires gpg. 16 | #ftp https://pkgsrc.smartos.org/packages/NetBSD/bootstrap/${BOOTSTRAP_TAR}.asc 17 | #ftp -Vo - https://pkgsrc.smartos.org/pgp/C72658C9.asc | gpg2 --import 18 | #gpg2 --verify ${BOOTSTRAP_TAR}.asc ${BOOTSTRAP_TAR} 19 | 20 | # 21 | # Remove any existing packages. Note also that the bootstrap kit will 22 | # install its own copies of the security/mozilla-rootcerts certificates 23 | # into the /etc/openssl/certs/ directory. 24 | # 25 | rm -rf /usr/pkg /var/db/pkg /var/db/pkgin 26 | 27 | # Install bootstrap kit to /usr/pkg 28 | tar -zxpf ${BOOTSTRAP_TAR} -C / 29 | 30 | cd /usr 31 | if [ -e pkgsrc ]; then 32 | printf "/usr/pkgsrc already exits. Replace? y/[n] " 33 | read install_pkgsrc 34 | else 35 | install_pkgsrc=y 36 | fi 37 | if [ 0"$install_pkgsrc" = 0y ]; then 38 | mv pkgsrc orig.pkgsrc 39 | ftp ftp://ftp.NetBSD.org/pub/pkgsrc/current/pkgsrc.tar.gz 40 | tar -zxvf pkgsrc.tar.gz -C /usr 41 | fi 42 | cd pkgsrc 43 | cvs -q up -dP || true 44 | 45 | sed -i'' -e 's|VERIFIED_INSTALLATION=always|VERIFIED_INSTALLATION=trusted|' \ 46 | /usr/pkg/etc/pkg_install.conf 47 | 48 | -------------------------------------------------------------------------------- /NetBSD/todo: -------------------------------------------------------------------------------- 1 | 2 | More on-screen instructions 3 | 4 | Password quality 5 | 6 | Suspend/resume 7 | 8 | Add NetBSD cases to auto-admin menu functions 9 | 10 | Additional wireless drivers? 11 | 12 | DRM? 13 | 14 | Software cursor? 15 | 16 | CUPS 17 | 18 | X11 forwarding 19 | 20 | Adapt to NetBSD development version and smartos.org binary packages 21 | 22 | webcam? 23 | 24 | Java/icedtea? 25 | 26 | -------------------------------------------------------------------------------- /OpenBSD/XenoDM/GiveConsole: -------------------------------------------------------------------------------- 1 | #!/bin/ksh 2 | 3 | # Set Prefix for commands used 4 | prefix="/usr/X11R6" 5 | exec_prefix="${prefix}" 6 | prefix="/usr/X11R6" 7 | exec_prefix="${prefix}" 8 | 9 | pkill wish8.6 10 | 11 | GROUP=`id -g $USER` 12 | 13 | # Pass Ownership to the user 14 | chown $USER:$GROUP /dev/console 15 | if [ -c /dev/dri/card0 ]; then 16 | chown $USER:$GROUP /dev/dri/card0 17 | fi 18 | if [ -c /dev/dri/renderD128 ]; then 19 | chown $USER:$GROUP /dev/dri/renderD128 20 | fi 21 | # Register Session to the user 22 | ${exec_prefix}/bin/sessreg -a -l $DISPLAY -u none $USER 23 | -------------------------------------------------------------------------------- /OpenBSD/XenoDM/Xsetup_0: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $Xorg: Xsetup_0,v 1.3 2000/08/17 19:54:17 cpqbld Exp $ 3 | 4 | # put me in /etc/X11/xenodm 5 | 6 | # Use OpenBSD logo as background instead default steelblue 7 | # /usr/local/bin/xsetroot -solid steelblue 8 | /usr/local/bin/feh --bg-fill /usr/local/share/pixmaps/openbsd-background.jpg 9 | 10 | # Add shutdown, reboot, restart X11 buttons 11 | # xwininfo sees multiple monitors as one big screen 12 | # Use xrandr to separate them. Assuming monitors are side-by-side, 13 | # so xwininfo is fine for height. 14 | # width=`xwininfo -root | awk '$1 == "Width:" { print $2 }'` 15 | 16 | # Uncomment these to debug 17 | # xwininfo -root > /root/xwininfo 18 | # xrandr --screen 0 > /root/xrandr 19 | 20 | height=`xwininfo -root | awk '$1 == "Height:" { print $2 }'` 21 | 22 | # First component of field containing ####x###+#+# 23 | width=`xrandr --screen 0 | grep -E '[0-9]+x[0-9]+\+[0-9]+\+[0-9]+' | awk -F x '{ print $1 }' | awk '{ print $NF }'` 24 | 25 | printf "width = $width height = $height\n" > /root/dims 26 | 27 | # Primary display could be on left or right. 3rd value in xrandr output 28 | # is the offset of the left edge of a monitor, e.g. 29 | # VGA-1 connected primary 1280x1024+1925+0 30 | left_edge=`xrandr --screen 0 | grep primary | awk '{ print $4 }' \ 31 | | awk -F [x\+] '{ print $3 }'` 32 | 33 | x=$(( $left_edge + ($width - 150) / 2 )) 34 | y=$(( ($height - 10) / 2 + 120 )) 35 | /usr/local/sbin/xenodmshutdown -geometry +$x+$y & 36 | echo $! > /var/run/xenodmshutdown.pid 37 | -------------------------------------------------------------------------------- /OpenBSD/XenoDM/openbsd-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/outpaddling/desktop-installer/05d1d01fc32b361d975168394ff46444a60decc7/OpenBSD/XenoDM/openbsd-background.jpg -------------------------------------------------------------------------------- /OpenBSD/XenoDM/xenodmshutdown: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/wish8.6 2 | 3 | # NT 20 October 2002 - adapted/copied from various similar 4 | # scripts dragged kicking and screaming from the bowels of the web:) 5 | # NT 27 January 2003 - added a reboot button 6 | # 7 | 8 | proc shutdownf {} { exec /sbin/shutdown -p now 2>/dev/console >/dev/console } 9 | 10 | proc rebootf {} { exec /sbin/shutdown -r now 2>/dev/console >/dev/console } 11 | 12 | proc restartx {} { exec /usr/sbin/rcctl restart xenodm 2>/dev/console >/dev/console } 13 | 14 | button .shutdown -text "Shutdown" -background gray -activebackground #664444 -width 15 -command shutdownf 15 | 16 | button .reboot -text "Reboot" -background gray -activebackground #446644 -width 15 -command rebootf 17 | 18 | button .restartx -text "Restart X11" -background gray -activebackground #444466 -width 15 -command restartx 19 | 20 | pack .reboot -side top 21 | pack .shutdown -side top 22 | pack .restartx -side top 23 | 24 | -------------------------------------------------------------------------------- /OpenBSD/desktop-installer: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | ########################################################################## 4 | # Description: 5 | # OpenBSD desktop-installer 6 | # 7 | # History: 8 | # Date Name Modification 9 | # 2024-06-25 izzy Meyer Begin Work on OpenBSD Support 10 | # 2024-10-21 izzy Meyer Add auto-admin functionality 11 | ########################################################################## 12 | 13 | usage() 14 | { 15 | printf "Usage: $0\n" 16 | exit 1 17 | } 18 | 19 | 20 | ########################################################################## 21 | # Function description: 22 | # Create a global Xsession file 23 | # Arguments: 24 | # 25 | # Returns: 26 | # 27 | # History: 28 | # Date Name Modification 29 | # 2024-06-25 izzy Meyer Remove COOKIE stuff from NetBSD 30 | ########################################################################## 31 | 32 | create_xsession() 33 | { 34 | if [ $# != 1 ]; then 35 | printf "Usage: create_xsession session-command\n" 36 | exit 1 37 | fi 38 | session_cmd=$1 39 | 40 | cat << EOM > $XSESSION 41 | #!/bin/sh 42 | 43 | exec $session_cmd 44 | EOM 45 | } 46 | 47 | 48 | ########################################################################## 49 | # Main 50 | ########################################################################## 51 | 52 | if [ $# != 0 ]; then 53 | usage 54 | fi 55 | 56 | cat << EOM 57 | 58 | It is best to have all installed packages up-to-date before installing 59 | more packages, in case not every dependency version is checked 60 | correctly. 61 | 62 | If you have updated recently using pkg_add -u, then you can skip 63 | this step now. 64 | 65 | EOM 66 | printf "Update installed packages? [y]/n " 67 | read update 68 | if [ 0"$update" != 0n ]; then 69 | pkg_add -u 70 | fi 71 | 72 | # Should have been installed as a dep, but just in case 73 | pkg_add dbus avahi git gmake xz feh tk--%8.6 consolekit2 74 | 75 | cat << EOM 76 | 77 | 1.. FVWM (OpenBSD default) 78 | 2.. CWM (OpenBSD alternate) 79 | 3.. LXQT 80 | 4.. MATE 81 | 5.. XFCE 82 | 6.. Custom 83 | 84 | EOM 85 | printf "Selection? " 86 | read de_num 87 | 88 | XSESSION=/etc/X11/xenodm/Xsession 89 | 90 | de='unknown' 91 | case $de_num in 92 | 1) 93 | pkg_add xscreensaver 94 | create_xsession fvwm 95 | ;; 96 | 97 | 2) 98 | pkg_add xscreensaver 99 | create_xsession cwm 100 | ;; 101 | 102 | 3) 103 | # Install separately so user sees error messages 104 | for pkg in evince--light lxqt lxqt-extras; do 105 | pkg_add $pkg 106 | done 107 | create_xsession startlxqt 108 | ;; 109 | 110 | 4) 111 | # Install separately so user sees error messages 112 | for pkg in evince--light mate mate-extras; do 113 | pkg_add $pkg 114 | done 115 | create_xsession "ck-launch-session mate-session" 116 | ;; 117 | 118 | 5) 119 | # Install separately so user sees error messages 120 | for pkg in evince--light xfce xfce-extras; do 121 | pkg_add $pkg 122 | done 123 | create_xsession xfce4-session 124 | ;; 125 | 126 | 6) 127 | printf "Package name? (Use pkg_info -Q to verify) " 128 | read package 129 | printf "Session command? (Use pkg_info -M & the pkg-readme at /usr/local/share/doc/pkg-readmes to verify) " 130 | read session_cmd 131 | 132 | for pkg in xscreensaver $package; do 133 | pkg_add $pkg 134 | done 135 | create_xsession $session_cmd 136 | ;; 137 | 138 | *) 139 | printf "Invalid selection.\n" 140 | exit 1 141 | ;; 142 | 143 | esac 144 | 145 | ########################################################################## 146 | # From Guide 147 | ########################################################################## 148 | 149 | # Enable multicast (cannot be done with auto-enable-service as this is an option, not a service) 150 | rcctl enable multicast 151 | # Enable dbus rc service 152 | auto-enable-service messagebus $0 153 | # Enable avahi (needed for network mounts, trash://, and computer://) 154 | auto-enable-service avahi_daemon $0 155 | # Order them in the right order as avahi_daemon needs dbus running to work 156 | rcctl order messagebus avahi_daemon 157 | 158 | 159 | printf "Enable apm power manager daemon? (useful on laptops) [y]/n " 160 | read apm 161 | if [ 0"apm" != 0n ]; then 162 | auto-enable-service apmd $0 163 | fi 164 | 165 | # Enhanced XDM with background and restart/shutdown/restart-x11 buttons 166 | auto-replace-file /usr/local/share/desktop-installer/XenoDM/Xsetup_0 /etc/X11/xenodm/Xsetup_0 167 | auto-replace-file /usr/local/share/desktop-installer/XenoDM/GiveConsole /etc/X11/xenodm/GiveConsole 168 | 169 | cat << EOM 170 | 171 | Enabling XenoDM will cause the screen to switch to graphics mode. 172 | 173 | If you are running desktop-installer on the primary text console, 174 | you can return to the text console by typing Ctrl+Alt+F1 on most 175 | systems (or Meta-key + F1 under VirtualBox). 176 | 177 | EOM 178 | # Offer to enable xenodm if not already running 179 | if ! pgrep bin/xenodm; then 180 | printf "Enable XenoDM graphical login? [y]/n " 181 | read xenodm 182 | if [ 0"$xenodm" != 0n ]; then 183 | auto-enable-service xenodm $0 184 | fi 185 | fi 186 | 187 | for app in firefox thunderbird keepassxc; do 188 | if ! auto-package-installed $app; then 189 | printf "Install $app? y/[n] " 190 | read install 191 | if [ 0"$install" = 0y ]; then 192 | apps="$apps ${app}" 193 | fi 194 | fi 195 | done 196 | if [ ! -z "$apps" ]; then 197 | pkg_add $apps 198 | fi 199 | -------------------------------------------------------------------------------- /OpenBSD/desktop-installer.man: -------------------------------------------------------------------------------- 1 | .TH desktop-installer 1 2 | .SH NAME \" Section header 3 | .PP 4 | desktop-installer \- Quickly configure a OpenBSD desktop system 5 | 6 | \" Convention: 7 | \" Underline anything that is typed verbatim - commands, etc. 8 | 9 | .SH SYNOPSIS 10 | .PP 11 | .nf 12 | .na 13 | desktop-installer 14 | .ad 15 | .fi 16 | 17 | .SH "DESCRIPTION" 18 | 19 | The OpenBSD desktop configuration process requires installing many 20 | packages and configuring many different subsystems, which can be a 21 | daunting task for all but the most seasoned users. 22 | 23 | The 24 | .B desktop-installer 25 | script automates the process of configuring a OpenBSD machine as a desktop 26 | system running any desktop environment or simple window manager in the 27 | pkgsrc tree. Several of the most popular desktops are 28 | explicitly supported and any other can be configured using the "Custom" 29 | option. 30 | 31 | To use "Custom", you need only know the category/packagename of the desktop you 32 | want, and the command for starting the desktop from xinit or xsession, 33 | e.g. xfce4-session for the XFCE desktop. This command can be found 34 | in category/packagename/pkg-plist. The only other advantage to explicitly 35 | supported desktops is automatic installation of a few common utilities. 36 | You can easily install the utilities 37 | you want using "pkg_add" after a Custom desktop install. 38 | 39 | .B Desktop-installer 40 | is a post-install script, i.e. one that you run AFTER doing a standard 41 | operating system and booting the new installation for the first time. 42 | ( See details below. ) 43 | 44 | .B Desktop-installer 45 | installs all the software necessary for the chosen desktop 46 | as well as common desktop-independent packages such as CUPS, Firefox, 47 | LibreOffice.org, etc. 48 | 49 | .SH "MOTIVATION" 50 | 51 | This script is meant to provide a middle-ground between totally manual 52 | configuration and complete distributions such as GhostBSD or Ubuntu Linux. 53 | 54 | The post-install script approach has some advantages over complete 55 | distributions. The post-install script itself is far easier to maintain and 56 | unlike separate distributions, the resulting desktop system is a 57 | nearly pristine OpenBSD system with minimal differences from the default 58 | install. The system can therefore be maintained and upgraded using 59 | traditional OpenBSD command-line tools (pkg_add, useradd, sysupgrade, 60 | etc.), or stock tools of the chosen desktop suite. 61 | 62 | .SH "BASIC USE" 63 | 64 | To use 65 | .B desktop-installer: 66 | 67 | 1. Install a basic OpenBSD system. 68 | 69 | The recommended install options are a basic user system including: 70 | 71 | .nf 72 | .na 73 | All binaries 74 | Docs in your preferred language(s) 75 | Source code 76 | .ad 77 | .fi 78 | 79 | It is best to use 80 | .B desktop-installer 81 | on a pristine OpenBSD installation. 82 | 83 | .B Desktop-installer 84 | can also be used to upgrade all the software on an existing system, but there 85 | are too many possibilities for failure to support here since it is impossible 86 | to predict what kinds of system hacks it might encounter. Also, it's generally 87 | a good idea to back up your data, wipe your disk clean, and reinstall 88 | everything every few years, since data on magnetic disks can fall victim 89 | to "bit rot" (magnetic polarity fades over time) 90 | and read errors will eventually occur. 91 | 92 | .B Desktop-installer 93 | can install software from source or from binary packages (pkgin install). 94 | Binary packages install much faster (seconds per package, vs minutes or 95 | hours per package built from source). However, installing from source 96 | allows you 97 | to install on systems for which binary packages are not maintained. 98 | 99 | If you enjoy a simple life, install a -RELEASE or -STABLE version rather 100 | than -CURRENT. If you would like to help the project move forward by 101 | testing the latest changes, run -CURRENT. 102 | 103 | If you do not choose to install software from source, 104 | .B desktop-installer 105 | installs most packages over the network using "pkg_add". 106 | 107 | 2. Install desktop-installer: 108 | 109 | pkg_add desktop-installer 110 | 111 | 3. Run desktop-installer: 112 | 113 | desktop-installer 114 | 115 | .SH AUTHOR 116 | .nf 117 | .na 118 | J. Bacon 119 | Acadix Consulting, LLC -------------------------------------------------------------------------------- /OpenBSD/getting-started.md: -------------------------------------------------------------------------------- 1 | # Getting started on OpenBSD 2 | 3 | ## To-dos for improving the OpenBSD desktop experience 4 | 5 | - Improvements to desktop-environment packages (LXQT, Mate, etc.) 6 | - Inclusion of auto-media-format from the other BSDs (sysutils/auto-admin) 7 | - Qmediamanager 8 | - Openbsd-update-notify (port freebsd-update-notify) 9 | - Add more configuration options to desktop-installer 10 | - Binary updates / security patches for the OpenBSD base system 11 | - Optimization to `sysctl.conf` & other tweaks (maybe?) 12 | 13 | ## System requirements 14 | 15 | - 1 GiB RAM minimum 16 | - More if building large packages like gcc, clang 17 | - More if running Gnome or KDE 18 | - Minimum 30 GB disk space in /usr/local 19 | - If running under VirtualBox: 20 | - Download the OpenBSD installer ISO image from 21 | [https://openbsd.org](https://openbsd.org). 22 | - Set pointing device to USB tablet. 23 | - Caution: Some OpenBSD users have reported problems when using 24 | dynamically allocated disk images. 25 | - Caution: Some users have reported trouble with I/O APIC. 26 | If you encounter problems, try disabling it under System Settings. 27 | - 2 or more cores will improve performance, but this has been known 28 | to cause system freezes in some cases. 29 | - The paravirtualized network driver may offer the best performance. 30 | - Boot order: Hard Disk first, then Optical (This will cause the 31 | VM to boot from the ISO image before install and the hard disk after.) 32 | - Load the ISO image into the virtual optical drive under Storage. 33 | 34 | ## Post-installation 35 | 36 | When adding new users via adduser(8) or auto-adduser(8), note that 37 | placing them in the "staff" login class provides higher resource limits. 38 | See login.conf(5) for details. Note also that auto-adduser(8) provides 39 | more guidance on user account parameters than the native adduser(8) command, 40 | though both provide the opportunity to assign a login class. 41 | 42 | Do the following as the root user: 43 | 44 | ``` 45 | pkg_add -u 46 | pkg_add desktop-installer 47 | desktop-installer 48 | 49 | # Follow the instructions on the screen to set up your desktop system. 50 | # If you do not understand a particular question asked by desktop-installer, 51 | # accepting the default response should be fine in most cases. 52 | ``` 53 | -------------------------------------------------------------------------------- /Plugins/Asus/desktop-installer-eeepc-1015pe: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | 4 | 5 | ########################################################################## 6 | # Add a line to a system file if string is not already present. 7 | ########################################################################## 8 | 9 | add_line() 10 | { 11 | if [ $# != 3 ]; then 12 | printf "Usage: $0 search-string line file\n" 13 | exit 1 14 | fi 15 | string=$1 16 | line=$2 17 | file=$3 18 | if ! fgrep -q $string $file; then 19 | printf "# Added by desktop-installer\n" >> $file 20 | printf "$line\n" >> $file 21 | fi 22 | } 23 | 24 | hyperthreading() 25 | { 26 | cat << EOM 27 | 28 | Intel Hyperthreading can cause suspend/resume to fail, among other 29 | problems. 30 | 31 | EOM 32 | printf "Disable hyperthreading? (y/n) " 33 | read resp 34 | if [ 0$resp = 0'y' ]; then 35 | add_line machdep.hyperthreading 'machdep.hyperthreading_allowed="0"' /boot/loader.conf 36 | fi 37 | } 38 | 39 | cat << EOM 40 | As of October 2011, ACPI features on the ASUS EEEPC are still experimental. 41 | Are you sure you want to continue? (y/n) 42 | EOM 43 | read resp 44 | if [ 0$resp != 0y ]; then 45 | exit 46 | fi 47 | 48 | # Cut power drain in suspend mode 49 | # Value is 1 (least aggressive) to 3 (most aggressive) 50 | add_line acpi_video 'acpi_video_load="YES"' /boot/loader.conf 51 | add_line do_power_nodriver 'hw.pci.do_power_nodriver=1' /boot/loader.conf 52 | # Restore video on resume 53 | add_line reset_video 'hw.acpi.reset_video=1' /etc/sysctl.conf 54 | add_line sleep_button_state 'hw.acpi.sleep_button_state=S3' /etc/sysctl.conf 55 | 56 | # FIXME: Some of this is not related to power 57 | if fgrep -q '_ASUS_ Notebook' /var/run/dmesg.boot; then 58 | # acpi_asus is still in development as of Oct 2011 and does not 59 | # work properly on 9.0-BETA3 60 | add_line acpi_asus 'acpi_asus_load="YES"' /boot/loader.conf 61 | if ! fgrep -q 'hw.acpi.asus.lcd_brightness' /etc/rc.resume; then 62 | sed -i 'orig' -E 's|exit 0|# Added by desktop-installer \ 63 | sysctl hw.acpi.asus.lcd_brightness=8 \ 64 | \ 65 | exit 0|g' /etc/rc.resume 66 | fi 67 | # Not sure if this is necessary 68 | # add_line hint.psm.0.flags 'hint.psm.0.flags="0x2000"' /boot/device.hints 69 | add_line hw.psm.synaptics_support 'hw.psm.synaptics_support=1' /boot/loader.conf 70 | hyperthreading 71 | else 72 | printf "This does not appear to be an ASUS laptop. Aborting...\n" 73 | exit 1 74 | fi 75 | 76 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | desktop-installer 2 | ================= 3 | 4 | Desktop-installer is a post-install script for configuring a desktop 5 | environment on a stock FreeBSD, NetBSD, or OpenBSD system. 6 | 7 | It facilitates the setup of a complete desktop system much more quickly, 8 | reliably, and securely than manual software installations and configurations. 9 | 10 | The end result is a fully functional 11 | graphical environment comparable to GUI-based systems such as 12 | GhostBSD or Ubuntu Linux. However, unlike those systems, desktop-installer 13 | supports *any* desktop environment or window manager provided by the 14 | native package manager and *any* hardware 15 | supported by the operating system. 16 | 17 | To use desktop-installer: 18 | 19 | 1. Perform a minimal FreeBSD, NetBSD, or OpenBSD installation using the 20 | standard installer 21 | 2. Install the desktop-installer package: 22 | 23 | FreeBSD: pkg install desktop-installer 24 | 25 | NetBSD: pkgin install desktop-installer 26 | 27 | OpenBSD: Package currently under development 28 | 29 | 3. Run "desktop-installer" 30 | 4. Carefully follow the instructions on the screen 31 | 32 | For more information, see http://acadix.biz/desktop-installer.php. 33 | -------------------------------------------------------------------------------- /Scripts/battery-shutdown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ########################################################################## 4 | # Description 5 | # Auto-shutdown on low battery. 6 | # 7 | # History 8 | # Date Who Change 9 | # Dec 2010 J Bacon Derived from script by DutchDaemon 10 | # Jul 2023 J Bacon Add zenity messages 11 | ########################################################################## 12 | 13 | # Important remaining run times 14 | critical_time=5 15 | warning_time=15 16 | low_time=30 17 | low_percent=40 18 | high_percent=80 19 | 20 | # Start high to detect first drop 21 | time=1000 # For previous_time if plugged in 22 | 23 | previous_data=/root/.battery_data 24 | 25 | if [ -e $previous_data ]; then 26 | previous_percent=$(awk '{ print $1 }' $previous_data) 27 | previous_time=$(awk '{ print $2 }' $previous_data) 28 | else 29 | previous_percent=101 30 | previous_time=1000 31 | fi 32 | 33 | time=$( /sbin/sysctl -n hw.acpi.battery.time ) 34 | percent=$( /sbin/sysctl -n hw.acpi.battery.life ) 35 | 36 | printf "Previous percent = $previous_percent\n" 37 | printf "Previous time = $previous_time\n" 38 | printf "Current percent = $percent\n" 39 | printf "Current time = $time\n" 40 | 41 | ac_power=$( /sbin/sysctl -n hw.acpi.acline ) 42 | printf "ac_power = $ac_power\n" 43 | 44 | display_users=$(ps -aexwwj | grep "DISPLAY=$DISPLAY_ID" | awk '{ print $1 }' | sort -u) 45 | 46 | # Make sure root can access the local display 47 | # NetBSD laptop, quagga 48 | for user in $display_users; do 49 | # Don't try to su to users with nologin as shell 50 | # Not sure why they would have DISPLAY set, but a user reported this issue 51 | if ! awk -F : -v user=$user '$1 == user { print $7 }' /etc/passwd | fgrep nologin; then 52 | # echo Trying $user... 53 | su -l $user -c 'env DISPLAY=:0 xhost +local:root' > /dev/null || true 54 | fi 55 | done 56 | 57 | if [ $ac_power = 0 ]; then 58 | if [ $time -ge 0 ]; then 59 | if [ $time -le $critical_time ]; then 60 | printf "Battery down to $critical_time minutes $(date)\n" 61 | 62 | # Recheck for external power before shutting down 63 | ac_power=$( /sbin/sysctl -n hw.acpi.acline ) 64 | if [ $ac_power = 0 ]; then 65 | /sbin/shutdown -p now 66 | fi 67 | elif [ $time -le $warning_time ]; then 68 | printf "Battery down to $warning_time minutes $(date)\n" 69 | for user in $display_users; do 70 | if su -l $user -c "zenity --display=:0 --warning --text='Battery run time is very low.\nThe computer will be shut down\nsoon to prevent battery damage.' &" > /dev/null; then 71 | break 72 | fi 73 | done 74 | # Only show this warning once, when crossing the boundary 75 | elif [ $previous_time -gt $low_time ] && \ 76 | [ $time -le $low_time ]; then 77 | printf "Battery down to $low_time minutes $(date)\n" 78 | for user in $display_users; do 79 | if su -l $user -c "zenity --display=:0 --warning --text='Battery run time is getting low.\nConsider plugging in.' &" > /dev/null; then 80 | break 81 | fi 82 | done 83 | fi 84 | fi 85 | 86 | # Only show this warning once, when crossing the boundary 87 | if [ $previous_percent -gt $low_percent ] && \ 88 | [ $percent -le $low_percent ]; then 89 | printf "Battery down to $low_percent% $(date)\n" 90 | for user in $display_users; do 91 | if su -l $user -c "zenity --display=:0 --warning --text='Battery has dropped to $low_percent% charge.\nKeeping the charge of a Lithium battery between\n$low_percent% and $high_percent% will extend its life.\nNow would be a good time to plug in.' &" > /dev/null; then 92 | break 93 | fi 94 | done 95 | fi 96 | else 97 | # Only show this warning once, when crossing the boundary 98 | if [ $previous_percent -lt $high_percent ] && \ 99 | [ $percent -ge $high_percent ]; then 100 | printf "Battery up to $high_percent%% $(date)\n" 101 | for user in $display_users; do 102 | if su -l $user -c "zenity --display=:0 --warning --text='Battery has reached $high_percent% charge.\nKeeping the charge of a Lithium battery between\n$low_percent% and $high_percent% will extend its life.\nUnplugging now may help your battery last longer.' &" > /dev/null; then 103 | break 104 | fi 105 | done 106 | fi 107 | fi 108 | printf "Saving previous values to $previous_data...\n" 109 | printf "$percent $time\n" > $previous_data 110 | -------------------------------------------------------------------------------- /WIP/40-virtualbox.conf: -------------------------------------------------------------------------------- 1 | Section "Monitor" 2 | Identifier "VirtualBox-Monitor" 3 | VendorName "VirtualBox" 4 | ModelName "VirtualBox" 5 | HorizSync 30.0 - 120.0 6 | VertRefresh 50.0 - 100.0 7 | EndSection 8 | 9 | # Not all modes work with vboxsvga 10 | Section "Screen" 11 | Identifier "VirtualBox" 12 | Device "VirtualBox graphics card" 13 | Monitor "VirtualBox-Monitor" 14 | DefaultDepth 24 15 | SubSection "Display" 16 | Depth 24 17 | Modes "1366x768" "1152x864" "1280x800" "1024x768" 18 | EndSubSection 19 | EndSection 20 | -------------------------------------------------------------------------------- /WIP/desktop-menu: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | exec 3>&1 4 | desktop=`dialog --menu "Select a Desktop Environment" 0 0 0 \ 5 | NONE "No desktop environment. I will install my own later." \ 6 | Gnome "Gnome 3 Desktop Environment" \ 7 | KDE "K Desktop Environment (heavy)" \ 8 | Lumina "Lumina lightweight desktop" \ 9 | LXDE "Lightweight X11 Desktop Environment" \ 10 | LXQT "Lightweight QT Desktop Environment" \ 11 | MATE "Fork of Gnome 2" \ 12 | 2>&1 1>&3` 13 | 14 | printf "Desktop = $desktop\n" 15 | -------------------------------------------------------------------------------- /notes: -------------------------------------------------------------------------------- 1 | 2 | timecounter issue with VirtualBox guest 3 | kern.timecounter.hardware=i8254 4 | http://alastair.d-silva.org/time-running-slow-freebsd-x64-guest-under-virtualbox 5 | 6 | Uncomment application/octet-stream line in cups/mime.convs to allow printing from Mac 7 | -------------------------------------------------------------------------------- /rock64.md: -------------------------------------------------------------------------------- 1 | # FreeBSD and ARM-based Single Board Computers 2 | 3 | Desktop-installer has preliminary support for ARM-based single board 4 | computers (SBCs), though much work remains to be done before they are viable 5 | for everyday use. As of June, 2021, the vast majority of FreeBSD ports 6 | are building successfully on aarch64, though a few key packages still need to 7 | be fixed to enable popular desktop environments and applications. We are 8 | also awaiting infrastructure improvements to speed up the package build cycle 9 | for aarch64. 10 | 11 | The $200 [PINEBOOK Pro](https://www.pine64.org/pinebook-pro/) looks very 12 | promising as a low-cost laptop capable of competing with x86-based PCs. 13 | The [ROCKPro 64](https://www.pine64.org/rockpro64) is an equivalent SBC that 14 | can be configured as a desktop system. Unfortunately, both are out of stock 15 | at present due to a global parts shortage. 16 | 17 | If you would like to experiment or contribute in the meantime, the 18 | [ROCK64](https://www.pine64.org/devices/single-board-computers/rock64/) 19 | is very inexpensive and powerful enough for many typical uses, 20 | with up to 4 GiB RAM and 4 1.5 GHz cores. It can boot from a microSD card 21 | and also accommodate an eMMC module via a bus connector on top of the board. 22 | 23 | FreeBSD provides two ways to install on ARM-based 24 | SBCs. If your SBC can boot from USB, you can load one of the USB images 25 | onto a USB stick and install from it as you would an x86-based PC. Some SBCs 26 | don't support this and others may require some configuration to enable 27 | USB boot. 28 | 29 | FreeBSD also provides pre-built images for popular SBCs such as Raspberry-Pi 30 | and ROCK64. These images can be loaded onto the bootable media supported by 31 | your SBC, typically a micro-SD card. You will need another computer with an 32 | SD slot and probably an appropriate adapter (e.g. SD to microSD), or a USB 33 | microSD card reader. 34 | 35 | ## Using a pre-built image to install on ROCK64 36 | 37 | Download pre-built image if available, e.g. 38 | FreeBSD-13.0-RELEASE-arm64-aarch64-ROCK64.img.xz 39 | from, e.g. http://ftp9.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/13.0/ 40 | 41 | See https://wiki.freebsd.org/arm/RockChip for tips 42 | 43 | Uncompress: 44 | 45 | ```unxz FreeBSD-13.0-RELEASE-arm64-aarch64-ROCK64.img.xz``` 46 | 47 | Copy the uncompressed image to the microSD card, e.g. using dd: 48 | 49 | 1. Insert microSD into slot or adapter 50 | 51 | 2. Find out what device name has been assigned to it, e.g. /dev/da0: 52 | 53 | ```dmesg``` 54 | 55 | 3. Copy the uncompressed image to the device: 56 | 57 | ```dd if=FreeBSD-13.0-RELEASE-arm64-aarch64-ROCK64.img of=/dev/da0 bs=4096 status=progress``` 58 | 59 | (bs = 4096 is just to speed things up over the default 512) 60 | 61 | 4. Insert microSD into ROCK64 62 | 63 | As of June, 2021, the ROCK64 HDMI port does not work with FreeBSD, so you 64 | cannot just connect a monitor and keyboard and be on your way. Support is 65 | in the works. HDMI and X11 apparently work on the ROCKPro64, but these 66 | devices are currently hard to find. 67 | 68 | There are 2 ways around this: 69 | 70 | 1. Connect a serial adapter to the GPIO 71 | 72 | This will require some wiring from the GPIO pins on the board to a 73 | serial cable or more likely, a serial-USB adapter. Most modern computers 74 | don't have serial ports, so you'll need a serial-USB adapter to connect 75 | from your computer to the SBC. Not all serial-USB adapters are supported 76 | by FreeBSD. 77 | 78 | See https://wiki.freebsd.org/arm/RockChip for recommendations. 79 | 80 | 2. Boot headless with an Ethernet connection and ssh in 81 | 82 | 1. Connect the ROCK64 to your network with an Ethernet cable 83 | 2. Power on 84 | 3. Wait a minute or so for boot to complete 85 | 4. Most routers have an "attached devices" page on their web interface. 86 | At the time of this writing, the ROCK64 image reports its hostname as 87 | "generic". Find this in the attached devices list and note the IP 88 | address. If this has changed, you can always unplug the Ethernet cable 89 | and refresh the web page. Whatever host disappear is your ROCK64. 90 | 5. From another machine, run "ssh freebsd@ip-address" 91 | 6. Enter "yes" if asked to verify the new ssh destination 92 | 7. Enter "freebsd" as the password. 93 | 8. Run "passwd" to change the default password. 94 | 9. Run "su" and enter "root" as the password. 95 | 10. Run "passwd" to change the default password for root. 96 | 97 | ## Configure swap space 98 | 99 | The FreeBSD pre-built image has no swap space configured, so your processes 100 | will be limited to physical RAM by default. Given that the ROCK64 has at 101 | most 4 GiB RAM, this could prove very limiting. 102 | 103 | If you only have a microSD card, swapping will be extremely slow. MST-Bench 104 | on my ROCK64 microSD showed average write throughput of about 6 MB/s and 105 | read throughput of 24 MB/s. A modern mechanical disk will provide over 106 | 100 MB/s both read and write, while a eMMC or SSD will typically provide 107 | at least 200 MB/s write and 500 MB/s read, possibly much more. 108 | 109 | Swap on a microSD might suffice for interactive processes that sleep most of 110 | the time, such as a word 111 | processor, but anything computationally intensive will suffer extreme 112 | slow-downs if it has to swap to a microSD. 113 | 114 | An eMMC module is very fast, on the other hand, and adding a swap file on 115 | the eMMC device can extend your memory space with reasonable performance 116 | for most tasks. 117 | -------------------------------------------------------------------------------- /todo: -------------------------------------------------------------------------------- 1 | 2 | Use asmc and ataidle to park heads when laptop is moved 3 | 4 | Portable, desktop-independent battery monitor 5 | Run minimized, show % and time remaining 6 | Popup warnings for low battery 7 | Auto-shutdown for very low battery 8 | Probably a Qt app, see qmediamanager for a model 9 | 10 | Add auto-update-system cron config 11 | 12 | https://forums.freebsd.org/threads/macbook-pro-5-1-realtek-alc889a-sound-setup.56061/ 13 | 14 | Maybe enable speakers and headphone auto-switch? 15 | 16 | dev.hdaa.0.gpio_config="0=set 1=set" 17 | hw.snd.default_unit=1 18 | hint.hdaa.0.nid20.config="as=4 seq=15" 19 | 20 | Make sure /etc/hosts has a fqdn matching the hostname 21 | 22 | 127.0.0.1 localhost.localhost.domain hostname.domain hostname 23 | same for ::1 24 | 25 | List additional video drivers to install 26 | Server motherboards often have obsolete chipsets 27 | 28 | Explain need for wireless drivers 29 | 30 | Install anacron? 31 | one suggestion from vans9@yandex.ru 32 | 33 | I've meant those periodic tasks that are already in /etc/crontab - daily, 34 | weekly, monthly. They seem to run almost never at desktops, that work on 35 | daily basis and are switched off at evening. But. the other side of 36 | enabling the the periodic through anacron is that roots mail will be 37 | spammed with the periodic reports. To avoid this, there shoud be line 38 | in periodic.conf making periodic to write it's repots to file, and 39 | syslod-ng rotating this files and maybe other things should be done..... 40 | So it's an overtask for the desktop-installer possibly. 41 | 42 | Linimon: 43 | 44 | There are several structural problems: 45 | 46 | 2) the assumption that any port/pkg install failure is fatal. 47 | 3) the lack of correctly determining whether a pkg is available 48 | to install. 49 | 50 | ------------------------------------------------------------------ 51 | 52 | 3) is illustrated by the following: 53 | 54 | if fgrep -q FOR_ARCHS $PORTSDIR/$pkg/Makefile 55 | 56 | Nope and nope. Completely bogus test. If you *are* going to 57 | query port Makefiles the only robust thing is something like: 58 | 59 | (cd $PORTSDIR/$pkg/Makefile && make ARCH=$arch -V IGNORE) 60 | 61 | For only thing, I already shortened ONLY_FOR_ARCHS to FOR_ARCHS. 62 | But that is still not correct. 63 | 64 | ------------------------------------------------------------------ 65 | 66 | But that's the correct way for _ports_. 67 | 68 | For _packages_, which IMVVHO we should in all cases set as default 69 | for users of this script, every possible port install: 70 | 71 | if ! auto-package-installed $pkg && [ -d $PORTSDIR/$pkg ]; then 72 | 73 | should be immediately followed by something like: 74 | 75 | rdescr=$(pkg rquery %e $pkg 2> /dev/null || true) 76 | if [ -z "${rdescr}" ]; then 77 | printf "Unfortunately, recommended package $pkg is not available for your system.\n" 78 | else 79 | 80 | I can generate a patch for the ones in common_packages(). But it 81 | might be better as a refactoring of install_packages. 82 | 83 | I will wait to try that hacking until you say one way or the other. 84 | 85 | ------------------------------------------------------------------ 86 | 87 | --------------------------------------------------------------------------------