View Single Post
Old 09-15-2023, 09:17 PM   #7
elinkser
Groupie
elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.elinkser has survived committing the World's Second Greatest Blunder.
 
Posts: 185
Karma: 146236
Join Date: Oct 2022
Device: Kobo Clara HD
SAVING SPACE IN NICKELMENU WITH "SUBMENUS" USING NICKELDBUS

***



SAVING SPACE IN NICKELMENU WITH "SUBMENUS" USING NICKELDBUS


Your NickelMenu might be getting crowded if you have added all the following entries:


Code:
menu_item :main :stop agetty+fbpad+fbkeyboard :cmd_spawn :quiet:/usr/bin/pkill agetty                          
    chain_success                      :cmd_spawn          :quiet :/usr/bin/pkill fbpad
    chain_failure                      :cmd_spawn          :quiet :/usr/bin/pkill fbpad 
    chain_success                      :cmd_spawn          :quiet :/usr/bin/pkill fbkeyboard 
    chain_failure                      :cmd_spawn          :quiet :/usr/bin/pkill fbkeyboard 

menu_item :main    :fbpadkb+fbkeyboard :cmd_spawn          :quiet :/mnt/onboard/.adds/koreader/scripts/fbpadkb /bin/sh 0</dev/tty1
    chain_success                      :cmd_spawn          :quiet :/mnt/onboard/.adds/koreader/scripts/fbkeyboard
    chain_success                      :dbg_toast          :Started fbpadkb and fbkeyboard
    chain_failure                      :dbg_toast          :Error starting fbpadkb or fbkeyboard

menu_item :main    :fbpadkbS+fbkeyboard :cmd_spawn          :quiet :/mnt/onboard/.adds/koreader/scripts/fbpadkbS /bin/sh 0</dev/tty1
    chain_success                      :cmd_spawn          :quiet :/mnt/onboard/.adds/koreader/scripts/fbkeyboard
    chain_success                      :dbg_toast          :Started fbpadkbS and fbkeyboard
    chain_failure                      :dbg_toast          :Error starting fbpadkbS or fbkeyboard   

menu_item :main    :fbpad (toggle):cmd_output         :500:quiet :/usr/bin/pkill -f "fbpad"
    chain_success:skip:4
    chain_failure                      :cmd_spawn          :quiet :/mnt/onboard/.adds/koreader/scripts/fbpad /bin/sh 0</dev/tty1
    chain_success                      :dbg_toast          :Started fbpad
    chain_failure                      :dbg_toast          :Error starting fbpad
    chain_always:skip:-1
    chain_success                      :dbg_toast          :Stopped fbpad

menu_item :main    :fbpadS (toggle):cmd_output         :500:quiet :/usr/bin/pkill -f "fbpadS"
    chain_success:skip:4
    chain_failure                      :cmd_spawn          :quiet :/mnt/onboard/.adds/koreader/scripts/fbpadS /bin/sh 0</dev/tty1
    chain_success                      :dbg_toast          :Started fbpadS
    chain_failure                      :dbg_toast          :Error starting fbpadS
    chain_always:skip:-1
    chain_success                      :dbg_toast          :Stopped fbpadS

menu_item :main    :fbkeyboard (toggle):cmd_output         :500:quiet :/usr/bin/pkill fbkeyboard
    chain_success:skip:4
    chain_failure                      :cmd_spawn          :quiet :/mnt/onboard/.adds/koreader/scripts/fbkeyboard
    chain_success                      :dbg_toast          :Started fbkeyboard
    chain_failure                      :dbg_toast          :Error starting fbkeyboard
    chain_always:skip:-1
    chain_success                      :dbg_toast          :Stopped fbkeyboard

***

But NickelDBus allows us to condense everything to a single NickelMenu entry (i.e. also need NickelDBus installed):


Code:
menu_item :main :fbmenu :cmd_spawn :quiet:exec /mnt/onboard/.adds/koreader/scripts/fbmenu.sh
    chain_success                      :dbg_toast          :Started fbmenu       
    chain_failure                      :dbg_toast          :Error

Also create script /mnt/onboard/.adds/koreader/scripts/fbmenu.sh:

Code:
#!/bin/sh                                        
# fbmenu - fbpad and fbkeyboard selection menu

num=0                              
qndb -m dlgConfirmCreate true                                       
qndb -m dlgConfirmSetTitle "1-Stop agetty+fb(all); 2-fbpadkb; 3-fbpadkbS; 4-fbpad; 5-fbpadS; 6-fbkeyboard;    Select option (1-6):"
qndb -m dlgConfirmSetLEPlaceholder "1"
qndb -m dlgConfirmShow                           
result=$(qndb -s dlgConfirmTextInput)            
textIn=$(echo $result | sed 's/dlgConfirmTextInput //')
num=$(echo $textIn | sed 's/[^0-9]//g')
num=${num:-1}
if [ "$num" != "$textIn" ]
then
num=1
fi                                                                                                 

if [ "$num" == "1" ]; then
		qndb -m mwcToast 1000 "You selected 1-Stop agetty+fbpad"
		fbcmd="/usr/bin/pkill agetty"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1)
		fbcmd="/usr/bin/pkill fbpad"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1)
		fbcmd="/usr/bin/pkill fbkeyboard"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1)
elif [ "$num" == "2" ]; then
		qndb -m mwcToast 1000 "You selected 2-fbpadkb"
		fbcmd="/mnt/onboard/.adds/koreader/scripts/fbkeyboard"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1) &
		fbcmd="eval /mnt/onboard/.adds/koreader/scripts/fbpadkb /bin/sh 0</dev/tty1"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1)
elif [ "$num" == "3" ]; then	
		qndb -m mwcToast 1000 "You selected 3-fbpadkbS"
		fbcmd="/mnt/onboard/.adds/koreader/scripts/fbkeyboard"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1) &
		fbcmd="eval /mnt/onboard/.adds/koreader/scripts/fbpadkbS /bin/sh 0</dev/tty1"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1)
elif [ "$num" == "4" ]; then
		qndb -m mwcToast 1000 "You selected 4-fbpad"
		fbcmd="eval /mnt/onboard/.adds/koreader/scripts/fbpad /bin/sh 0</dev/tty1"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1)
elif [ "$num" == "5" ]; then
		qndb -m mwcToast 1000 "You selected 5-fbpadS"
		fbcmd="eval /mnt/onboard/.adds/koreader/scripts/fbpadS /bin/sh 0</dev/tty1"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1)
elif [ "$num" == "6" ]; then
		qndb -m mwcToast 1000 "You selected 6-fbkeyboard"
		fbcmd="/mnt/onboard/.adds/koreader/scripts/fbkeyboard"
		qndb -m mwcToast 1000 "$fbcmd"
		fberr=$($fbcmd 2>&1)
else
		qndb -m mwcToast 1000 "You selected an invalid option" 
fi

qndb -m mwcToast 1000 "${fberr:-"Bye!"}"

***

A NEW HACK TO AVOID MESSING WITH SYSTEM FILES LIKE A PRO:

* While messing around with an rmkit install, I saw how they avoided messing with system files like we did in POST #5 above:

Return your /etc/inittab to to the way it was (i.e. remove the "agetty" line you added).

Instead create the following file:

/etc/udev/rules.d/90-fbpad.rules
Code:
# : 90-fbpad.rules 2015-01-10 23:58:00Z NiLuJe $
# Runs early at boot... (onboard *might* be mounted at that point)
KERNEL=="loop0", RUN+="/sbin/agetty -s 38400 tty1 vt100"


It would be nice if we could also kill agetty automatically with the following file, but I tried it and that one doesn't work:

/etc/udev/rules.d/91-fbpad.rules
Code:
# : 91-fbpad.rules 2015-01-10 23:58:00Z NiLuJe $
# Runs early at boot... (onboard *might* be mounted at that point)
KERNEL=="loop0", RUN+="/usr/bin/pkill agetty"

***




IMPORTANT NOTE: ON MY KOBO, EITHER USB OR WIFI NETWORKING (WHETHER CONNECTED TO HOTSPOT OR NOT) HAD TO BE ENABLED OR DEVICE FREEZES. WHO KNOWS WHY?
SORRY FOR ANY FRUSTRATION - I HAD DONE MANY SUCCESSFUL TESTS NOT REALIZING THAT ENABLING WIFI WAS RELEVANT!





****



* NOTE : you have to kill agetty again upon returning to Nickel after exiting KOReader.

Last edited by elinkser; 10-28-2023 at 03:16 PM. Reason: NEEDS USB OR WIFI NETWORKING ENABLED!
elinkser is offline   Reply With Quote