1238438Sdteske#!/bin/sh 2238438Sdteske#- 3249746Sdteske# Copyright (c) 2012-2013 Devin Teske 4252980Sdteske# All rights reserved. 5238438Sdteske# 6238438Sdteske# Redistribution and use in source and binary forms, with or without 7238438Sdteske# modification, are permitted provided that the following conditions 8238438Sdteske# are met: 9238438Sdteske# 1. Redistributions of source code must retain the above copyright 10238438Sdteske# notice, this list of conditions and the following disclaimer. 11238438Sdteske# 2. Redistributions in binary form must reproduce the above copyright 12238438Sdteske# notice, this list of conditions and the following disclaimer in the 13238438Sdteske# documentation and/or other materials provided with the distribution. 14238438Sdteske# 15238438Sdteske# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16252987Sdteske# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17238438Sdteske# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18238438Sdteske# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19238438Sdteske# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20252987Sdteske# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21238438Sdteske# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22238438Sdteske# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23238438Sdteske# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24238438Sdteske# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25238438Sdteske# SUCH DAMAGE. 26238438Sdteske# 27238438Sdteske# $FreeBSD$ 28238438Sdteske# 29238438Sdteske############################################################ INCLUDES 30238438Sdteske 31240684SdteskeBSDCFG_SHARE="/usr/share/bsdconfig" 32240684Sdteske. $BSDCFG_SHARE/common.subr || exit 1 33244675Sdteskef_dprintf "%s: loading includes..." "$0" 34240684Sdteskef_include $BSDCFG_SHARE/dialog.subr 35240684Sdteskef_include $BSDCFG_SHARE/mustberoot.subr 36240684Sdteskef_include $BSDCFG_SHARE/sysrc.subr 37238438Sdteske 38240684SdteskeBSDCFG_LIBE="/usr/libexec/bsdconfig" APP_DIR="080.console" 39238438Sdteskef_include_lang $BSDCFG_LIBE/$APP_DIR/include/messages.subr 40238438Sdteske 41259054Sdteskef_index_menusel_keyword $BSDCFG_LIBE/$APP_DIR/INDEX "$pgm" ipgm && 42259054Sdteske pgm="${ipgm:-$pgm}" 43238438Sdteske 44238438Sdteske############################################################ FUNCTIONS 45238438Sdteske 46238438Sdteske# dialog_menu_main 47238438Sdteske# 48238438Sdteske# Display the dialog(1)-based application main menu. 49238438Sdteske# 50238438Sdteskedialog_menu_main() 51238438Sdteske{ 52238438Sdteske local prompt="$msg_saver_menu_text" 53251264Sdteske local menu_list=" 54251390Sdteske '1 $msg_none' '$msg_none_saver_desc' 55251390Sdteske '2 $msg_blank' '$msg_blank_desc' 56251390Sdteske '3 $msg_beastie' '$msg_beastie_desc' 57251390Sdteske '4 $msg_daemon' '$msg_daemon_desc' 58251390Sdteske '5 $msg_dragon' '$msg_dragon_desc' 59251390Sdteske '6 $msg_fade' '$msg_fade_desc' 60251390Sdteske '7 $msg_fire' '$msg_fire_desc' 61251390Sdteske '8 $msg_green' '$msg_green_desc' 62251390Sdteske '9 $msg_logo' '$msg_logo_desc' 63251390Sdteske 'a $msg_rain' '$msg_rain_desc' 64251390Sdteske 'b $msg_snake' '$msg_snake_desc' 65251390Sdteske 'c $msg_star' '$msg_star_desc' 66251390Sdteske 'd $msg_warp' '$msg_warp_desc' 67238438Sdteske '$msg_timeout' '$msg_timeout_desc' 68238438Sdteske " # END-QUOTE 69251264Sdteske local defaultitem= # Calculated below 70251264Sdteske local hline="$hline_choose_a_screen_saver" 71238438Sdteske 72251190Sdteske local height width rows 73251190Sdteske eval f_dialog_menu_size height width rows \ 74251190Sdteske \"\$DIALOG_TITLE\" \ 75251190Sdteske \"\$DIALOG_BACKTITLE\" \ 76251190Sdteske \"\$prompt\" \ 77251190Sdteske \"\$hline\" \ 78251190Sdteske $menu_list 79238438Sdteske 80249751Sdteske case "$( f_sysrc_get saver )" in 81251904Sdteske [Nn][Oo]|'') defaultitem="1 $msg_none" ;; 82251904Sdteske blank) defaultitem="2 $msg_blank" ;; 83251904Sdteske beastie) defaultitem="3 $msg_beastie" ;; 84251904Sdteske daemon) defaultitem="4 $msg_daemon" ;; 85251904Sdteske dragon) defaultitem="5 $msg_dragon" ;; 86251904Sdteske fade) defaultitem="6 $msg_fade" ;; 87251904Sdteske fire) defaultitem="7 $msg_fire" ;; 88251904Sdteske green) defaultitem="8 $msg_green" ;; 89251904Sdteske logo) defaultitem="9 $msg_logo" ;; 90251904Sdteske rain) defaultitem="a $msg_rain" ;; 91251904Sdteske snake) defaultitem="b $msg_snake" ;; 92251904Sdteske star) defaultitem="c $msg_star" ;; 93251904Sdteske warp) defaultitem="d $msg_warp" ;; 94249751Sdteske esac 95249751Sdteske 96251236Sdteske local menu_choice 97251236Sdteske menu_choice=$( eval $DIALOG \ 98249751Sdteske --title \"\$DIALOG_TITLE\" \ 99238438Sdteske --backtitle \"\$DIALOG_BACKTITLE\" \ 100238438Sdteske --hline \"\$hline\" \ 101238438Sdteske --ok-label \"\$msg_ok\" \ 102238438Sdteske --cancel-label \"\$msg_cancel\" \ 103249751Sdteske --default-item \"\$defaultitem\" \ 104251190Sdteske --menu \"\$prompt\" \ 105251190Sdteske $height $width $rows \ 106238438Sdteske $menu_list \ 107240768Sdteske 2>&1 >&$DIALOG_TERMINAL_PASSTHRU_FD 108240768Sdteske ) 109240768Sdteske local retval=$? 110251236Sdteske f_dialog_menutag_store -s "$menu_choice" 111240768Sdteske return $retval 112238438Sdteske} 113238438Sdteske 114238438Sdteske############################################################ MAIN 115238438Sdteske 116238438Sdteske# Incorporate rc-file if it exists 117238438Sdteske[ -f "$HOME/.bsdconfigrc" ] && f_include "$HOME/.bsdconfigrc" 118238438Sdteske 119238438Sdteske# 120238438Sdteske# Process command-line arguments 121238438Sdteske# 122250633Sdteskewhile getopts h$GETOPTS_STDARGS flag; do 123238438Sdteske case "$flag" in 124252178Sdteske h|\?) f_usage $BSDCFG_LIBE/$APP_DIR/USAGE "PROGRAM_NAME" "$pgm" ;; 125238438Sdteske esac 126238438Sdteskedone 127238438Sdteskeshift $(( $OPTIND - 1 )) 128238438Sdteske 129238438Sdteske# 130238438Sdteske# Initialize 131238438Sdteske# 132238438Sdteskef_dialog_title "$msg_system_console_screen_saver" 133238438Sdteskef_dialog_backtitle "${ipgm:+bsdconfig }$pgm" 134238438Sdteskef_mustberoot_init 135238438Sdteske 136238438Sdteske# 137238438Sdteske# Launch application main menu 138238438Sdteske# 139251905Sdteskedialog_menu_main || f_die 140251905Sdteskef_dialog_menutag_fetch mtag 141238438Sdteske 142251905Sdteskecase "$mtag" in 143251905Sdteske"$msg_timeout") # Set the screen saver timeout interval 144251905Sdteske f_dialog_title "$msg_value_required" 145251905Sdteske f_dialog_input blanktime "$msg_enter_timeout_period" \ 146251905Sdteske "$( f_sysrc_get blanktime )" && 147259054Sdteske f_eval_catch "$0" f_sysrc_set \ 148259054Sdteske 'f_sysrc_set blanktime "%s"' "$blanktime" || f_die 149251905Sdteske f_dialog_title_restore 150251905Sdteske exit $SUCCESS 151251905Sdteskeesac 152238438Sdteske 153251905Sdteskesaver_to_set= 154251905Sdteskecase "$mtag" in 155251905Sdteske"1 $msg_none") # Disable the screensaver 156251905Sdteske saver_to_set="NO" ;; 157251905Sdteske"2 $msg_blank") # Simply blank the screen 158251905Sdteske saver_to_set="blank" ;; 159251905Sdteske"3 $msg_beastie") # "BSD Daemon" animated screen saver (graphics) 160251905Sdteske saver_to_set="beastie" ;; 161251905Sdteske"4 $msg_daemon") # "BSD Daemon" animated screen saver (text) 162251905Sdteske saver_to_set="daemon" ;; 163251905Sdteske"5 $msg_dragon") # Dragon screensaver (graphics) 164251905Sdteske saver_to_set="dragon" ;; 165251905Sdteske"6 $msg_fade") # Fade out effect screen saver 166251905Sdteske saver_to_set="fade" ;; 167251905Sdteske"7 $msg_fire") # Flames effect screen saver 168251905Sdteske saver_to_set="fire" ;; 169251905Sdteske"8 $msg_green") # "Green" power saving mode (if supported by monitor) 170251905Sdteske saver_to_set="green" ;; 171251905Sdteske"9 $msg_logo") # FreeBSD "logo" animated screen saver (graphics) 172251905Sdteske saver_to_set="logo" ;; 173251905Sdteske"a $msg_rain") # Rain drops screen saver 174251905Sdteske saver_to_set="rain" ;; 175251905Sdteske"b $msg_snake") # Draw a FreeBSD "snake" on your screen 176251905Sdteske saver_to_set="snake" ;; 177251905Sdteske"c $msg_star") # A "twinkling stars" effect 178251905Sdteske saver_to_set="star" ;; 179251905Sdteske"d $msg_warp") # A "stars warping" effect 180251905Sdteske saver_to_set="warp" ;; 181251905Sdteskeesac 182251905Sdteske 183251905Sdteskeif [ "$saver_to_set" ]; then 184259054Sdteske f_eval_catch "$0" f_sysrc_set \ 185259054Sdteske 'f_sysrc_set saver "%s"' "$saver_to_set" || f_die 186251905Sdteske break 187251905Sdteskeelse 188251907Sdteske f_die 1 "$msg_unknown_saver" 189251905Sdteskefi 190251905Sdteske 191238438Sdteskeexit $SUCCESS 192238438Sdteske 193238438Sdteske################################################################################ 194238438Sdteske# END 195238438Sdteske################################################################################ 196