diff --git a/MANUAL.md b/MANUAL.md index 1ad37ad..c6e10a1 100644 --- a/MANUAL.md +++ b/MANUAL.md @@ -46,7 +46,7 @@ This manual covers flashing, operating, and customizing **Bananarchy Linux** (`v 6. **Memory & swap tuning for 512 MB RAM**: - `384 MiB` ZSTD-compressed `zram0` swap (priority `100`) + `512 MiB` `/swapfile` (priority `10`), with `vm.swappiness=100` and `vm.page-cluster=0`. 7. **Preinstalled on-device development & scripting stack**: - - **C / C++ toolchain & build tools**: `gcc`, `g++`, `musl-dev`, `make`, `git`, `nano` + - **C / C++ toolchain & CLI utilities**: `gcc`, `g++`, `musl-dev`, `make`, `git`, GNU `coreutils`, `nano` (default `$EDITOR`, configured system-wide via `/etc/nanorc` equivalent to `nano -FEDSMAGic/max%_T2`), `ed`, GNU `less` (default `$PAGER="less -RXF"`), `rlwrap` - **Janet**: `janet`, `janet-dev`, `jpm` (Janet package manager) - **Perl**: `perl`, `perl-io-socket-ssl` (`IO::Socket::SSL`) - **Tcl & SQLite**: `tcl`, `tcl-lib` (`tcllib`), `tcl-tls`, `sqlite` (`sqlite3`), `sqlite-tcl` (`tcl-sqlite`) diff --git a/README.md b/README.md index a891942..67c40b7 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Bananarchy targets an ultra-lightweight **Sxmo X11 (`sxmo-de-dwm`)** environment - **Full Qualcomm QDSP6/Q6Voice audio & modem routing**: loudspeaker, earpiece speaker, and internal/headset microphones with PM8909 WCD analog codec 2.8V micbias, +6 dB EAR PA gain, and GSM/WCDMA/LTE voice routing (`ModemManager` + `q6voiced`). - **Rear 2MP camera support**: `msm8905-cam` V4L2 driver for GalaxyCore `GC2395` + MSM8909 `CAMSS` on `/dev/video0` and the `bananarchy-photo` CLI/Sxmo app. - **Pre-integrated Bantam AI agent**: cross-compiled from `https://code.luxferre.top/luxferre/bantam-cpp`. -- **Complete on-device development & scripting stack**: `git`, `gcc`/`g++`, `make`, `nano`, `janet` + `jpm`, `perl` + `IO::Socket::SSL`, `tcl` + `tcllib`/`tcl-tls`/`sqlite-tcl`, `sqlite`, `i2c-tools`, and `v4l-utils`. +- **Complete on-device development & scripting stack**: `git`, `gcc`/`g++`, `make`, GNU `coreutils`, `nano` (`$EDITOR`, pre-configured in `/etc/nanorc` with `-FEDSMAGic/max%_T2`), `ed`, `less` (`$PAGER="less -RXF"`), `rlwrap`, `janet` + `jpm`, `perl` + `IO::Socket::SSL`, `tcl` + `tcllib`/`tcl-tls`/`sqlite-tcl`, `sqlite`, `i2c-tools`, and `v4l-utils`. The current Bananarchy version is `v0.0.1`. diff --git a/overlay/rootfs/bin/ed b/overlay/rootfs/bin/ed new file mode 100755 index 0000000..0d8b09f Binary files /dev/null and b/overlay/rootfs/bin/ed differ diff --git a/overlay/rootfs/etc/nanorc b/overlay/rootfs/etc/nanorc new file mode 100644 index 0000000..46d2fcc --- /dev/null +++ b/overlay/rootfs/etc/nanorc @@ -0,0 +1,50 @@ +# Bananarchy Linux system-wide nano configuration +# Equivalent to: nano -FEDSMAGic/max%_T2 + +set newbuffer +set tabstospaces +set boldtext +set softwrap +set trimblanks +set smarthome +set locking +set autoindent +set constantshow +set mouse +set atblanks +set nohelp +set stateflags +set minibar +set tabsize 2 + +# Modern keybindings (-/ / --modernbindings) +bind ^X cut main +bind ^C copy main +bind ^V paste all +bind ^Q exit all +bind ^S savefile main +bind ^W writeout main +bind ^O insert main +bind ^H help all +bind ^H exit help +bind ^F whereis all +bind ^G findnext all +bind ^B wherewas all +bind ^D findprevious all +bind ^R replace main +unbind ^U all +unbind ^N main +unbind ^Y all +unbind M-J main +unbind M-T main +bind ^A mark main +bind ^P location main +bind ^T gotoline main +bind ^T gotodir browser +bind ^T cutrestoffile execute +bind ^L linter execute +bind ^E execute main +bind ^K "{mark}{end}{zap}" main +bind ^U "{mark}{home}{zap}" main +bind ^Z undo main +bind ^Y redo main diff --git a/overlay/rootfs/etc/profile b/overlay/rootfs/etc/profile new file mode 100644 index 0000000..8b00b73 --- /dev/null +++ b/overlay/rootfs/etc/profile @@ -0,0 +1,27 @@ +export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" + +export EDITOR=nano +export VISUAL=nano +export PAGER="less -RXF" +export LESS="-RXF" +umask 022 + +# use nicer PS1 for bash and busybox ash +if [ -n "$BASH_VERSION" -o "$BB_ASH_VERSION" ]; then + PS1='\h:\w\$ ' +# use nicer PS1 for zsh +elif [ -n "$ZSH_VERSION" ]; then + PS1='%m:%~%# ' +# set up fallback default PS1 +else + : "${HOSTNAME:=$(hostname)}" + PS1='${HOSTNAME%%.*}:$PWD' + [ "$(id -u)" -eq 0 ] && PS1="${PS1}# " || PS1="${PS1}\$ " +fi + +for script in /etc/profile.d/*.sh ; do + if [ -r "$script" ] ; then + . "$script" + fi +done +unset script diff --git a/overlay/rootfs/etc/profile.d/sxmo_init.sh b/overlay/rootfs/etc/profile.d/sxmo_init.sh index d6f9292..2c08117 100644 --- a/overlay/rootfs/etc/profile.d/sxmo_init.sh +++ b/overlay/rootfs/etc/profile.d/sxmo_init.sh @@ -105,7 +105,10 @@ _sxmo_load_environments() { export BEMENU_OPTS="${BEMENU_OPTS:---fn "Fira Code 9" -H 22 -B 2 --hp 4 -s --no-overlap --fixed-height --scrollbar none --cw 2 --bdr "#005577" --tb "#383838" --tf "#aaaaaa" --fb "#383838" --ff "#ffffff" --cb "#ffffff" --cf "#383838" --nb "#1c1c1c" --nf "#ffffff" --ab "#1c1c1c" --af "#ffffff" --hb "#005577" --hf "#ffffff" -w -i}" - export EDITOR="${EDITOR:-vim}" + export EDITOR="${EDITOR:-nano}" + export VISUAL="${VISUAL:-nano}" + export PAGER="less -RXF" + export LESS="-RXF" export BROWSER="${BROWSER:-firefox}" export SHELL="${SHELL:-/bin/sh}" diff --git a/overlay/rootfs/etc/skel/.config/sxmo/profile b/overlay/rootfs/etc/skel/.config/sxmo/profile index ce9b5ae..3991864 100755 --- a/overlay/rootfs/etc/skel/.config/sxmo/profile +++ b/overlay/rootfs/etc/skel/.config/sxmo/profile @@ -71,11 +71,15 @@ export SXMO_RINGNUMBER=10 export SXMO_DEFAULT_DRAFT="Enter new message here." export PATH="$HOME/.local/bin:$PATH" +export EDITOR="nano" +export VISUAL="nano" +export PAGER="less -RXF" +export LESS="-RXF" export SXMO_WM="dwm" export SXMO_MENU="dmenu" export SXMO_TERMINAL="st" export DMENU_WRAP_AROUND=1 -export SXMO_DMENU_PORTRAIT_LINES=12 +export SXMO_DMENU_PORTRAIT_LINES=9 export SXMO_DMENU_LANDSCAPE_LINES=8 export SXMO_DISABLE_LEDS=1 export SXMO_NO_VIRTUAL_KEYBOARD=1 diff --git a/overlay/rootfs/etc/skel/.nanorc b/overlay/rootfs/etc/skel/.nanorc new file mode 100644 index 0000000..46d2fcc --- /dev/null +++ b/overlay/rootfs/etc/skel/.nanorc @@ -0,0 +1,50 @@ +# Bananarchy Linux system-wide nano configuration +# Equivalent to: nano -FEDSMAGic/max%_T2 + +set newbuffer +set tabstospaces +set boldtext +set softwrap +set trimblanks +set smarthome +set locking +set autoindent +set constantshow +set mouse +set atblanks +set nohelp +set stateflags +set minibar +set tabsize 2 + +# Modern keybindings (-/ / --modernbindings) +bind ^X cut main +bind ^C copy main +bind ^V paste all +bind ^Q exit all +bind ^S savefile main +bind ^W writeout main +bind ^O insert main +bind ^H help all +bind ^H exit help +bind ^F whereis all +bind ^G findnext all +bind ^B wherewas all +bind ^D findprevious all +bind ^R replace main +unbind ^U all +unbind ^N main +unbind ^Y all +unbind M-J main +unbind M-T main +bind ^A mark main +bind ^P location main +bind ^T gotoline main +bind ^T gotodir browser +bind ^T cutrestoffile execute +bind ^L linter execute +bind ^E execute main +bind ^K "{mark}{end}{zap}" main +bind ^U "{mark}{home}{zap}" main +bind ^Z undo main +bind ^Y redo main diff --git a/overlay/rootfs/etc/skel/.profile b/overlay/rootfs/etc/skel/.profile index d2ff062..5ed8114 100644 --- a/overlay/rootfs/etc/skel/.profile +++ b/overlay/rootfs/etc/skel/.profile @@ -1,10 +1,14 @@ export PATH="$HOME/.local/bin:$PATH" +export EDITOR=nano +export VISUAL=nano +export PAGER="less -RXF" +export LESS="-RXF" export SXMO_WM=dwm export SXMO_MENU=dmenu export SXMO_TERMINAL=st export DMENU_WRAP_AROUND=1 -export SXMO_DMENU_PORTRAIT_LINES=12 +export SXMO_DMENU_PORTRAIT_LINES=9 export SXMO_DMENU_LANDSCAPE_LINES=8 export SXMO_DISABLE_LEDS=1 export SXMO_NO_VIRTUAL_KEYBOARD=1 diff --git a/overlay/rootfs/home/user/.config/sxmo/profile b/overlay/rootfs/home/user/.config/sxmo/profile index ce9b5ae..3991864 100755 --- a/overlay/rootfs/home/user/.config/sxmo/profile +++ b/overlay/rootfs/home/user/.config/sxmo/profile @@ -71,11 +71,15 @@ export SXMO_RINGNUMBER=10 export SXMO_DEFAULT_DRAFT="Enter new message here." export PATH="$HOME/.local/bin:$PATH" +export EDITOR="nano" +export VISUAL="nano" +export PAGER="less -RXF" +export LESS="-RXF" export SXMO_WM="dwm" export SXMO_MENU="dmenu" export SXMO_TERMINAL="st" export DMENU_WRAP_AROUND=1 -export SXMO_DMENU_PORTRAIT_LINES=12 +export SXMO_DMENU_PORTRAIT_LINES=9 export SXMO_DMENU_LANDSCAPE_LINES=8 export SXMO_DISABLE_LEDS=1 export SXMO_NO_VIRTUAL_KEYBOARD=1 diff --git a/overlay/rootfs/home/user/.nanorc b/overlay/rootfs/home/user/.nanorc new file mode 100644 index 0000000..46d2fcc --- /dev/null +++ b/overlay/rootfs/home/user/.nanorc @@ -0,0 +1,50 @@ +# Bananarchy Linux system-wide nano configuration +# Equivalent to: nano -FEDSMAGic/max%_T2 + +set newbuffer +set tabstospaces +set boldtext +set softwrap +set trimblanks +set smarthome +set locking +set autoindent +set constantshow +set mouse +set atblanks +set nohelp +set stateflags +set minibar +set tabsize 2 + +# Modern keybindings (-/ / --modernbindings) +bind ^X cut main +bind ^C copy main +bind ^V paste all +bind ^Q exit all +bind ^S savefile main +bind ^W writeout main +bind ^O insert main +bind ^H help all +bind ^H exit help +bind ^F whereis all +bind ^G findnext all +bind ^B wherewas all +bind ^D findprevious all +bind ^R replace main +unbind ^U all +unbind ^N main +unbind ^Y all +unbind M-J main +unbind M-T main +bind ^A mark main +bind ^P location main +bind ^T gotoline main +bind ^T gotodir browser +bind ^T cutrestoffile execute +bind ^L linter execute +bind ^E execute main +bind ^K "{mark}{end}{zap}" main +bind ^U "{mark}{home}{zap}" main +bind ^Z undo main +bind ^Y redo main diff --git a/overlay/rootfs/home/user/.profile b/overlay/rootfs/home/user/.profile index d2ff062..5ed8114 100644 --- a/overlay/rootfs/home/user/.profile +++ b/overlay/rootfs/home/user/.profile @@ -1,10 +1,14 @@ export PATH="$HOME/.local/bin:$PATH" +export EDITOR=nano +export VISUAL=nano +export PAGER="less -RXF" +export LESS="-RXF" export SXMO_WM=dwm export SXMO_MENU=dmenu export SXMO_TERMINAL=st export DMENU_WRAP_AROUND=1 -export SXMO_DMENU_PORTRAIT_LINES=12 +export SXMO_DMENU_PORTRAIT_LINES=9 export SXMO_DMENU_LANDSCAPE_LINES=8 export SXMO_DISABLE_LEDS=1 export SXMO_NO_VIRTUAL_KEYBOARD=1 diff --git a/overlay/rootfs/usr/bin/less b/overlay/rootfs/usr/bin/less new file mode 100755 index 0000000..ec81b8a Binary files /dev/null and b/overlay/rootfs/usr/bin/less differ diff --git a/overlay/rootfs/usr/bin/rlwrap b/overlay/rootfs/usr/bin/rlwrap new file mode 100755 index 0000000..803efc9 Binary files /dev/null and b/overlay/rootfs/usr/bin/rlwrap differ diff --git a/overlay/rootfs/usr/lib/libptytty.so.0 b/overlay/rootfs/usr/lib/libptytty.so.0 new file mode 100755 index 0000000..745cd25 Binary files /dev/null and b/overlay/rootfs/usr/lib/libptytty.so.0 differ diff --git a/overlay/rootfs/usr/share/sxmo/appcfg/profile_template b/overlay/rootfs/usr/share/sxmo/appcfg/profile_template index ce9b5ae..3991864 100755 --- a/overlay/rootfs/usr/share/sxmo/appcfg/profile_template +++ b/overlay/rootfs/usr/share/sxmo/appcfg/profile_template @@ -71,11 +71,15 @@ export SXMO_RINGNUMBER=10 export SXMO_DEFAULT_DRAFT="Enter new message here." export PATH="$HOME/.local/bin:$PATH" +export EDITOR="nano" +export VISUAL="nano" +export PAGER="less -RXF" +export LESS="-RXF" export SXMO_WM="dwm" export SXMO_MENU="dmenu" export SXMO_TERMINAL="st" export DMENU_WRAP_AROUND=1 -export SXMO_DMENU_PORTRAIT_LINES=12 +export SXMO_DMENU_PORTRAIT_LINES=9 export SXMO_DMENU_LANDSCAPE_LINES=8 export SXMO_DISABLE_LEDS=1 export SXMO_NO_VIRTUAL_KEYBOARD=1 diff --git a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_apps.sh b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_apps.sh index 1c7642c..2ecf4fe 100755 --- a/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_apps.sh +++ b/overlay/rootfs/usr/share/sxmo/default_hooks/sxmo_hook_apps.sh @@ -225,10 +225,6 @@ write_line_app waydroid "$icon_and Waydroid" "waydroid show-full-ui" write_line_app weechat "$icon_msg Weechat" "sxmo_terminal.sh weechat" write_line_app wike "$icon_bok Wike" "wike" write_line_app w3m "$icon_glb W3m" "sxmo_terminal.sh w3m duck.com" -write_line_app vim "$icon_vim Vim" "sxmo_terminal.sh vim" -write_line_app vimb "$icon_glb Vimb" "vimb" -write_line_app vimb "$icon_glb Vimb (Incognito)" "vimb -i" -write_line_app vis "$icon_vim Vis" "sxmo_terminal.sh vis" write_line_app vlc "$icon_vlc Vlc" "vlc" write_line_app vte-2.91 "$icon_trm VTE 3" "vte-2.91" write_line_app vte-2.91-gtk4 "$icon_trm VTE 3 (GTK-4)" "vte-2.91-gtk4" diff --git a/scripts/apply-bananarchy-overlay.sh b/scripts/apply-bananarchy-overlay.sh index 26c04d3..e9290a8 100755 --- a/scripts/apply-bananarchy-overlay.sh +++ b/scripts/apply-bananarchy-overlay.sh @@ -107,6 +107,8 @@ rm -rf \ "$TARGET_ROOTFS/usr/lib/fcitx5/libwaylandim.so" \ "$TARGET_ROOTFS/usr/share/fcitx5/addon/wayland.conf" \ "$TARGET_ROOTFS/usr/share/fcitx5/addon/waylandim.conf" \ + "$TARGET_ROOTFS/usr/bin/vim"* \ + "$TARGET_ROOTFS/usr/share/vim" \ "$TARGET_ROOTFS/home/user/.config/fcitx5/conf/waylandim.conf" \ "$TARGET_ROOTFS/etc/skel/.config/fcitx5/conf/waylandim.conf" \ "$TARGET_ROOTFS/home/user/.config/wob" \ diff --git a/scripts/configure-rootfs-from-scratch.sh b/scripts/configure-rootfs-from-scratch.sh index 2892095..73d30f6 100755 --- a/scripts/configure-rootfs-from-scratch.sh +++ b/scripts/configure-rootfs-from-scratch.sh @@ -63,6 +63,10 @@ configure_common_rootfs() { g++ \ musl-dev \ make \ + coreutils \ + ed \ + rlwrap \ + less \ nano \ janet \ janet-dev \ @@ -683,44 +687,20 @@ PYEOF for target_home in "$ROOTFS/etc/skel" "$ROOTFS/home/user"; do mkdir -p \ "$target_home/.config/sxmo/hooks" \ - "$target_home/.config/wofi" \ - "$target_home/.config/foot" \ - "$target_home/.config/wob" \ "$target_home/.config/fontconfig/conf.d" cp "$ROOTFS/usr/share/sxmo/appcfg/profile_template" "$target_home/.config/sxmo/profile" - if ! grep -q "SXMO_MENU=wofi" "$target_home/.config/sxmo/profile"; then - cat >> "$target_home/.config/sxmo/profile" <<'EOF' - -export PATH="$HOME/.local/bin:$PATH" -export WLR_RENDERER=pixman -export WLR_NO_HARDWARE_CURSORS=1 -export SXMO_DISABLE_LEDS=1 -export SXMO_NO_VIRTUAL_KEYBOARD=1 -export NO_AT_BRIDGE=1 -export GTK_A11Y=none -export GTK_USE_PORTAL=0 -export GTK_IM_MODULE=fcitx -export QT_IM_MODULE=fcitx -export XMODIFIERS=@im=fcitx -export SXMO_MENU=wofi -export SXMO_BEMENU_PORTRAIT_LINES=11 -export SXMO_BEMENU_LANDSCAPE_LINES=8 -export BEMENU_OPTS='--fn "Sxmo 11.5" -H 24 -B 2 --hp 4 -s --no-overlap --fixed-height --scrollbar none --cw 2 --bdr "#005577" --tb "#383838" --tf "#aaaaaa" --fb "#383838" --ff "#ffffff" --cb "#ffffff" --cf "#383838" --nb "#1c1c1c" --nf "#ffffff" --ab "#1c1c1c" --af "#ffffff" --hb "#005577" --hf "#ffffff" -w -i' -EOF - fi - cp "$ROOTFS/usr/share/sxmo/appcfg/sway_template" "$target_home/.config/sxmo/sway" + cp "$ROOTFS/usr/share/sxmo/appcfg/xinit_template" "$target_home/.config/sxmo/xinit" cp "$ROOTFS/usr/share/sxmo/appcfg/conky.conf" "$target_home/.config/sxmo/conky.conf" - cp "$ROOTFS/usr/share/sxmo/appcfg/wofi.config" "$target_home/.config/wofi/config" - cp "$ROOTFS/usr/share/sxmo/appcfg/wofi.css" "$target_home/.config/wofi/style.css" - cp "$ROOTFS/usr/share/sxmo/appcfg/foot.ini" "$target_home/.config/foot/foot.ini" - cp "$ROOTFS/usr/share/sxmo/appcfg/wob.ini" "$target_home/.config/wob/wob.ini" - cp "$ROOTFS/usr/share/sxmo/appcfg/bonsai_tree.json" "$target_home/.config/sxmo/bonsai_tree.json" + cp "$ROOTFS/usr/share/sxmo/appcfg/Xresources" "$target_home/.Xresources" cp "$ROOTFS/usr/share/sxmo/appcfg/fontconfig.conf" "$target_home/.config/fontconfig/conf.d/50-sxmo.conf" cp "$ROOTFS/usr/share/sxmo/default_hooks/sxmo_hook_inputhandler.sh" "$target_home/.config/sxmo/hooks/sxmo_hook_inputhandler.sh" - chmod 755 "$target_home/.config/sxmo/hooks/sxmo_hook_inputhandler.sh" + chmod 755 "$target_home/.config/sxmo/hooks/sxmo_hook_inputhandler.sh" "$target_home/.config/sxmo/xinit" "$target_home/.config/sxmo/profile" done fi + sed -i "/^P:sxmo-utils-common$/,/^$/ s/ vim//" "$ROOTFS/lib/apk/db/installed" 2>/dev/null || true + apk --root "$ROOTFS" --arch armv7 del --no-scripts vim vim-common nftables-vim protobuf-vim 2>/dev/null || true + if [ -x /bananarchy/scripts/apply-bananarchy-overlay.sh ]; then /bananarchy/scripts/apply-bananarchy-overlay.sh "$ROOTFS" nokia-argon depmod -b "$ROOTFS" 6.12.1-msm8916