Moving toward working gui installation.
This commit is contained in:
@@ -25,7 +25,8 @@ Architecture = auto
|
|||||||
#IgnorePkg =
|
#IgnorePkg =
|
||||||
#IgnoreGroup =
|
#IgnoreGroup =
|
||||||
|
|
||||||
#NoUpgrade =
|
# Protect Stormux custom skel files from being overwritten by package updates
|
||||||
|
NoUpgrade = etc/skel/.bashrc etc/skel/.inputrc etc/skel/.screenrc etc/skel/.vimrc etc/skel/.vim/*
|
||||||
#NoExtract =
|
#NoExtract =
|
||||||
|
|
||||||
# Misc options
|
# Misc options
|
||||||
|
|||||||
43
x86_64/airootfs/etc/skel.stormux/.bashrc
Normal file
43
x86_64/airootfs/etc/skel.stormux/.bashrc
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#
|
||||||
|
# ~/.bashrc
|
||||||
|
#
|
||||||
|
|
||||||
|
# If not running interactively, don't do anything
|
||||||
|
[[ $- != *i* ]] && return
|
||||||
|
|
||||||
|
# Change directories without using cd
|
||||||
|
shopt -s autocd
|
||||||
|
|
||||||
|
# Load aliases and functions if they exist
|
||||||
|
[[ -f "$HOME/.bash_aliases" ]] && . "$HOME/.bash_aliases"
|
||||||
|
[[ -f "$HOME/.bash_functions" ]] && . "$HOME/.bash_functions"
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
export QT_ACCESSIBILITY=1
|
||||||
|
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
||||||
|
|
||||||
|
# Set prompt
|
||||||
|
PS1='[\u@\h \W] \$ '
|
||||||
|
|
||||||
|
# Dialog accessibility options
|
||||||
|
export DIALOGOPTS='--no-lines --visit-items'
|
||||||
|
|
||||||
|
# Browser selection based on environment
|
||||||
|
if [[ -z "$DISPLAY" ]]; then
|
||||||
|
export BROWSER=w3m
|
||||||
|
fi
|
||||||
|
|
||||||
|
# GPG TTY
|
||||||
|
GPG_TTY=$(tty)
|
||||||
|
export GPG_TTY
|
||||||
|
|
||||||
|
# Don't put commands prefixed with space, or duplicate commands in history
|
||||||
|
export HISTCONTROL=ignoreboth
|
||||||
|
|
||||||
|
# Increase history size
|
||||||
|
export HISTSIZE=10000
|
||||||
|
export HISTFILESIZE=20000
|
||||||
|
|
||||||
|
# Add user's local bin directories to PATH
|
||||||
|
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
|
||||||
|
export PATH
|
||||||
25
x86_64/airootfs/etc/skel.stormux/.inputrc
Normal file
25
x86_64/airootfs/etc/skel.stormux/.inputrc
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# ~/.inputrc
|
||||||
|
# Readline configuration for bash
|
||||||
|
# Reload changes with control+x followed by control+r
|
||||||
|
|
||||||
|
# Don't echo control characters
|
||||||
|
set echo-control-characters off
|
||||||
|
|
||||||
|
# History searching with up and down arrows
|
||||||
|
"\e[A": history-search-backward
|
||||||
|
"\e[B": history-search-forward
|
||||||
|
|
||||||
|
# Shift+Tab sequences for console (backward menu completion)
|
||||||
|
"\e[Z": menu-complete-backward
|
||||||
|
"\eZ": menu-complete-backward
|
||||||
|
# Alt+comma as alternative
|
||||||
|
"\e,": menu-complete-backward
|
||||||
|
|
||||||
|
# Music player keybindings (requires playerctl)
|
||||||
|
"\eX": "\C-k \C-u playerctl play\C-M"
|
||||||
|
"\eC": "\C-k \C-u playerctl play-pause\C-M"
|
||||||
|
"\eV": "\C-k \C-u playerctl stop\C-M"
|
||||||
|
"\eB": "\C-k \C-u playerctl next\C-M"
|
||||||
|
"\eU": "\C-k \C-u playerctl metadata -f '{{artist}} - {{album}} - {{title}}'\C-M"
|
||||||
|
"\e_": "\C-k \C-u playerctl volume 0.05-\C-M"
|
||||||
|
"\e+": "\C-k \C-u playerctl volume 0.05+\C-M"
|
||||||
33
x86_64/airootfs/etc/skel.stormux/.screenrc
Normal file
33
x86_64/airootfs/etc/skel.stormux/.screenrc
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# ~/.screenrc
|
||||||
|
# GNU Screen configuration
|
||||||
|
|
||||||
|
# Disable visual bell
|
||||||
|
vbell off
|
||||||
|
bell_msg ""
|
||||||
|
|
||||||
|
# Disable hardstatus
|
||||||
|
hardstatus off
|
||||||
|
|
||||||
|
# Disable startup message
|
||||||
|
startup_message off
|
||||||
|
|
||||||
|
# Set scrollback buffer size
|
||||||
|
defscrollback 4096
|
||||||
|
|
||||||
|
# Extended window numbering (0-19 instead of 0-9)
|
||||||
|
bind ! select 10
|
||||||
|
bind @ select 11
|
||||||
|
bind \# select 12
|
||||||
|
bind $ select 13
|
||||||
|
bind % select 14
|
||||||
|
bind ^ select 15
|
||||||
|
bind & select 16
|
||||||
|
bind * select 17
|
||||||
|
bind ( select 18
|
||||||
|
bind ) select 19
|
||||||
|
|
||||||
|
# Copy buffer to system clipboard (requires xclip)
|
||||||
|
bind b eval "writebuf" 'exec !!! xclip -selection "clipboard" -i /tmp/screen-exchange'
|
||||||
|
|
||||||
|
# Disable alternate screen switching (allows scrollback in terminal)
|
||||||
|
termcapinfo xterm* ti@:te@
|
||||||
29
x86_64/airootfs/etc/skel.stormux/.vim/dates.vim
Normal file
29
x86_64/airootfs/etc/skel.stormux/.vim/dates.vim
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
" Date and time insertion functions
|
||||||
|
|
||||||
|
" Insert current date in format: Wednesday, January 15, 2025
|
||||||
|
function! InsertDate()
|
||||||
|
let date_string = strftime("%A, %B %d, %Y")
|
||||||
|
execute "normal! a" . date_string
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Insert current time in format: 09:15PM
|
||||||
|
function! InsertTime()
|
||||||
|
let time_string = strftime("%I:%M%p")
|
||||||
|
execute "normal! a" . time_string
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Insert current date and time in format: Wednesday, January 15, 2025, 09:15PM
|
||||||
|
function! InsertDateTime()
|
||||||
|
let datetime_string = strftime("%A, %B %d, %Y, %I:%M%p")
|
||||||
|
execute "normal! a" . datetime_string
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Key mappings
|
||||||
|
nnoremap <leader>date :call InsertDate()<CR>
|
||||||
|
inoremap <leader>date <C-o>:call InsertDate()<CR>
|
||||||
|
|
||||||
|
nnoremap <leader>time :call InsertTime()<CR>
|
||||||
|
inoremap <leader>time <C-o>:call InsertTime()<CR>
|
||||||
|
|
||||||
|
nnoremap <leader>datetime :call InsertDateTime()<CR>
|
||||||
|
inoremap <leader>datetime <C-o>:call InsertDateTime()<CR>
|
||||||
39
x86_64/airootfs/etc/skel.stormux/.vim/emoji.vim
Normal file
39
x86_64/airootfs/etc/skel.stormux/.vim/emoji.vim
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
" Emoji insertion mappings
|
||||||
|
|
||||||
|
" Basic expressions
|
||||||
|
inoremap ,:) 😊
|
||||||
|
inoremap ,:( 😢
|
||||||
|
inoremap ,:D 😃
|
||||||
|
inoremap ,;) 😉
|
||||||
|
inoremap ,:P 😛
|
||||||
|
inoremap ,:o 😮
|
||||||
|
inoremap ,:\| 😐
|
||||||
|
|
||||||
|
" Hearts and love
|
||||||
|
inoremap ,<3 ❤️
|
||||||
|
inoremap ,heart ❤️
|
||||||
|
inoremap ,love 💕
|
||||||
|
inoremap ,kiss 😘
|
||||||
|
|
||||||
|
" Special expressions
|
||||||
|
inoremap ,>:) 😈
|
||||||
|
inoremap ,devil 😈
|
||||||
|
inoremap ,:* 😘
|
||||||
|
inoremap ,cool 😎
|
||||||
|
inoremap ,nerd 🤓
|
||||||
|
inoremap ,angry 😠
|
||||||
|
|
||||||
|
" Hands and gestures
|
||||||
|
inoremap ,thumbs 👍
|
||||||
|
inoremap ,clap 👏
|
||||||
|
inoremap ,wave 👋
|
||||||
|
inoremap ,peace ✌️
|
||||||
|
inoremap ,pray 🙏
|
||||||
|
|
||||||
|
" Common symbols
|
||||||
|
inoremap ,check ✅
|
||||||
|
inoremap ,x ❌
|
||||||
|
inoremap ,star ⭐
|
||||||
|
inoremap ,fire 🔥
|
||||||
|
inoremap ,rocket 🚀
|
||||||
|
inoremap ,tada 🎉
|
||||||
0
x86_64/airootfs/etc/skel.stormux/.vim/swap/.gitkeep
Normal file
0
x86_64/airootfs/etc/skel.stormux/.vim/swap/.gitkeep
Normal file
77
x86_64/airootfs/etc/skel.stormux/.vimrc
Normal file
77
x86_64/airootfs/etc/skel.stormux/.vimrc
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
" ~/.vimrc
|
||||||
|
" Vim configuration for Stormux
|
||||||
|
|
||||||
|
" Ensure vim directory structure exists
|
||||||
|
" mkdir -p ~/.vim/{backup,swap,views}
|
||||||
|
|
||||||
|
set nocompatible " Use Vim settings (not Vi compatible)
|
||||||
|
filetype off " Required for some plugins
|
||||||
|
|
||||||
|
" Terminal and encoding
|
||||||
|
set term=linux " Make arrow and other keys work
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
" History and undo
|
||||||
|
set history=1000 " Store more history (default is 20)
|
||||||
|
set undoreload=10000 " Maximum lines to save for undo on buffer reload
|
||||||
|
|
||||||
|
" Backup and swap file configuration
|
||||||
|
set backup " Enable backups
|
||||||
|
set backupdir=$HOME/.vim/backup//
|
||||||
|
set directory=$HOME/.vim/swap//
|
||||||
|
set viewdir=$HOME/.vim/views//
|
||||||
|
|
||||||
|
" Search settings
|
||||||
|
set ignorecase " Case insensitive search
|
||||||
|
set smartcase " Case sensitive when uppercase present
|
||||||
|
set gdefault " /g flag on :s substitutions by default
|
||||||
|
|
||||||
|
" Spell checking
|
||||||
|
set spell " Enable spell checking
|
||||||
|
|
||||||
|
" Display settings
|
||||||
|
set wrap " Wrap long lines
|
||||||
|
set linebreak " Break lines at word boundaries
|
||||||
|
set noruler " Disable ruler (for accessibility)
|
||||||
|
set laststatus=0 " Never show status line
|
||||||
|
set noshowcmd " Don't show commands in status
|
||||||
|
|
||||||
|
" Indentation settings
|
||||||
|
set shiftwidth=4 " Use indents of 4 spaces
|
||||||
|
set expandtab " Tabs are spaces, not tabs
|
||||||
|
set tabstop=4 " An indentation every four columns
|
||||||
|
set softtabstop=4 " Let backspace delete indent
|
||||||
|
|
||||||
|
" Leader key
|
||||||
|
let mapleader = ','
|
||||||
|
|
||||||
|
" Remap semicolon to colon for easier commands
|
||||||
|
nnoremap ; :
|
||||||
|
|
||||||
|
" Yank from cursor to end of line (consistent with C and D)
|
||||||
|
nnoremap Y y$
|
||||||
|
|
||||||
|
" Em-dash insertion
|
||||||
|
inoremap ,- —
|
||||||
|
|
||||||
|
" Working directory shortcuts
|
||||||
|
cmap cwd lcd %:p:h
|
||||||
|
cmap cd. lcd %:p:h
|
||||||
|
|
||||||
|
" Write with sudo if you forgot to open with sudo
|
||||||
|
cmap w!! w !sudo tee % >/dev/null
|
||||||
|
|
||||||
|
" Disable automatic comment continuation
|
||||||
|
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
|
||||||
|
|
||||||
|
" Load vim helper functions if they exist
|
||||||
|
if filereadable(expand("~/.vim/dates.vim"))
|
||||||
|
source ~/.vim/dates.vim
|
||||||
|
endif
|
||||||
|
|
||||||
|
if filereadable(expand("~/.vim/emoji.vim"))
|
||||||
|
source ~/.vim/emoji.vim
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Enable filetype detection and indenting
|
||||||
|
filetype plugin indent on
|
||||||
@@ -38,4 +38,14 @@ if [ -d /home/stormux ]; then
|
|||||||
chown -R 1000:1000 /home/stormux
|
chown -R 1000:1000 /home/stormux
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Copy Stormux custom skel files to /etc/skel
|
||||||
|
# This is done after package installation to avoid conflicts with packages like screen
|
||||||
|
echo "Copying Stormux custom skel files..."
|
||||||
|
if [ -d /etc/skel.stormux ]; then
|
||||||
|
cp -a /etc/skel.stormux/. /etc/skel/
|
||||||
|
echo "Stormux skel files copied to /etc/skel"
|
||||||
|
else
|
||||||
|
echo "Warning: /etc/skel.stormux not found"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Airootfs customization complete"
|
echo "Airootfs customization complete"
|
||||||
|
|||||||
@@ -18,10 +18,12 @@ declare -a userNames=()
|
|||||||
declare -a userPasswords=()
|
declare -a userPasswords=()
|
||||||
declare -a userIsAdmin=()
|
declare -a userIsAdmin=()
|
||||||
desktopEnvironment="" # "none", "i3", "mate"
|
desktopEnvironment="" # "none", "i3", "mate"
|
||||||
|
hasDesktop=false # true if a desktop environment is selected
|
||||||
timezone=""
|
timezone=""
|
||||||
enableSsh="no" # "yes" or "no"
|
enableSsh="no" # "yes" or "no"
|
||||||
installLinuxGameManager="no" # "yes" or "no"
|
installLinuxGameManager="no" # "yes" or "no"
|
||||||
installAudiogameManager="no" # "yes" or "no"
|
installAudiogameManager="no" # "yes" or "no"
|
||||||
|
autoLoginUser="" # User to auto-login for desktop environments
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -666,24 +668,49 @@ gather_system_info() {
|
|||||||
case "$desktop" in
|
case "$desktop" in
|
||||||
"Console only"*)
|
"Console only"*)
|
||||||
desktopEnvironment="none"
|
desktopEnvironment="none"
|
||||||
|
hasDesktop=false
|
||||||
log_info "Desktop environment: none"
|
log_info "Desktop environment: none"
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
"i3"*)
|
"i3"*)
|
||||||
desktopEnvironment="i3"
|
desktopEnvironment="i3"
|
||||||
|
hasDesktop=true
|
||||||
log_info "Desktop environment: i3"
|
log_info "Desktop environment: i3"
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
"MATE"*)
|
"MATE"*)
|
||||||
desktopEnvironment="mate"
|
desktopEnvironment="mate"
|
||||||
|
hasDesktop=true
|
||||||
log_info "Desktop environment: mate"
|
log_info "Desktop environment: mate"
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Auto-login user selection (only if desktop environment selected)
|
||||||
|
if [[ "$hasDesktop" == true ]]; then
|
||||||
|
echo ""
|
||||||
|
echo "=== Auto-Login Configuration ==="
|
||||||
|
if [[ ${#userNames[@]} -eq 1 ]]; then
|
||||||
|
autoLoginUser="${userNames[0]}"
|
||||||
|
echo "Auto-login user set to: $autoLoginUser"
|
||||||
|
log_info "Auto-login user: $autoLoginUser"
|
||||||
|
else
|
||||||
|
echo "Select which user should automatically login to the graphical session:"
|
||||||
|
PS3="Enter user number: "
|
||||||
|
select selectedUser in "${userNames[@]}"; do
|
||||||
|
if [[ -n "$selectedUser" ]]; then
|
||||||
|
autoLoginUser="$selectedUser"
|
||||||
|
echo "Auto-login user set to: $autoLoginUser"
|
||||||
|
log_info "Auto-login user: $autoLoginUser"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Game manager installation (only if desktop environment selected)
|
# Game manager installation (only if desktop environment selected)
|
||||||
if [[ "$desktopEnvironment" != "none" ]]; then
|
if [[ "$hasDesktop" == true ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
echo "=== Optional Game Managers ==="
|
echo "=== Optional Game Managers ==="
|
||||||
echo ""
|
echo ""
|
||||||
@@ -804,7 +831,7 @@ install_base_system() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
local utilityPackages=(
|
local utilityPackages=(
|
||||||
vim nano screen magic-wormhole
|
vi vim nano screen magic-wormhole
|
||||||
man man-pages
|
man man-pages
|
||||||
xdg-user-dirs xdg-utils
|
xdg-user-dirs xdg-utils
|
||||||
poppler socat parted
|
poppler socat parted
|
||||||
@@ -820,30 +847,22 @@ install_base_system() {
|
|||||||
# Combine all packages
|
# Combine all packages
|
||||||
local allPackages=("${basePackages[@]}" "${audioPackages[@]}" "${accessibilityPackages[@]}" "${utilityPackages[@]}")
|
local allPackages=("${basePackages[@]}" "${audioPackages[@]}" "${accessibilityPackages[@]}" "${utilityPackages[@]}")
|
||||||
|
|
||||||
# Add wine packages for audiogame-manager
|
|
||||||
if [[ "$installAudiogameManager" == "yes" ]]; then
|
|
||||||
local winePackages=(
|
|
||||||
wine winetricks wine_gecko wine-mono
|
|
||||||
cabextract dos2unix translate-shell
|
|
||||||
gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-libav
|
|
||||||
)
|
|
||||||
allPackages+=("${winePackages[@]}")
|
|
||||||
log_info "Adding wine packages for audiogame-manager"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add desktop-specific packages
|
# Add desktop-specific packages
|
||||||
case "$desktopEnvironment" in
|
case "$desktopEnvironment" in
|
||||||
i3)
|
i3)
|
||||||
allPackages+=(i3-wm xclip)
|
allPackages+=(i3-wm orca lxterminal pluma)
|
||||||
allPackages+=(discount jq libnotify xfce4-notifyd pamixer playerctl)
|
allPackages+=(discount jq libnotify xfce4-notifyd pamixer playerctl)
|
||||||
allPackages+=(python-i3ipc python-wxpython sox yad)
|
allPackages+=(python-i3ipc python-wxpython sox yad)
|
||||||
|
allPackages+=(lxsession magic-wormhole pcmanfm)
|
||||||
|
allPackages+=(python-gobject python-pillow python-pytesseract scrot tesseract)
|
||||||
|
allPackages+=(tesseract-data-eng udiskie xorg-setxkbmap)
|
||||||
# Add Stormux-specific i3 packages
|
# Add Stormux-specific i3 packages
|
||||||
stormuxPackages+=(xlibre-server xlibre-input-libinput nodm-dgw)
|
stormuxPackages+=(xlibre-xserver xlibre-input-libinput nodm-dgw)
|
||||||
;;
|
;;
|
||||||
mate)
|
mate)
|
||||||
allPackages+=(mate mate-extra orca lightdm lightdm-gtk-greeter)
|
allPackages+=(mate mate-extra orca)
|
||||||
# Add Stormux-specific MATE packages
|
# Add Stormux-specific MATE packages
|
||||||
stormuxPackages+=(xlibre-server xlibre-input-libinput)
|
stormuxPackages+=(xlibre-xserver xlibre-input-libinput nodm-dgw)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -1052,6 +1071,23 @@ pacman -Sy --noconfirm --needed ${stormuxPackages[*]} 2>/dev/null || true
|
|||||||
"
|
"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Build game manager packages installation command
|
||||||
|
local gameManagerPackagesCmd=""
|
||||||
|
if [[ "$installAudiogameManager" == "yes" ]]; then
|
||||||
|
gameManagerPackagesCmd+="
|
||||||
|
# Install wine packages for audiogame-manager
|
||||||
|
echo \"Installing wine packages for audiogame-manager...\"
|
||||||
|
pacman -S --noconfirm --needed wine winetricks wine_gecko wine-mono cabextract dos2unix translate-shell gst-plugins-bad gst-plugins-good gst-plugins-ugly gst-libav 2>/dev/null || true
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
if [[ "$installLinuxGameManager" == "yes" ]]; then
|
||||||
|
gameManagerPackagesCmd+="
|
||||||
|
# Install packages for linux-game-manager
|
||||||
|
echo \"Installing packages for linux-game-manager...\"
|
||||||
|
pacman -S --noconfirm --needed linux-game-manager 2>/dev/null || true
|
||||||
|
"
|
||||||
|
fi
|
||||||
|
|
||||||
# Build pipewire configuration command for all users
|
# Build pipewire configuration command for all users
|
||||||
local pipewireConfigCmd=""
|
local pipewireConfigCmd=""
|
||||||
for username in "${userNames[@]}"; do
|
for username in "${userNames[@]}"; do
|
||||||
@@ -1093,6 +1129,8 @@ export GTK_MODULES=gail:atk-bridge
|
|||||||
export GNOME_ACCESSIBILITY=1
|
export GNOME_ACCESSIBILITY=1
|
||||||
export QT_ACCESSIBILITY=1
|
export QT_ACCESSIBILITY=1
|
||||||
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
||||||
|
export EDITOR=nano
|
||||||
|
export VISUAL=nano
|
||||||
ENV_EOF
|
ENV_EOF
|
||||||
|
|
||||||
# Note: realtime group is created by realtime-privileges package
|
# Note: realtime group is created by realtime-privileges package
|
||||||
@@ -1161,7 +1199,6 @@ elif [[ "${desktopEnvironment}" == "mate" ]]; then
|
|||||||
#
|
#
|
||||||
# Executed by startx (run your window manager from here)
|
# Executed by startx (run your window manager from here)
|
||||||
|
|
||||||
dbus-launch
|
|
||||||
[[ -f ~/.Xresources ]] && xrdb -merge -I\$HOME ~/.Xresources
|
[[ -f ~/.Xresources ]] && xrdb -merge -I\$HOME ~/.Xresources
|
||||||
|
|
||||||
if [ -d /etc/X11/xinit/xinitrc.d ]; then
|
if [ -d /etc/X11/xinit/xinitrc.d ]; then
|
||||||
@@ -1171,30 +1208,24 @@ if [ -d /etc/X11/xinit/xinitrc.d ]; then
|
|||||||
unset f
|
unset f
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Source xprofile if it exists
|
[ -f /etc/xprofile ] && . /etc/xprofile
|
||||||
[[ -f ~/.xprofile ]] && . ~/.xprofile
|
[ -f ~/.xprofile ] && . ~/.xprofile
|
||||||
|
|
||||||
exec mate-session
|
exec dbus-run-session -- mate-session
|
||||||
XINITRC_MATE_EOF
|
XINITRC_MATE_EOF
|
||||||
chmod 755 /home/\$firstUser/.xinitrc
|
chmod 755 /home/\$firstUser/.xinitrc
|
||||||
chown \$firstUser:users /home/\$firstUser/.xinitrc
|
chown \$firstUser:users /home/\$firstUser/.xinitrc
|
||||||
|
|
||||||
# Create .xprofile for MATE with accessibility variables
|
# Create .xprofile for MATE with accessibility variables
|
||||||
cat > /home/\$firstUser/.xprofile <<'XPROFILE_MATE_EOF'
|
cat > /home/\$firstUser/.xprofile <<'XPROFILE_MATE_EOF'
|
||||||
#!/bin/sh
|
# Accessibility variables
|
||||||
#
|
|
||||||
# ~/.xprofile
|
|
||||||
#
|
|
||||||
# Executed by display managers and sourced by .xinitrc
|
|
||||||
|
|
||||||
# Accessibility environment variables
|
|
||||||
export ACCESSIBILITY_ENABLED=1
|
export ACCESSIBILITY_ENABLED=1
|
||||||
export GTK_MODULES=gail:atk-bridge:canberra-gtk-module
|
export CHROME_FLAGS="--force-renderer-accessibility"
|
||||||
|
export GTK_MODULES=gail:atk-bridge
|
||||||
export GNOME_ACCESSIBILITY=1
|
export GNOME_ACCESSIBILITY=1
|
||||||
export QT_ACCESSIBILITY=1
|
export QT_ACCESSIBILITY=1
|
||||||
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
||||||
export DBUS_SESSION_BUS_PID
|
export SAL_USE_VCLPLUGIN=gtk3
|
||||||
export DBUS_SESSION_BUS_ADDRESS
|
|
||||||
|
|
||||||
# Enable Orca screen reader
|
# Enable Orca screen reader
|
||||||
gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true 2>/dev/null || true
|
gsettings set org.gnome.desktop.a11y.applications screen-reader-enabled true 2>/dev/null || true
|
||||||
@@ -1220,13 +1251,12 @@ if [[ -f /usr/share/pacman/keyrings/stormux.gpg ]]; then
|
|||||||
pacman-key --lsign-key 52ADA49000F1FF0456F8AEEFB4CDE1CD56EF8E82 2>/dev/null || true
|
pacman-key --lsign-key 52ADA49000F1FF0456F8AEEFB4CDE1CD56EF8E82 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Import xlibre key
|
|
||||||
pacman-key --recv-keys 73580DE2EDDFA6D6 2>/dev/null || true
|
|
||||||
pacman-key --lsign-key 73580DE2EDDFA6D6 2>/dev/null || true
|
|
||||||
|
|
||||||
# Install Stormux-specific packages (built dynamically before chroot)
|
# Install Stormux-specific packages (built dynamically before chroot)
|
||||||
$stormuxPackagesCmd
|
$stormuxPackagesCmd
|
||||||
|
|
||||||
|
# Install game manager packages (built dynamically before chroot)
|
||||||
|
$gameManagerPackagesCmd
|
||||||
|
|
||||||
# Enable pipewire globally for all users (creates symlinks in /etc/systemd/user/)
|
# Enable pipewire globally for all users (creates symlinks in /etc/systemd/user/)
|
||||||
systemctl --global enable pipewire.service pipewire-pulse.service wireplumber.service
|
systemctl --global enable pipewire.service pipewire-pulse.service wireplumber.service
|
||||||
|
|
||||||
@@ -1241,9 +1271,9 @@ $pipewireConfigCmd
|
|||||||
# Configure nodm for automatic login (only after nodm package is installed)
|
# Configure nodm for automatic login (only after nodm package is installed)
|
||||||
if [[ "${desktopEnvironment}" == "i3" ]] || [[ "${desktopEnvironment}" == "mate" ]]; then
|
if [[ "${desktopEnvironment}" == "i3" ]] || [[ "${desktopEnvironment}" == "mate" ]]; then
|
||||||
if [[ -f /etc/nodm.conf ]]; then
|
if [[ -f /etc/nodm.conf ]]; then
|
||||||
sed -i "s/{user}/${userNames[0]}/g" /etc/nodm.conf
|
sed -i "s/{user}/${autoLoginUser}/g" /etc/nodm.conf
|
||||||
systemctl enable nodm.service
|
systemctl enable nodm.service
|
||||||
echo "Display manager (nodm) configured for ${userNames[0]}"
|
echo "Display manager (nodm) configured for ${autoLoginUser}"
|
||||||
else
|
else
|
||||||
echo "Warning: /etc/nodm.conf not found, skipping nodm configuration"
|
echo "Warning: /etc/nodm.conf not found, skipping nodm configuration"
|
||||||
fi
|
fi
|
||||||
@@ -1262,6 +1292,10 @@ export GNOME_ACCESSIBILITY=1
|
|||||||
export QT_ACCESSIBILITY=1
|
export QT_ACCESSIBILITY=1
|
||||||
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
|
||||||
|
|
||||||
|
# Default editor (users can override in their own shell config)
|
||||||
|
export EDITOR=nano
|
||||||
|
export VISUAL=nano
|
||||||
|
|
||||||
# Dialog accessibility options
|
# Dialog accessibility options
|
||||||
export DIALOGOPTS='--no-lines --visit-items'
|
export DIALOGOPTS='--no-lines --visit-items'
|
||||||
PROFILE_EOF
|
PROFILE_EOF
|
||||||
@@ -1356,6 +1390,10 @@ install_game_managers() {
|
|||||||
# Clone repository
|
# Clone repository
|
||||||
git clone https://git.stormux.org/storm/linux-game-manager "$mountPoint/opt/linux-game-manager"
|
git clone https://git.stormux.org/storm/linux-game-manager "$mountPoint/opt/linux-game-manager"
|
||||||
|
|
||||||
|
# Configure git repository for shared group access
|
||||||
|
arch-chroot "$mountPoint" git -C /opt/linux-game-manager config core.sharedRepository group
|
||||||
|
arch-chroot "$mountPoint" git -C /opt/linux-game-manager config safe.directory /opt/linux-game-manager
|
||||||
|
|
||||||
# Set ownership to root:games with group-writable permissions
|
# Set ownership to root:games with group-writable permissions
|
||||||
chown -R root:games "$mountPoint/opt/linux-game-manager"
|
chown -R root:games "$mountPoint/opt/linux-game-manager"
|
||||||
chmod -R 775 "$mountPoint/opt/linux-game-manager"
|
chmod -R 775 "$mountPoint/opt/linux-game-manager"
|
||||||
@@ -1366,7 +1404,13 @@ install_game_managers() {
|
|||||||
cat > "$mountPoint/usr/local/bin/linux-game-manager" <<'EOF'
|
cat > "$mountPoint/usr/local/bin/linux-game-manager" <<'EOF'
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
cd /opt/linux-game-manager || exit 1
|
cd /opt/linux-game-manager || exit 1
|
||||||
|
|
||||||
|
# Set umask for group-writable files
|
||||||
|
umask 002
|
||||||
|
|
||||||
|
# Try to update - only members of games group can write
|
||||||
git pull --quiet 2>/dev/null || true
|
git pull --quiet 2>/dev/null || true
|
||||||
|
|
||||||
./linux-game-manager.sh "$@"
|
./linux-game-manager.sh "$@"
|
||||||
EOF
|
EOF
|
||||||
chmod 755 "$mountPoint/usr/local/bin/linux-game-manager"
|
chmod 755 "$mountPoint/usr/local/bin/linux-game-manager"
|
||||||
@@ -1383,6 +1427,10 @@ EOF
|
|||||||
# Clone repository
|
# Clone repository
|
||||||
git clone https://git.stormux.org/storm/audiogame-manager "$mountPoint/opt/audiogame-manager"
|
git clone https://git.stormux.org/storm/audiogame-manager "$mountPoint/opt/audiogame-manager"
|
||||||
|
|
||||||
|
# Configure git repository for shared group access
|
||||||
|
arch-chroot "$mountPoint" git -C /opt/audiogame-manager config core.sharedRepository group
|
||||||
|
arch-chroot "$mountPoint" git -C /opt/audiogame-manager config safe.directory /opt/audiogame-manager
|
||||||
|
|
||||||
# Set ownership to root:games with group-writable permissions
|
# Set ownership to root:games with group-writable permissions
|
||||||
chown -R root:games "$mountPoint/opt/audiogame-manager"
|
chown -R root:games "$mountPoint/opt/audiogame-manager"
|
||||||
chmod -R 775 "$mountPoint/opt/audiogame-manager"
|
chmod -R 775 "$mountPoint/opt/audiogame-manager"
|
||||||
@@ -1393,7 +1441,13 @@ EOF
|
|||||||
cat > "$mountPoint/usr/local/bin/audiogame-manager" <<'EOF'
|
cat > "$mountPoint/usr/local/bin/audiogame-manager" <<'EOF'
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
cd /opt/audiogame-manager || exit 1
|
cd /opt/audiogame-manager || exit 1
|
||||||
|
|
||||||
|
# Set umask for group-writable files
|
||||||
|
umask 002
|
||||||
|
|
||||||
|
# Try to update - only members of games group can write
|
||||||
git pull --quiet 2>/dev/null || true
|
git pull --quiet 2>/dev/null || true
|
||||||
|
|
||||||
./audiogame-manager.sh "$@"
|
./audiogame-manager.sh "$@"
|
||||||
EOF
|
EOF
|
||||||
chmod 755 "$mountPoint/usr/local/bin/audiogame-manager"
|
chmod 755 "$mountPoint/usr/local/bin/audiogame-manager"
|
||||||
|
|||||||
@@ -25,7 +25,8 @@ Architecture = auto
|
|||||||
#IgnorePkg =
|
#IgnorePkg =
|
||||||
#IgnoreGroup =
|
#IgnoreGroup =
|
||||||
|
|
||||||
#NoUpgrade =
|
# Protect Stormux custom skel files from being overwritten by package updates
|
||||||
|
NoUpgrade = etc/skel/.bashrc etc/skel/.inputrc etc/skel/.screenrc etc/skel/.vimrc etc/skel/.vim/*
|
||||||
#NoExtract =
|
#NoExtract =
|
||||||
|
|
||||||
# Misc options
|
# Misc options
|
||||||
@@ -79,10 +80,6 @@ LocalFileSigLevel = Optional
|
|||||||
SigLevel = Required DatabaseOptional
|
SigLevel = Required DatabaseOptional
|
||||||
Server = https://packages.stormux.org/$arch
|
Server = https://packages.stormux.org/$arch
|
||||||
|
|
||||||
[xlibre]
|
|
||||||
SigLevel = Required DatabaseOptional
|
|
||||||
Server = https://x11libre.net/repo/arch_based/$arch
|
|
||||||
|
|
||||||
[core]
|
[core]
|
||||||
Include = /etc/pacman.d/mirrorlist
|
Include = /etc/pacman.d/mirrorlist
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user