View Single Post
Old 02-05-2025, 04:47 PM   #1
AsherMaximum
Member
AsherMaximum began at the beginning.
 
Posts: 14
Karma: 10
Join Date: Jan 2025
Device: Kobo Libra 2
Dynamic NickelMenu labels

I've created a NickelMenu config that has a dynamic label for starting/stopping the FTP or Telnet server, and for turning the backlight off and on. It shows "FTP Start" when clicking it will start the FTP server, and "FTP Stop" when clicking it will stop the currently running FTP server.

Code:
## Do not change the comments right before the menu items
## The `sed` command uses it for finding the config line
## filename is assumed to be "config"
## if you change it the `sed` commands need to be updated

#
## Main Menu
#

#
## Telnet Toggle
menu_item : main    : Telnet Start     : cmd_output          : 500:quiet :/usr/bin/pkill -f "^/usr/bin/tcpsvd -E 0.0.0.0 2023"
  chain_success:skip:11
    chain_failure                      : cmd_spawn           : quiet :/bin/mount -t devpts | /bin/grep -q /dev/pts || { /bin/mkdir -p /dev/pts && /bin/mount -t devpts devpts /dev/pts; }
      chain_success:skip:2
      chain_failure                    : dbg_toast           : Error starting Telnet server on port 2023
        chain_success:skip:-1
    chain_success                      : cmd_spawn           : quiet :exec /usr/bin/tcpsvd -E 0.0.0.0 2023 /usr/sbin/telnetd -i -l /bin/login
    chain_success                      : cmd_output          : 500:quiet :grep -x 'ForceWifiOn=true' '/mnt/onboard/.kobo/Kobo/Kobo eReader.conf'
      chain_failure                    : nickel_setting      : enable : force_wifi
    chain_success                      : nickel_wifi         : autoconnect_silent
    chain_success                      : dbg_toast           : Started Telnet server on port 2023
    chain_success                      : cmd_spawn           : quiet :sed -i '/^## Telnet Toggle/ { n; s/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1 Telnet Stop \2/ }' /mnt/onboard/.adds/nm/config
    chain_always:skip:-1
  chain_success                        : dbg_toast           : Stopped Telnet server on port 2023
    chain_success                      : cmd_spawn           : quiet :sed -i '/^## Telnet Toggle/ { n; s/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1 Telnet Start \2/ }' /mnt/onboard/.adds/nm/config
    chain_success                      : cmd_output          : 500:quiet :/usr/bin/pgrep -f "^/usr/bin/tcpsvd -E 0.0.0.0 1021"
      chain_failure                    : nickel_setting      : disable : force_wifi

#
## FTP Toggle
menu_item : main    : FTP Start        : cmd_output          : 500:quiet :/usr/bin/pkill -f "^/usr/bin/tcpsvd -E 0.0.0.0 1021"
  chain_success:skip:10
    chain_failure                      : cmd_spawn           : quiet :exec /usr/bin/tcpsvd -E 0.0.0.0 1021 /usr/sbin/ftpd -w -t 30 /mnt/onboard
      chain_success:skip:2
      chain_failure                    : dbg_toast           : Error starting FTP server on port 1021
        chain_success:skip:-1
    chain_success                      : cmd_output          : 500:quiet :grep -x 'ForceWifiOn=true' '/mnt/onboard/.kobo/Kobo/Kobo eReader.conf'
      chain_failure                    : nickel_setting      : enable : force_wifi
    chain_success                      : nickel_wifi         : autoconnect_silent
    chain_success                      : dbg_toast           : Started FTP server on port 1021
    chain_success                      : cmd_spawn           : quiet :sed -i '/^## FTP Toggle/ { n; s/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1 FTP Stop \2/ }' /mnt/onboard/.adds/nm/config
    chain_always:skip:-1
  chain_success                        : dbg_toast           : Stopped FTP server on port 1021
    chain_success                      : cmd_spawn           : quiet :sed -i '/^## FTP Toggle/ { n; s/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1 FTP Start \2/ }' /mnt/onboard/.adds/nm/config
    chain_success                      : cmd_output          : 500:quiet :/usr/bin/pgrep -f "^/usr/bin/tcpsvd -E 0.0.0.0 2023"
      chain_failure                    : nickel_setting      : disable : force_wifi

#
## Library Menu
#

#
## Light Toggle
menu_item : library   : Light On       : cmd_output  : 500:  quiet :/bin/sh -c 'if [ "$(cat /sys/class/backlight/mxc_msp430.0/actual_brightness)" -eq "0" ]; then exit 1; else exit 0; fi'
  chain_success:skip:3
    chain_failure                          : cmd_spawn   : quiet :ioctl /dev/ntx_io 241 -v 8
    chain_success                          : cmd_spawn   : quiet :sed -i '/^## Light Toggle/ { n; s/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1 Light Off \2/ }' /mnt/onboard/.adds/nm/config
    chain_always:skip:-1
  chain_success                          : cmd_spawn   : quiet :ioctl /dev/ntx_io 241 -v 0
    chain_success                          : cmd_spawn   : quiet :sed -i '/^## Light Toggle/ { n; s/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1 Light On \2/ }' /mnt/onboard/.adds/nm/config

#
## Reading Menu
#

## Light Toggle
menu_item : reader   : Light On       : cmd_output  : 500:  quiet :/bin/sh -c 'if [ "$(cat /sys/class/backlight/mxc_msp430.0/actual_brightness)" -eq "0" ]; then exit 1; else exit 0; fi'
  chain_success:skip:3
    chain_failure                          : cmd_spawn   : quiet :ioctl /dev/ntx_io 241 -v 8
    chain_success                          : cmd_spawn   : quiet :sed -i '/^## Light Toggle/ { n; s/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1 Light Off \2/ }' /mnt/onboard/.adds/nm/config
    chain_always:skip:-1
  chain_success                          : cmd_spawn   : quiet :ioctl /dev/ntx_io 241 -v 0
    chain_success                          : cmd_spawn   : quiet :sed -i '/^## Light Toggle/ { n; s/^\([^:]*:[^:]*:\)[^:]*\(:.*\)$/\1 Light On \2/ }' /mnt/onboard/.adds/nm/config
The FTP and Telnet toggles also turn on the Forced Wifi option if it's not already on, and turn it off once it's the last thing running. Meaning that if you start both Telnet and FTP, and then stop Telnet, the ForcedWifi setting won't be turned off untill you stop the FTP server.

Note that if you reboot the device with FTP or Telnet on, the menu labels will be out of sync, but once you use them once they will resync.

The light menu option will also be out of sync if you change it manually instead, but will also resync once you use it once. It's set to turn it on to level 8, which of course can be changed
Code:
ioctl /dev/ntx_io 241 -v 8 <-- set this to the level you want

Last edited by AsherMaximum; 02-05-2025 at 04:50 PM.
AsherMaximum is offline   Reply With Quote