├── LICENSE ├── README.md └── bin ├── appearance-menu ├── bcups ├── bmenu ├── initmenu ├── initmenu-openrc ├── system-settings ├── system-setup └── xinput_tui /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # bmenu 2 | Bash based system menu for manjaro/arch linux 3 | 4 | -------------------------------------------------------------------------------- /bin/appearance-menu: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RED='\e[41m' 4 | BLUE='\e[44m' 5 | ORANGE='\e[46m' 6 | NC='\e[0m' 7 | 8 | MINFONTSIZE=6 9 | MAXFONTSIZE=72 10 | STATUSVAR=1 11 | CANCELSTATUS=0 12 | SELECTEDITEM="" 13 | TEXTEDITOR=$EDITOR 14 | 15 | # Service messages section 16 | CONTINMSG="$BLUE Press any key to continue$NC" 17 | ERRORMSG="$RED Wrong.$NC" 18 | TRYAGAINMSG="$RED Press any key and try again$NC" 19 | CURRENTPREFIXMSG="(current: " 20 | CURRENTSUFFIXMSG="):" 21 | AVAILABLETHEMESMSG="Available themes " 22 | PS31MSG="Choose new gtk2 theme:" 23 | PS32MSG="Choose new gtk3 theme:" 24 | PS33MSG="Choose new icon theme:" 25 | PS34MSG="Choose new pointer theme:" 26 | SETTINGGTK2THEMEMSG='Setting theme to %s' 27 | SETTINGGTK3THEMEMSG='Setting theme to %s' 28 | SETTINGICONTHEMEMSG='Setting theme to %s' 29 | SETTINGPOINTERTHMSG='Setting theme to %s' 30 | GTK2THEMEPREFIXMSG="GTK2 theme " 31 | GTK3THEMEPREFIXMSG="GTK3 theme " 32 | ICONTHEMEPREFIXMSG="Icon theme " 33 | POINTERTHPREFIXMSG="Pointer theme " 34 | FONTSETPREFIXMSG="Font " 35 | FONTSIZESETMSG=" with size " 36 | FONTSIZEERRMSG="$RED Value is out of range$NC" 37 | SELECTEDFONTMSG="Selected font is: " 38 | INPUTFONTSIZEMSG="Input font size value in range from $MINFONTSIZE to $MAXFONTSIZE or just press Escape to discard changes" 39 | SELECTFONTSIZEMSG="Select font size value " 40 | CHOOSEFONTPROMPTMSG="Choose new font to use " 41 | SETSUFFIXMSG=" was set successfully" 42 | TOGGLEDARKTHEMEMSG="Done" 43 | 44 | if ! [ -f "$HOME/.gtkrc-2.0" ]; then 45 | cat > $HOME/.gtkrc-2.0 < $HOME/.config/gtk-3.0/settings.ini < $HOME/.icons/default/index.theme < /dev/null | grep "\"$font_family" | grep -o "pixelsize=[0-9][0-9]*" | grep -o "[0-9][0-9]*") 326 | if [ "$fccatmsggrep" != "" ]; then 327 | numberstring=$(echo "$fccatmsggrep" | sort -n | uniq | fzf -e --reverse --prompt="< $SELECTFONTSIZEMSG$CURRENTPREFIXMSG$CURRENTITEM$CURRENTSUFFIXMSG >") 328 | if [ "$numberstring" == "" ]; then 329 | number=0 330 | return 1 331 | else 332 | number=`expr $numberstring + 0` 333 | return 0 334 | fi 335 | else 336 | echo -e "$INPUTFONTSIZEMSG$CURRENTPREFIXMSG$CURRENTITEM$CURRENTSUFFIXMSG" 337 | manualnumberinput 338 | checkfontsize $number 339 | STATUSVAR=$? 340 | if [ $STATUSVAR -eq 1 ]; then 341 | echo "" 342 | echo -e "$ERRORMSG$FONTSIZEERRMSG" 343 | pressanykeyrequest 344 | return 1 345 | fi 346 | return 0 347 | fi 348 | } 349 | 350 | function manualnumberinput { 351 | while true; do 352 | read -s -n 1 schar 353 | case $schar in 354 | 1|2|3|4|5|6|7|8|9|0) 355 | numberstring+=$schar 356 | echo -n "$schar" 357 | ;; 358 | $'\000') #Enter 359 | break 360 | ;; 361 | $'\177') #Backspace 362 | numberstring="${numberstring%?}" 363 | echo -n -e "\b" 364 | echo -n " " 365 | echo -n -e "\b" 366 | ;; 367 | $'\e') #Escape 368 | numberstring="0" 369 | break 370 | ;; 371 | esac 372 | done 373 | number=`expr $numberstring + 0` 374 | return 0 375 | } 376 | 377 | function checkfontsize { 378 | value="$@" 379 | if [ $value -lt $MINFONTSIZE ] || [ $value -gt $MAXFONTSIZE ]; then 380 | return 1 381 | else 382 | return 0 383 | fi 384 | 385 | } 386 | 387 | function set_font { 388 | new_theme="$@" 389 | cp $HOME/.config/gtk-3.0/settings.ini $HOME/.config/gtk-3.0/settings.ini.bak && sed -i "s/$(grep "gtk-font-name" $HOME/.config/gtk-3.0/settings.ini)/gtk-font-name=$new_theme/g" $HOME/.config/gtk-3.0/settings.ini 390 | cp $HOME/.gtkrc-2.0 $HOME/.gtkrc-2.0.bak && sed -i "s/$(grep "gtk-font-name" $HOME/.gtkrc-2.0)/gtk-font-name=\"$new_theme\"/g" $HOME/.gtkrc-2.0 391 | STATUSVAR=$? 392 | return $STATUSVAR 393 | } 394 | 395 | function choose_font { 396 | new_font="" 397 | font_size=0 398 | CURRENTITEM=$(current_item_get "gtkfontname") 399 | SELECTEDITEM=$(fc-list : family | tr , \\n | sort | uniq | fzf -e --reverse --prompt="< $CHOOSEFONTPROMPTMSG$CURRENTPREFIXMSG$CURRENTITEM$CURRENTSUFFIXMSG >") 400 | if [ "$SELECTEDITEM" != "" ]; then 401 | new_font="$SELECTEDITEM" 402 | echo -e "$SELECTEDFONTMSG$SELECTEDITEM" 403 | numberinputprocedure 404 | STATUSVAR=$? 405 | if [ $STATUSVAR -eq 1 ]; then 406 | return $STATUSVAR 407 | else 408 | font_size=$number 409 | set_font $new_font $font_size 410 | return $STATUSVAR 411 | fi 412 | fi 413 | STATUSVAR=1 414 | return $STATUSVAR 415 | } 416 | 417 | function toggle_dark_theme { 418 | grep -q "gtk-application-prefer-dark-theme=" $HOME/.config/gtk-3.0/settings.ini || echo "gtk-application-prefer-dark-theme=1" >> $HOME/.config/gtk-3.0/settings.ini 419 | STATUSVAR=$? 420 | case $(awk -F= '/gtk-application-prefer-dark-theme/{print $2}' $HOME/.config/gtk-3.0/settings.ini) in 421 | true) sed -i "s/gtk-application-prefer-dark-theme=true/gtk-application-prefer-dark-theme=false/g" $HOME/.config/gtk-3.0/settings.ini 422 | ;; 423 | false) sed -i "s/gtk-application-prefer-dark-theme=false/gtk-application-prefer-dark-theme=true/g" $HOME/.config/gtk-3.0/settings.ini 424 | ;; 425 | 1) sed -i "s/gtk-application-prefer-dark-theme=1/gtk-application-prefer-dark-theme=0/g" $HOME/.config/gtk-3.0/settings.ini 426 | ;; 427 | 0) sed -i "s/gtk-application-prefer-dark-theme=0/gtk-application-prefer-dark-theme=1/g" $HOME/.config/gtk-3.0/settings.ini 428 | ;; 429 | esac 430 | STATUSVAR+=$? 431 | return $STATUSVAR 432 | } 433 | 434 | function main { 435 | while true; do 436 | clear 437 | echo "" 438 | echo -e " ::Appearance:: " 439 | echo -e " ┌────────────────────────────────────────────────────────────────┐" 440 | echo -e " │ 1 Set gtk2 theme 2 Set gtk3 theme │" 441 | echo -e " │ 3 Set font 4 Set icon theme │" 442 | echo -e " │ 5 Toggle dark theme 6 Set pointer theme │" 443 | echo -e " │ 7 Edit gtk2 settings 8 Edit gtk3 settings │" 444 | echo -e " │ 9 Edit Xresources │" 445 | echo -e " └────────────────────────────────────────────────────────────────┘" 446 | echo -e " Select an item - 0 Exit " 447 | echo "" 448 | read -s -n1 choix 449 | case $choix in 450 | 1) 451 | echo 452 | choose_gtk2_theme 453 | STATUSVAR=$? 454 | if [ $STATUSVAR -eq 0 ]; then 455 | echo "" 456 | echo -e "$GTK2THEMEPREFIXMSG$SELECTEDITEM$SETSUFFIXMSG" 457 | pressanykeyrequest 458 | fi 459 | ;; 460 | 2) 461 | echo 462 | choose_gtk3_theme 463 | STATUSVAR=$? 464 | if [ $STATUSVAR -eq 0 ]; then 465 | echo "" 466 | echo -e "$GTK3THEMEPREFIXMSG$SELECTEDITEM$SETSUFFIXMSG" 467 | pressanykeyrequest 468 | fi 469 | ;; 470 | 3) 471 | echo 472 | choose_font 473 | STATUSVAR=$? 474 | if [ $STATUSVAR -eq 0 ]; then 475 | echo "" 476 | echo -e "$FONTSETPREFIXMSG$SELECTEDITEM$FONTSIZESETMSG$font_size$SETSUFFIXMSG" 477 | pressanykeyrequest 478 | fi 479 | ;; 480 | 4) 481 | echo 482 | choose_icon_theme 483 | STATUSVAR=$? 484 | if [ $STATUSVAR -eq 0 ]; then 485 | echo "" 486 | echo -e "$ICONTHEMEPREFIXMSG$SELECTEDITEM$SETSUFFIXMSG" 487 | pressanykeyrequest 488 | fi 489 | ;; 490 | 5) 491 | echo 492 | toggle_dark_theme 493 | STATUSVAR=$? 494 | if [ $STATUSVAR -eq 0 ]; then 495 | echo "" 496 | echo -e "$TOGGLEDARKTHEMEMSG" 497 | pressanykeyrequest 498 | fi 499 | ;; 500 | 6) 501 | echo 502 | choose_pointer_theme 503 | STATUSVAR=$? 504 | if [ $STATUSVAR -eq 0 ]; then 505 | echo "" 506 | echo -e "$POINTERTHPREFIXMSG$SELECTEDITEM$SETSUFFIXMSG" 507 | pressanykeyrequest 508 | fi 509 | ;; 510 | 7) 511 | echo 512 | $TEXTEDITOR $HOME/.gtkrc-2.0 513 | echo "" 514 | ;; 515 | 8) 516 | echo 517 | $TEXTEDITOR $HOME/.config/gtk-3.0/settings.ini 518 | echo "" 519 | ;; 520 | 9) 521 | echo 522 | $TEXTEDITOR $HOME/.Xresources 523 | echo "" 524 | ;; 525 | 0) 526 | clear && exit 527 | ;; 528 | *) 529 | echo -e "$ERRORMSG$TRYAGAINMSG" 530 | read -s -n1 531 | clear 532 | ;; 533 | esac 534 | done 535 | } 536 | 537 | main 538 | -------------------------------------------------------------------------------- /bin/bcups: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RED='\e[41m' 4 | BLUE='\e[44m' 5 | ORANGE='\e[46m' 6 | NC='\e[0m' 7 | browser='elinks' 8 | printers=$(lpstat -p -d | awk '/printer/ {print $2}') 9 | enabled_printers=$(lpstat -p -d | awk '/enabled/ {print $2}') 10 | STATUSVAR=1 11 | 12 | # Service messages section 13 | CONTINMSG="$BLUE Press any key to continue$NC" 14 | ERRORMSG="$RED Wrong.$NC" 15 | TRYAGAINMSG="$RED Press any key and try again$NC" 16 | XSANEINSTMSG="Xsane is not installed and pacman seems to be in use" 17 | SELECTDEFAULTPRINTERMSG="Select new default printer" 18 | DEFAULTPRINTERSETMSG="The new default printer has been set" 19 | SELECTFILESFORPRINTMSG="Select the files to print (use TAB to mark files for printing)" 20 | SELECTPRINTERTOUSEMSG="Select the printer to use" 21 | SELECTFILESFORPRINTINGMSG="Select the files to print (use TAB to mark files for printing)" 22 | PRINTINGMSG="Printing now" 23 | SEARCHINGSCANNERSMSG="Searching for scanners... Select one" 24 | SELECTDEFAULTSCANNERMSG="Searching for scanners... Select new default" 25 | IMGFILETYPECHOOSEMSG="Which filetype should be used? " 26 | NAMEFORSCANNEDFILEMSG="What name shall be given to the scanned file?" 27 | 28 | function pressanykeyrequest { 29 | echo -e "$CONTINMSG" 30 | read -s -n1 31 | STATUSVAR=1 32 | } 33 | 34 | function scanner_interface { 35 | if [ -e /usr/bin/xsane ]; then 36 | xsane 37 | STATUSVAR=$? 38 | else 39 | if [ - e /var/lib/pacman/db.lck ]; then 40 | echo "$XSANEINSTMSG" 41 | STATUSVAR=$? 42 | else 43 | sudo pacman -Sy xsane && xsane 44 | STATUSVAR=$? 45 | fi 46 | fi 47 | return $STATUSVAR 48 | } 49 | 50 | function webinterface { 51 | $browser http://localhost:631 52 | STATUSVAR=$? 53 | return $STATUSVAR 54 | } 55 | 56 | function set_default_printer { 57 | lpoptions -d $(echo $printers | fzf -e --reverse --prompt="$SELECTDEFAULTPRINTERMSG >") 58 | STATUSVAR=$? 59 | if [ $STATUSVAR -eq 0 ]; then 60 | echo "" 61 | echo "" 62 | echo "$DEFAULTPRINTERSETMSG" 63 | fi 64 | return $STATUSVAR 65 | } 66 | 67 | function print_file { 68 | grep -q "Default" ~/.cups/lpoptions && \ 69 | lpr $(fzf -m --reverse --prompt=" $SELECTFILESFORPRINTMSG >") || \ 70 | lpr -P $(echo $printers | fzf -e --reverse --prompt="$SELECTPRINTERTOUSEMSG >") $(fzf -m --reverse --prompt="$SELECTFILESFORPRINTINGMSG >") 71 | STATUSVAR=$? 72 | if [ $STATUSVAR -eq 0 ]; then 73 | echo "" 74 | echo "" 75 | echo "$PRINTINGMSG" 76 | sleep 3 77 | fi 78 | return $STATUSVAR 79 | } 80 | 81 | function select_scanner { 82 | scanimage -L 2> /dev/null | fzf -e --reverse --prompt="$SEARCHINGSCANNERSMSG >" | awk '{print substr($2, 2, length($2) - 2)}' 83 | STATUSVAR=$? 84 | return $STATUSVAR 85 | } 86 | 87 | function set_default_scanner { 88 | default_scanner=$(scanimage -L 2> /dev/null | \ 89 | fzf -e --reverse --prompt="$SELECTDEFAULTSCANNERMSG >" | \ 90 | awk '{print $2} {print substr($2, 2, length($2) - 2)}') 91 | STATUSVAR=$? 92 | if [ $STATUSVAR -eq 0 ] && [ "$default_scanner" != "" ]; then 93 | echo "export SANE_DEFAULT_DEVICE=$default_scanner" >> $HOME/.profile 94 | SANE_DEFAULT_DEVICE="$default_scanner" 95 | fi 96 | return $STATUSVAR 97 | } 98 | 99 | function select_filetype { 100 | PS3="$IMGFILETYPECHOOSEMSG" 101 | # Gather the results in an array. 102 | filetypes=("pnm" "tiff" "png" "jpeg") 103 | 104 | select pick in "${filetypes[@]}" 105 | do 106 | case $pick in 107 | *) echo $pick 108 | break 109 | esac 110 | done 111 | } 112 | 113 | function scan { 114 | echo "$NAMEFORSCANNEDFILEMSG" 115 | read filename 116 | # check file name function needs 117 | if [ "$filename" != "" ]; then 118 | eval filetype=$(select_filetype) 119 | if [ "$filetype" != "" ]; then 120 | scanner=$(select_scanner) 121 | if [ "$scanner" != "" ]; then 122 | scanimage -p -d $scanner --format=$filetype > $filename.$filetype 123 | STATUSVAR=$? 124 | else 125 | STATUSVAR=1 126 | fi 127 | else 128 | STATUSVAR=1 129 | fi 130 | else 131 | STATUSVAR=1 132 | fi 133 | return $STATUSVAR 134 | } 135 | 136 | function default_scan { 137 | echo "$NAMEFORSCANNEDFILEMSG" 138 | read filename 139 | # check file name function needs 140 | if [ "$filename" != "" ]; then 141 | eval filetype=$(select_filetype) 142 | if [ "$filetype" != "" ]; then 143 | scanimage -p --format=$filetype > $filename.$filetype 144 | STATUSVAR=$? 145 | else 146 | STATUSVAR=1 147 | fi 148 | else 149 | STATUSVAR=1 150 | fi 151 | return $STATUSVAR 152 | } 153 | 154 | 155 | function main { 156 | while true; do 157 | clear 158 | echo "" 159 | echo -e " ::Printers and scanners:: " 160 | echo -e " ┌─────────────────────────────────────────────────────────────┐" 161 | echo -e " │ 1 Manage Printers 2 Print files │" 162 | echo -e " │ 3 Set default printer 4 List printers │" 163 | echo -e " │ 5 Set default scanner 6 Scan with GUI │" 164 | echo -e " │ 7 List scanners 8 Scan using defaults │" 165 | echo -e " └─────────────────────────────────────────────────────────────┘" 166 | echo -e " Select an item - 0 Exit " 167 | echo "" 168 | read -s -n1 choix 169 | case $choix in 170 | 1) 171 | echo 172 | webinterface 173 | STATUSVAR=$? 174 | if [ $STATUSVAR -eq 0 ]; then 175 | pressanykeyrequest 176 | else 177 | echo "" 178 | fi 179 | ;; 180 | 2) 181 | echo 182 | print_file 183 | STATUSVAR=$? 184 | if [ $STATUSVAR -eq 0 ]; then 185 | pressanykeyrequest 186 | else 187 | echo "" 188 | fi 189 | ;; 190 | 3) 191 | echo 192 | set_scanner 193 | STATUSVAR=$? 194 | if [ $STATUSVAR -eq 0 ]; then 195 | pressanykeyrequest 196 | else 197 | echo "" 198 | fi 199 | ;; 200 | 4) 201 | echo 202 | lpstat -p -d 203 | STATUSVAR=$? 204 | if [ $STATUSVAR -eq 0 ]; then 205 | pressanykeyrequest 206 | else 207 | echo "" 208 | fi 209 | ;; 210 | 5) 211 | echo 212 | set_default_scanner 213 | STATUSVAR=$? 214 | if [ $STATUSVAR -eq 0 ]; then 215 | pressanykeyrequest 216 | else 217 | echo "" 218 | fi 219 | ;; 220 | 6) 221 | echo 222 | scanner_inerface 223 | STATUSVAR=$? 224 | if [ $STATUSVAR -eq 0 ]; then 225 | pressanykeyrequest 226 | else 227 | echo "" 228 | fi 229 | ;; 230 | 7) 231 | echo 232 | scanimage -L 2> /dev/null 233 | STATUSVAR=$? 234 | if [ $STATUSVAR -eq 0 ]; then 235 | pressanykeyrequest 236 | else 237 | echo "" 238 | fi 239 | ;; 240 | 8) 241 | echo 242 | default_scan 243 | STATUSVAR=$? 244 | if [ $STATUSVAR -eq 0 ]; then 245 | pressanykeyrequest 246 | else 247 | echo "" 248 | fi 249 | ;; 250 | 0) 251 | clear && exit 252 | ;; 253 | *) 254 | echo -e "$ERRORMSG$TRYAGAINMSG" 255 | read -s -n1 256 | clear 257 | ;; 258 | esac 259 | done 260 | } 261 | 262 | main 263 | -------------------------------------------------------------------------------- /bin/bmenu: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RED='\e[41m' 4 | BLUE='\e[44m' 5 | ORANGE='\e[46m' 6 | NC='\e[0m' 7 | 8 | # Service messages section 9 | ERRORMSG="$RED Wrong.$NC" 10 | TRYAGAINMSG="$RED Press any key and try again$NC" 11 | INSTALLINGRNG1MSG="Installing ranger to manage files" 12 | INSTALLINGRNG2MSG="Installing ranger to get a rifle" 13 | INSTALLINGTIMESETMSG="Installing timeset to manage time" 14 | INSTALLINGHTOPMSG="Installing htop to manage tasks" 15 | INSTALLINGBRANDRMSG="Installing brandr to manage display" 16 | INSTALLINGMHWDTUIMSG="Installing mhwd-tui to manage kernels and drivers" 17 | CLIFMNOTINSTMSG="No cli filemanager is installed and pacman seems to be in use" 18 | RIFLENOTINSTMSG="Rifle is not installed and pacman seems to be in use" 19 | TIMESETNOTINSTMSG="Timeset is not installed and pacman seems to be in use" 20 | CLIBROWSNOTINSTMSG="No cli browser installed and pacman seems to be in use" 21 | BRANDRNOTINSTMSG="Brandr is not installed and pacman seems to be in use" 22 | MHWDTUINOTINSTMSG="Mhwd-tui is not installed and pacman seems to be in use" 23 | 24 | if [ $(cat /proc/1/comm) = "systemd" ]; then 25 | systemctl status NetworkManager.service 2>/dev/null | grep -q " active " && netcommand="nmtui" 26 | systemctl status Netctl.service 2>/dev/null | grep -q " active " && netcommand="sudo wifi-menu" 27 | systemctl status systemd-networkd 2>/dev/null | grep -q " active " && netcommand="wpa_tui" 28 | else 29 | rc-status | grep -q "NetworkManager" && netcommand="nmtui" 30 | rc-status | grep -q "Netctl" && netcommand="sudo wifi-menu" 31 | fi 32 | 33 | function cli_filemanager { 34 | if [ -e /usr/bin/ranger ]; then 35 | ranger 36 | elif [ -e /usr/bin/mc ]; then 37 | mc 38 | else 39 | echo "$INSTALLINGRNG1MSG" 40 | if [ - e /var/lib/pacman/db.lck ]; then 41 | echo "$CLIFMNOTINSTMSG" 42 | else 43 | sudo pacman -Sy ranger && ranger 44 | fi 45 | fi 46 | } 47 | 48 | function file_finder { 49 | if [ -e /usr/bin/rifle ]; then 50 | rifle $(find -type f | fzf -e --reverse) 51 | else 52 | echo "$INSTALLINGRNG2MSG" 53 | if [ - e /var/lib/pacman/db.lck ]; then 54 | echo "$RIFLENOTINSTMSG" 55 | else 56 | sudo pacman -Sy ranger && rifle $(find -type f | fzf -e --reverse) 57 | fi 58 | fi 59 | } 60 | 61 | function manage_time { 62 | if [ -e /usr/bin/timeset ]; then 63 | sudo timeset 64 | else 65 | echo "$INSTALLINGTIMESETMSG" 66 | if [ -e /var/lib/pacman/db.lck ]; then 67 | echo "$TIMESETNOTINSTMSG" 68 | else 69 | sudo pacman -Sy timeset && sudo timeset 70 | fi 71 | fi 72 | } 73 | 74 | function cli_browser { 75 | if [ -e /usr/bin/elinks ]; then 76 | elinks 77 | elif [ -e /usr/bin/w3m ]; then 78 | w3m 79 | elif [ -e /usr/bin/links ]; then 80 | links 81 | elif [ -e /usr/bin/lynx ]; then 82 | lynx 83 | else 84 | if [ -e /var/lib/pacman/db.lck ]; then 85 | echo "$CLIBROWSNOTINSTMSG" 86 | else 87 | sudo pacman -Sy elinks && elinks 88 | fi 89 | fi 90 | } 91 | 92 | function taskmanager { 93 | if [ -e /usr/bin/htop ]; then 94 | htop 95 | else 96 | echo "$INSTALLINGHTOPMSG" 97 | sudo pacman -Sy htop && htop 98 | fi 99 | } 100 | 101 | function display_settings { 102 | if [ -e /usr/bin/brandr ]; then 103 | brandr 104 | else 105 | echo "$INSTALLINGBRANDRMSG" 106 | if [ -e /var/lib/pacman/db.lck ]; then 107 | echo "$BRANDRNOTINSTMSG" 108 | else 109 | sudo pacman -Sy brandr && brandr 110 | fi 111 | fi 112 | } 113 | 114 | function hardware_settings { 115 | if [ -e /usr/bin/mhwd-tui ]; then 116 | mhwd-tui 117 | else 118 | echo "$INSTALLINGMHWDTUIMSG" 119 | if [ -e /var/lib/pacman/db.lck ]; then 120 | echo "$MHWDTUINOTINSTMSG" 121 | else 122 | sudo pacman -Sy mhwd-tui && mhwd-tui 123 | fi 124 | fi 125 | } 126 | 127 | function init_settings { 128 | if [ $(cat /proc/1/comm) = "systemd" ]; then 129 | initmenu 130 | else 131 | initmenu-openrc 132 | fi 133 | } 134 | 135 | function main { 136 | while true; do 137 | clear 138 | echo "" 139 | echo -e " ::Main menu:: " 140 | echo -e " ┌─────────────────────────────────────────────────────────────┐" 141 | echo -e " │ 1 Hardware and drivers 2 Display │" 142 | echo -e " │ 3 Printers 4 Appearance │" 143 | echo -e " │ 5 Package manager 6 Network │" 144 | echo -e " │ 7 Sound 8 Configuration │" 145 | echo -e " │ 9 Time settings T Taskmanager │" 146 | echo -e " │ F File Manager B Browser │" 147 | echo -e " │ S Search I Init-system │" 148 | echo -e " └─────────────────────────────────────────────────────────────┘" 149 | echo -e " Select an item - 0 Exit " 150 | echo "" 151 | read -s -n1 choix 152 | case $choix in 153 | 1) 154 | echo 155 | hardware_settings 156 | echo "" 157 | ;; 158 | 2) 159 | echo 160 | display_settings 161 | echo "" 162 | ;; 163 | 3) 164 | echo 165 | bcups 166 | echo "" 167 | ;; 168 | 4) 169 | echo 170 | appearance-menu 171 | echo "" 172 | ;; 173 | 5) 174 | echo 175 | if [[ -e /usr/bin/pacui ]]; then 176 | pacui 177 | else 178 | pacli 179 | fi 180 | echo "" 181 | ;; 182 | 6) 183 | echo 184 | $netcommand 185 | echo "" 186 | ;; 187 | 7) 188 | echo 189 | alsamixer 190 | echo "" 191 | ;; 192 | 8) 193 | echo 194 | system-settings 195 | echo "" 196 | ;; 197 | 9) 198 | echo 199 | manage_time 200 | echo "" 201 | ;; 202 | t|T) 203 | echo 204 | taskmanager 205 | echo "" 206 | ;; 207 | f|F) 208 | echo 209 | cli_filemanager 210 | echo "" 211 | ;; 212 | b|B) 213 | echo 214 | cli_browser 215 | echo "" 216 | ;; 217 | s|S) 218 | echo 219 | file_finder 220 | echo "" 221 | ;; 222 | i|I) 223 | echo 224 | init_settings 225 | echo "" 226 | ;; 227 | 0) 228 | clear && exit 229 | ;; 230 | *) 231 | echo -e "$ERRORMSG$TRYAGAINMSG" 232 | read -s -n1 233 | clear 234 | ;; 235 | esac 236 | done 237 | } 238 | 239 | main 240 | -------------------------------------------------------------------------------- /bin/initmenu: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RED='\e[41m' 4 | BLUE='\e[44m' 5 | ORANGE='\e[46m' 6 | NC='\e[0m' 7 | STATUSVAR=1 8 | TEXTEDITOR=$EDITOR 9 | 10 | # Service messages section 11 | CONTINMSG="$BLUE Press any key to continue$NC" 12 | ERRORMSG="$RED Wrong.$NC" 13 | TRYAGAINMSG="$RED Press any key and try again$NC" 14 | SELECTFILEMSG="Select file to configure and press Enter: " 15 | SELECTTARGETMSG="Select target and press Enter to change to: " 16 | SERVICEPREFIXMSG="Service " 17 | SERVICESTARTEDMSG=" was started successfully" 18 | SERVICEENABLEDMSG=" was enabled successfully" 19 | SERVICESTOPPEDMSG=" was stopped successfully" 20 | SERVICEDISABLEDMSG=" was disabled successfully" 21 | 22 | function pressanykeyrequest { 23 | echo -e "$CONTINMSG" 24 | read -s -n1 25 | STATUSVAR=1 26 | } 27 | 28 | function config_editor { 29 | PS3="$SELECTFILEMSG" 30 | configs=("journald.conf" "system.conf" "logind.conf" "user.conf" "cancel") 31 | 32 | select pick in "${configs[@]}" 33 | do 34 | case $pick in 35 | logind.conf) 36 | [ -e /etc/systemd/logind.conf.d/10-logind.conf ] || \ 37 | sudo mkdir -p /etc/systemd/logind.conf.d/ && \ 38 | sudo cp /etc/systemd/logind.conf /etc/systemd/logind.conf.d/10-logind.conf && \ 39 | sudo $TEXTEDITOR /etc/systemd/logind.conf.d/10-logind.conf 40 | break 41 | ;; 42 | system.conf) 43 | [ -e /etc/systemd/system.conf.d/10-system.conf ] || \ 44 | sudo mkdir -p /etc/systemd/system.conf.d/ && \ 45 | sudo cp /etc/systemd/system.conf /etc/systemd/system.conf.d/10-system.conf && \ 46 | sudo $TEXTEDITOR /etc/systemd/system.conf.d/10-system.conf 47 | break 48 | ;; 49 | journald.conf) 50 | [ -e /etc/systemd/journald.conf.d/10-journald.conf ] || \ 51 | sudo mkdir -p /etc/systemd/journald.conf.d/ && \ 52 | sudo cp /etc/systemd/journald.conf /etc/systemd/journald.conf.d/10-journald.conf && \ 53 | sudo $TEXTEDITOR /etc/systemd/journald.conf.d/10-journald.conf 54 | break 55 | ;; 56 | user.conf) 57 | [ -e /etc/systemd/user.conf.d/10-user.conf ] || \ 58 | sudo mkdir -p /etc/systemd/user.conf.d/ && \ 59 | sudo cp /etc/systemd/user.conf /etc/systemd/user.conf.d/10-user.conf && \ 60 | sudo $TEXTEDITOR /etc/systemd/user.conf.d/10-user.conf 61 | break 62 | ;; 63 | cancel) 64 | break 65 | esac 66 | done 67 | 68 | } 69 | 70 | function change_runlevel { 71 | PS3="$SELECTTARGETMSG" 72 | targets=("poweroff" "rescue" "multi-user" "graphical" "reboot" "cancel") 73 | 74 | select pick in "${targets[@]}" 75 | do 76 | case $pick in 77 | poweroff) 78 | sudo systemctl isolate poweroff.target 79 | break 80 | ;; 81 | reboot) 82 | sudo systemctl isolate reboot.target 83 | break 84 | ;; 85 | rescue) 86 | sudo systemctl isolate rescue.target 87 | break 88 | ;; 89 | multi-user) 90 | sudo systemctl isolate multi-user.target 91 | break 92 | ;; 93 | graphical) 94 | sudo systemctl isolate graphical.target 95 | break 96 | ;; 97 | cancel) 98 | break 99 | esac 100 | done 101 | 102 | 103 | } 104 | 105 | function enable_services { 106 | OUTPUTITEM="" 107 | OUTPUTITEM=$(systemctl list-unit-files | awk '/disabled/ {print $1}' | fzf -m -e --reverse) 108 | if [ "$OUTPUTITEM" != "" ] 109 | then 110 | sudo systemctl enable $OUTPUTITEM 111 | STATUSVAR=$? 112 | else 113 | STATUSVAR=1 114 | fi 115 | return $STATUSVAR 116 | } 117 | 118 | function start_services { 119 | OUTPUTITEM="" 120 | OUTPUTITEM=$(systemctl list-unit-files | awk '/disabled/ {print $1}' | fzf -m -e --reverse) 121 | if [ "$OUTPUTITEM" != "" ] 122 | then 123 | sudo systemctl start $OUTPUTITEM 124 | STATUSVAR=$? 125 | else 126 | STATUSVAR=1 127 | fi 128 | return $STATUSVAR 129 | } 130 | 131 | function stop_services { 132 | OUTPUTITEM="" 133 | OUTPUTITEM=$(systemctl list-unit-files | awk '/enabled/ {print $1}' | fzf -m -e --reverse) 134 | if [ "$OUTPUTITEM" != "" ] 135 | then 136 | sudo systemctl stop $OUTPUTITEM 137 | STATUSVAR=$? 138 | else 139 | STATUSVAR=1 140 | fi 141 | return $STATUSVAR 142 | } 143 | 144 | function disable_services { 145 | OUTPUTITEM="" 146 | OUTPUTITEM=$(systemctl list-unit-files | awk '/enabled/ {print $1}' | fzf -m -e --reverse) 147 | if [ "$OUTPUTITEM" != "" ] 148 | then 149 | sudo systemctl disable $OUTPUTITEM 150 | STATUSVAR=$? 151 | else 152 | STATUSVAR=1 153 | fi 154 | return $STATUSVAR 155 | } 156 | 157 | function main { 158 | while true; do 159 | clear 160 | echo "" 161 | echo -e " ::Init menu:: " 162 | echo -e " ┌─────────────────────────────────────────────────────────────┐" 163 | echo -e " │ 1 Enable services 2 Disable services │" 164 | echo -e " │ 3 Start services 4 Stop Services │" 165 | echo -e " │ 5 List active services 6 Show boot messages │" 166 | echo -e " │ 7 Edit configuration files 8 Change runlevel │" 167 | echo -e " │ 9 Analyze boot │" 168 | echo -e " └─────────────────────────────────────────────────────────────┘" 169 | echo -e " Select an item - 0 Exit " 170 | echo "" 171 | read -s -n1 choix 172 | case $choix in 173 | 1) 174 | echo 175 | enable_services 176 | STATUSVAR=$? 177 | if [ $STATUSVAR -eq 0 ]; then 178 | echo -e "$SERVICEPREFIXMSG$OUTPUTITEM$SERVICEENABLEDMSG" 179 | pressanykeyrequest 180 | else 181 | echo "" 182 | fi 183 | ;; 184 | 2) 185 | echo 186 | disable_services 187 | STATUSVAR=$? 188 | if [ $STATUSVAR -eq 0 ]; then 189 | echo -e "$SERVICEPREFIXMSG$OUTPUTITEM$SERVICEDISABLEDMSG" 190 | pressanykeyrequest 191 | else 192 | echo "" 193 | fi 194 | ;; 195 | 3) 196 | echo 197 | start_services 198 | STATUSVAR=$? 199 | if [ $STATUSVAR -eq 0 ]; then 200 | echo -e "$SERVICEPREFIXMSG$OUTPUTITEM$SERVICESTARTEDMSG" 201 | pressanykeyrequest 202 | else 203 | echo"" 204 | fi 205 | ;; 206 | 4) 207 | echo 208 | stop_services 209 | STATUSVAR=$? 210 | if [ $STATUSVAR -eq 0 ]; then 211 | echo -e "$SERVICEPREFIXMSG$OUTPUTITEM$SERVICESTOPPEDMSG" 212 | pressanykeyrequest 213 | else 214 | echo "" 215 | fi 216 | ;; 217 | 5) 218 | echo 219 | systemctl 220 | echo "" 221 | pressanykeyrequest 222 | ;; 223 | 6) 224 | echo 225 | dmesg 226 | echo "" 227 | pressanykeyrequest 228 | ;; 229 | 7) 230 | echo 231 | config_editor 232 | echo "" 233 | ;; 234 | 8) 235 | echo 236 | change_runlevel 237 | echo "" 238 | ;; 239 | 9) 240 | echo 241 | clear 242 | systemd-analyze blame 243 | echo "" 244 | pressanykeyrequest 245 | ;; 246 | 0) 247 | clear && exit 248 | ;; 249 | *) 250 | echo -e "$ERRORMSG$TRYAGAINMSG" 251 | read -s -n1 252 | clear 253 | ;; 254 | esac 255 | done 256 | } 257 | 258 | main 259 | -------------------------------------------------------------------------------- /bin/initmenu-openrc: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RED='\e[41m' 4 | BLUE='\e[44m' 5 | ORANGE='\e[46m' 6 | NC='\e[0m' 7 | STATUSVAR=1 8 | TEXTEDITOR=$EDITOR 9 | 10 | # Service messages section 11 | CONTINMSG="$BLUE Press any key to continue$NC" 12 | ERRORMSG="$RED Wrong.$NC" 13 | TRYAGAINMSG="$RED Press any key and try again$NC" 14 | SELECTFILEMSG="Select file to configure and press Enter: " 15 | SERVICEPREFIXMSG="Service " 16 | SERVICESTARTEDMSG=" was started successfully" 17 | SERVICEENABLEDMSG=" was enabled successfully" 18 | SERVICESTOPPEDMSG=" was stopped successfully" 19 | SERVICEDISABLEDMSG=" was disabled successfully" 20 | 21 | function pressanykeyrequest { 22 | echo -e "$CONTINMSG" 23 | read -s -n1 24 | STATUSVAR=1 25 | } 26 | 27 | function config_editor { 28 | PS3="$SELECTFILEMSG" 29 | configs=("xdm" "rc.local" "sysctl.conf" "modules" "cancel") 30 | 31 | select pick in "${configs[@]}" 32 | do 33 | case $pick in 34 | xdm) 35 | sudo $EDITOR /etc/conf.d/xdm 36 | break 37 | ;; 38 | rc.local) 39 | sudo $EDITOR /etc/rc.local 40 | break 41 | ;; 42 | sysctl.conf) 43 | sudo $EDITOR /etc/sysctl.conf 44 | break 45 | ;; 46 | modules) 47 | sudo $EDITOR /etc/conf.d/modules 48 | break 49 | ;; 50 | cancel) 51 | break 52 | esac 53 | done 54 | } 55 | 56 | function enable_services { 57 | sudo rc-update add $(rc-status -s | awk '/stopped/ {print $1}' | fzf -m -e --reverse) 58 | STATUSVAR=$? 59 | return $STATUSVAR 60 | } 61 | 62 | function start_services { 63 | sudo rc-service start $(rc-status -s | awk '/stopped/ {print $1}' | fzf -m -e --reverse) 64 | STATUSVAR=$? 65 | return $STATUSVAR 66 | } 67 | 68 | function stop_services { 69 | sudo rc-service stop $(rc-status -s | awk '/started/ {print $1}' | fzf -m -e --reverse) 70 | STATUSVAR=$? 71 | return $STATUSVAR 72 | } 73 | 74 | function disable_services { 75 | sudo rc-update del $(rc-status -s | awk '/started/ {print $1}' | fzf -m -e --reverse) 76 | STATUSVAR=$? 77 | return $STATUSVAR 78 | } 79 | 80 | function main { 81 | while true; do 82 | clear 83 | echo "" 84 | echo -e " ::Init menu:: " 85 | echo -e " ┌─────────────────────────────────────────────────────────────┐" 86 | echo -e " │ 1 Enable services 2 Disable services │" 87 | echo -e " │ 3 Start services 4 Stop Services │" 88 | echo -e " │ 5 List active services 6 Show boot messages │" 89 | echo -e " │ 7 Edit configuration files │" 90 | echo -e " └─────────────────────────────────────────────────────────────┘" 91 | echo -e " Select an item - 0 Exit " 92 | echo "" 93 | read -s -n1 choix 94 | case $choix in 95 | 1) 96 | echo 97 | enable_services 98 | STATUSVAR=$? 99 | if [ $STATUSVAR -eq 0 ]; then 100 | echo -e "$SERVICEPREFIXMSG$SERVICEENABLEDMSG" 101 | pressanykeyrequest 102 | else 103 | echo "" 104 | fi 105 | ;; 106 | 2) 107 | echo 108 | disable_services 109 | STATUSVAR=$? 110 | if [ $STATUSVAR -eq 0 ]; then 111 | echo -e "$SERVICEPREFIXMSG$SERVICEDISABLEDMSG" 112 | pressanykeyrequest 113 | else 114 | echo "" 115 | fi 116 | ;; 117 | 3) 118 | echo 119 | start_services 120 | STATUSVAR=$? 121 | if [ $STATUSVAR -eq 0 ]; then 122 | echo -e "$SERVICEPREFIXMSG$SERVICESTARTEDMSG" 123 | pressanykeyrequest 124 | else 125 | echo"" 126 | fi 127 | ;; 128 | 4) 129 | echo 130 | stop_services 131 | STATUSVAR=$? 132 | if [ $STATUSVAR -eq 0 ]; then 133 | echo -e "$SERVICEPREFIXMSG$SERVICESTOPPEDMSG" 134 | pressanykeyrequest 135 | else 136 | echo "" 137 | fi 138 | ;; 139 | 5) 140 | echo 141 | rc-status 142 | echo "" 143 | pressanykeyrequest 144 | ;; 145 | 6) 146 | echo 147 | dmesg 148 | echo "" 149 | pressanykeyrequest 150 | ;; 151 | 7) 152 | echo 153 | config_editor 154 | echo "" 155 | ;; 156 | 0) 157 | clear && exit 158 | ;; 159 | *) 160 | echo -e "$ERRORMSG$TRYAGAINMSG" 161 | read -s -n1 162 | clear 163 | ;; 164 | esac 165 | done 166 | } 167 | main 168 | -------------------------------------------------------------------------------- /bin/system-settings: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RED='\e[41m' 4 | BLUE='\e[44m' 5 | ORANGE='\e[46m' 6 | NC='\e[0m' 7 | TEXTEDITOR=$EDITOR 8 | STATUSVAR=1 9 | 10 | # Service messages section 11 | ERRORMSG="$RED Wrong.$NC" 12 | TRYAGAINMSG="$RED Press any key and try again$NC" 13 | PS3SYSSETTMSG="Select bootloader to configure: " 14 | CONTINMSG="$BLUE Press any key to continue$NC" 15 | USINGNANOFOREDITMSG="Using nano for edit..." 16 | 17 | function pressanykeyrequest { 18 | echo -e "$CONTINMSG" 19 | read -s -n1 20 | STATUSVAR=1 21 | } 22 | 23 | function bootloader_configuration { 24 | PS3="$PS3SYSSETTMSG" 25 | # Gather the results in an array. 26 | dms=("grub" "refind" "systemdboot" "syslinux" "cancel") 27 | 28 | select pick in "${dms[@]}" 29 | do 30 | case $pick in 31 | grub) 32 | sudo $TEXTEDITOR /etc/default/grub 33 | sudo update-grub 34 | break 35 | ;; 36 | refind) 37 | sudo $TEXTEDITOR /boot/refind_linux.conf 38 | sudo $TEXTEDITOR /boot/EFI/refind/refind.conf 39 | break 40 | ;; 41 | systemdboot) 42 | sudo $TEXTEDITOR /boot/loader/entries/manjaro.conf 43 | break 44 | ;; 45 | syslinux) 46 | sudo $TEXTEDITOR /boot/syslinux/syslinux.cfg 47 | break 48 | ;; 49 | cancel) 50 | break 51 | esac 52 | done 53 | } 54 | 55 | function tryvisudo { 56 | visudoerrormsggrep="" 57 | visudoerrormsggrep=$(sudo visudo 2>&1 | grep "no editor found") 58 | if [ "$visudoerrormsggrep" != "" ]; then 59 | echo "$USINGNANOFOREDITMSG" 60 | sudo EDITOR=nano visudo 61 | return 0 62 | else 63 | pressanykeyrequest 64 | fi 65 | return 1 66 | } 67 | 68 | function main { 69 | while true; do 70 | clear 71 | echo "" 72 | echo -e " ::Settings:: " 73 | echo -e " ┌─────────────────────────────────────────────────────────────┐" 74 | echo -e " │ 1 Pacman settings 2 Mkinitcpio │" 75 | echo -e " │ 3 Fstab 4 Sudoers │" 76 | echo -e " │ 5 Logind 6 Bootloader │" 77 | echo -e " │ 7 Udevil settings 8 Xinitrc │" 78 | echo -e " │ 9 Setup │" 79 | echo -e " └─────────────────────────────────────────────────────────────┘" 80 | echo -e " Select an item - 0 Exit " 81 | echo "" 82 | read -s -n1 choix 83 | case $choix in 84 | 1) 85 | echo 86 | sudo $TEXTEDITOR /etc/pacman.conf 87 | echo "" 88 | ;; 89 | 2) 90 | echo 91 | sudo $TEXTEDITOR /etc/mkinitcpio.conf 92 | echo "" 93 | ;; 94 | 3) 95 | echo 96 | sudo $TEXTEDITOR /etc/fstab 97 | echo "" 98 | ;; 99 | 4) 100 | echo 101 | sudo echo "" 102 | STATUSVAR=$? 103 | if [ $STATUSVAR -eq 1 ]; then 104 | echo "" 105 | else 106 | sudo visudo 107 | STATUSVAR=$? 108 | if [ $STATUSVAR -eq 1 ]; then 109 | tryvisudo 110 | STATUSVAR=$? 111 | if [ $STATUSVAR -eq 0 ]; then 112 | pressanykeyrequest 113 | fi 114 | else 115 | pressanykeyrequest 116 | fi 117 | fi 118 | echo "" 119 | ;; 120 | 5) 121 | echo 122 | sudo $TEXTEDITOR /etc/systemd/logind.conf 123 | echo "" 124 | ;; 125 | 6) 126 | echo 127 | bootloader_configuration 128 | echo "" 129 | ;; 130 | 7) 131 | echo 132 | sudo $TEXTEDITOR /etc/udevil/udevil.conf 133 | echo "" 134 | ;; 135 | 8) 136 | echo 137 | $TEXTEDITOR ~/.xinitrc 138 | echo "" 139 | ;; 140 | 9) 141 | echo 142 | system-setup 143 | echo "" 144 | ;; 145 | 0) 146 | clear && exit 147 | ;; 148 | *) 149 | echo -e "$ERRORMSG$TRYAGAINMSG" 150 | read -s -n1 151 | clear 152 | ;; 153 | esac 154 | done 155 | } 156 | 157 | main 158 | -------------------------------------------------------------------------------- /bin/system-setup: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RED='\e[41m' 4 | BLUE='\e[44m' 5 | ORANGE='\e[46m' 6 | NC='\e[0m' 7 | 8 | STATUSVAR=1 9 | TEXTEDITOR=$EDITOR 10 | SELECTEDITEM="" 11 | 12 | # Service messages section 13 | CONTINMSG="$BLUE Press any key to continue$NC" 14 | ERRORMSG="$RED Wrong.$NC" 15 | TRYAGAINMSG="$RED Press any key and try again$NC" 16 | CURRENTPREFIXMSG="(current: " 17 | CURRENTSUFFIXMSG="):" 18 | AVAILABLESHELLMSG="Available shells " 19 | AVAILABLEDMMSG="Available display managers " 20 | PS3SHELLCHOOSMSG="Which shell do you wish to install and use as default? " 21 | ZSH1MSG="Z shell. Advanced and versatile shell with supreme configuration options and tab completion. Master of all trades, jack of none, but really needs configuration." 22 | ZSH2MSG="check oh-my-zsh or builtin configuration tool for configurations" 23 | ZSH3MSG="you might also like zsh-history-substring search or zsh-syntax-highlighting" 24 | BASH1MSG="Bourne again shell. Standard for most linux systems. Respectable choice for any use. Jack of all trades, master of none." 25 | FISH1MSG="Friendly interactive shell. Bad for scripting, great for interactive use without much configuration required." 26 | DASH1MSG="Debian almquist shell. Super light and feature free. Great for scripting and fast startup, entirely unsuitable for interactive use." 27 | PS3DISPLAYMNGMSG="Which displaymanager do you wish to install and use as default? " 28 | PS3DISKUTILSMSG="Select tool to use? " 29 | HIBERNATIONSETUPMSG="Enable delayed hibernation service? (y/n)" 30 | PS3CHOOSESESSIONMSG="Which session do you wish to use as default? " 31 | NOSUPPORTAUTOLOGINMSG="No support for setting up autologin without displaymanager on openrc. Yet." 32 | GDMWONTWORKMSG="gdm will not work with openrc" 33 | CURRENTSHELLMSG="$(echo $SHELL)" 34 | SETSUFFIXMSG=" was set successfully" 35 | SHELLPREFIXMSG="Shell " 36 | DISPLAYMGRPREFIXMSG="Display manager " 37 | AUTOLOGGERRPREFIXMSG="Autologger" 38 | HIBERNATIONPREFIXMSG="Hibernation" 39 | AURSUPPORTPREFIXMSG="AUR support" 40 | PRINTERSUPPORTMSG="Printer support" 41 | 42 | function pressanykeyrequest { 43 | echo -e "$CONTINMSG" 44 | read -s -n1 45 | STATUSVAR=1 46 | } 47 | 48 | function shell_chooser { 49 | echo "$AVAILABLESHELLMSG$CURRENTPREFIXMSG$CURRENTSHELLMSG$CURRENTSUFFIXMSG" 50 | PS3="$PS3SHELLCHOOSMSG" 51 | SELECTEDITEM="" 52 | # Gather the results in an array. 53 | shells=("zsh" "bash" "fish" "dash" "cancel") 54 | 55 | select pick in "${shells[@]}" 56 | do 57 | case $pick in 58 | zsh) 59 | echo "" 60 | echo "$ZSH1MSG" 61 | echo "" 62 | echo "" 63 | sudo pacman -Syu zsh zsh-completions command-not-found 64 | STATUSVAR=$? 65 | if [ $STATUSVAR -eq 1 ]; then 66 | return $STATUSVAR 67 | fi 68 | echo "" 69 | echo "" 70 | echo "$ZSH2MSG" 71 | echo "$ZSH3MSG" 72 | echo "" 73 | echo "" 74 | chsh -s /usr/bin/zsh 75 | SELECTEDITEM="$pick" 76 | break 77 | ;; 78 | bash) 79 | echo "" 80 | echo "" 81 | echo "$BASH1MSG" 82 | echo "" 83 | echo "" 84 | sudo pacman -Syu bash bash-completion command-not-found 85 | STATUSVAR=$? 86 | if [ $STATUSVAR -eq 1 ]; then 87 | return $STATUSVAR 88 | fi 89 | echo "" 90 | chsh -s /bin/bash 91 | SELECTEDITEM="$pick" 92 | break 93 | ;; 94 | fish) 95 | echo "" 96 | echo "" 97 | echo "$FISH1MSG" 98 | echo "" 99 | echo "" 100 | sudo pacman -Syu fish command-not-found 101 | STATUSVAR=$? 102 | if [ $STATUSVAR -eq 1 ]; then 103 | return $STATUSVAR 104 | fi 105 | chsh -s /usr/bin/fish 106 | SELECTEDITEM="$pick" 107 | break 108 | ;; 109 | dash) 110 | echo "" 111 | echo "" 112 | echo "$DASH1MSG" 113 | sudo pacman -Syu dash 114 | STATUSVAR=$? 115 | if [ $STATUSVAR -eq 1 ]; then 116 | return $STATUSVAR 117 | fi 118 | chsh -s /usr/dash 119 | SELECTEDITEM="$pick" 120 | break 121 | ;; 122 | cancel) 123 | break 124 | esac 125 | done 126 | return $STATUSVAR 127 | } 128 | 129 | function displaymanager { 130 | CURRENTITEM=$(dm_detect) 131 | if [ "$CURRENTITEM" == "" ]; then 132 | CURRENTITEM="none" 133 | fi 134 | PS3="$PS3DISPLAYMNGMSG" 135 | SELECTEDITEM="" 136 | # Gather the results in an array. 137 | dms=("lightdm" "kdm" "gdm" "lxdm" "mdm" "slim" "sddm" "cancel") 138 | sudo echo "" 139 | STATUSVAR=$? 140 | if [ $STATUSVAR -eq 1 ]; then 141 | return $STATUSVAR 142 | fi 143 | echo "$AVAILABLEDMMSG$CURRENTPREFIXMSG$CURRENTITEM$CURRENTSUFFIXMSG" 144 | select pick in "${dms[@]}" 145 | do 146 | case $pick in 147 | slim) 148 | SELECTEDITEM="$pick" 149 | if ! [[ -d /run/openrc ]] ; then 150 | sudo pacman -Sy slim slim-themes && sudo systemctl enable slim.service -f 151 | STATUSVAR=$? 152 | else 153 | sudo pacman -Sy slim slim-themes && sudo sed -i "s/$(grep "DISPLAYMANAGER=" /etc/conf.d/xdm)/DISPLAYMANAGER=\"slim\"/g" /etc/conf.d/xdm 154 | STATUSVAR=$? 155 | if [ $STATUSVAR -eq 1 ]; then 156 | return $STATUSVAR 157 | fi 158 | sudo rc-update add xdm default 159 | STATUSVAR=$? 160 | fi 161 | break 162 | ;; 163 | lightdm) 164 | SELECTEDITEM="$pick" 165 | if ! [[ -d /run/openrc ]] ; then 166 | sudo pacman -Sy lightdm lightdm-another-gtk-greeter lightdm-another-gtk-greeter-themes accountsservice \ 167 | && sudo systemctl enable lightdm.service -f && sudo systemctl enable accounts-daemon && \ 168 | sudo $TEXTEDITOR /etc/lightdm/lightdm.conf 169 | STATUSVAR=$? 170 | else 171 | sudo pacman -Sy lightdm lightdm-another-gtk-greeter lightdm-another-gtk-greeter-themes accountsservice \ 172 | && sudo sed -i "s/$(grep "DISPLAYMANAGER=" /etc/conf.d/xdm)/DISPLAYMANAGER=\"lightdm\"/g" /etc/conf.d/xdm && \ 173 | sudo $TEXTEDITOR /etc/lightdm/lightdm.conf 174 | STATUSVAR=$? 175 | if [ $STATUSVAR -eq 1 ]; then 176 | return $STATUSVAR 177 | fi 178 | sudo rc-update add xdm default 179 | STATUSVAR=$? 180 | fi 181 | break 182 | ;; 183 | sddm) 184 | SELECTEDITEM="$pick" 185 | if ! [[ -d /run/openrc ]] ; then 186 | sudo pacman -Sy sddm && sudo systemctl enable sddm.service -f 187 | STATUSVAR=$? 188 | if [ $STATUSVAR -eq 1 ]; then 189 | return $STATUSVAR 190 | fi 191 | else 192 | sudo pacman -Sy sddm && sudo sed -i "s/$(grep "DISPLAYMANAGER=" /etc/conf.d/xdm)/DISPLAYMANAGER=\"sddm\"/g" /etc/conf.d/xdm 193 | STATUSVAR=$? 194 | if [ $STATUSVAR -eq 1 ]; then 195 | return $STATUSVAR 196 | fi 197 | sudo rc-update add xdm default 198 | STATUSVAR=$? 199 | fi 200 | break 201 | ;; 202 | mdm) 203 | SELECTEDITEM="$pick" 204 | if ! [[ -d /run/openrc ]] ; then 205 | sudo pacman -Sy mdm && sudo systemctl enable mdm.service -f 206 | STATUSVAR=$? 207 | else 208 | sudo pacman -Sy mdm-nosystemd && sudo sed -i "s/$(grep "DISPLAYMANAGER=" /etc/conf.d/xdm)/DISPLAYMANAGER=\"mdm\"/g" /etc/conf.d/xdm 209 | STATUSVAR=$? 210 | if [ $STATUSVAR -eq 1 ]; then 211 | return $STATUSVAR 212 | fi 213 | sudo rc-update add xdm default 214 | STATUSVAR=$? 215 | fi 216 | break 217 | ;; 218 | lxdm) 219 | SELECTEDITEM="$pick" 220 | if ! [[ -d /run/openrc ]] ; then 221 | sudo pacman -Sy lxdm && sudo systemctl enable lxdm.service -f 222 | STATUSVAR=$? 223 | else 224 | sudo pacman -Sy lxdm-consolekit && sudo sed -i "s/$(grep "DISPLAYMANAGER=" /etc/conf.d/xdm)/DISPLAYMANAGER=\"lxdm\"/g" /etc/conf.d/xdm 225 | STATUSVAR=$? 226 | fi 227 | break 228 | ;; 229 | gdm) 230 | SELECTEDITEM="$pick" 231 | if ! [[ -d /run/openrc ]] ; then 232 | sudo pacman -Sy gdm3setup && sudo systemctl enable gdm.service -f 233 | STATUSVAR=$? 234 | else 235 | echo "$GDMWONTWORKMSG" 236 | read -s n1 237 | fi 238 | break 239 | ;; 240 | kdm) 241 | SELECTEDITEM="$pick" 242 | if ! [[ -d /run/openrc ]] ; then 243 | sudo pacman -Sy kdebase-workspace archlinux-themes-kdm && sudo systemctl enable kdm.service -f 244 | STATUSVAR=$? 245 | else 246 | sudo pacman -Sy kdebase-workspace-consolekit archlinux-themes-kdm && sudo sed -i "s/$(grep "DISPLAYMANAGER=" /etc/conf.d/xdm)/DISPLAYMANAGER=\"kdm\"/g" /etc/conf.d/xdm 247 | STATUSVAR=$? 248 | if [ $STATUSVAR -eq 1 ]; then 249 | return $STATUSVAR 250 | fi 251 | sudo rc-update add xdm default 252 | STATUSVAR=$? 253 | fi 254 | break 255 | ;; 256 | cancel) 257 | STATUSVAR=1 258 | break 259 | esac 260 | done 261 | return $STATUSVAR 262 | } 263 | 264 | function disk_utils { 265 | PS3="$PS3DISKUTILSMSG" 266 | # Gather the results in an array. 267 | tools=("cfdisk" "cgdisk" "gdisk" "parted" "gparted" "gnome-disks" "cancel") 268 | 269 | select pick in "${tools[@]}" 270 | do 271 | case $pick in 272 | cfdisk) 273 | sudo cfdisk 274 | break 275 | ;; 276 | cgdisk) 277 | sudo cgdisk 278 | break 279 | ;; 280 | gdisk) 281 | sudo gdisk 282 | break 283 | ;; 284 | parted) 285 | sudo parted 286 | break 287 | ;; 288 | gparted) 289 | sudo gparted 290 | break 291 | ;; 292 | gnome-disks) 293 | sudo gnome-disks 294 | break 295 | ;; 296 | cancel) 297 | break 298 | esac 299 | done 300 | } 301 | 302 | function hibernation_setup { 303 | sudo hibernator 304 | STATUSVAR=$? 305 | if [ $STATUSVAR -eq 1 ]; then 306 | return $STATUSVAR 307 | fi 308 | echo "$HIBERNATIONSETUPMSG" 309 | read -s -n1 choix 310 | case $choix in 311 | y|Y) 312 | sudo pacman -Syu delayed-hibernation 313 | STATUSVAR=$? 314 | break 315 | ;; 316 | *) 317 | break 318 | ;; 319 | esac 320 | return $STATUSVAR 321 | } 322 | 323 | function dm_detect { 324 | if [ $(cat /proc/1/comm) = "systemd" ]; then 325 | for displaymanager in kdm gdm sddm lightdm lxdm slim mdm; do 326 | systemctl cat display-manager.service 2> /dev/null | awk -F'/' '/^Exec/ {print $NF}' 327 | done 328 | else 329 | grep 'DISPLAYMANAGER=' /etc/conf.d/xdm | cut -d \" -f 2 330 | fi 331 | } 332 | 333 | function choose_session { 334 | PS3="$PS3CHOOSESESSIONMSG" 335 | # Gather the results in an array. 336 | dms=($(ls /usr/share/xsessions/) "cancel") 337 | 338 | select pick in "${dms[@]}" 339 | do 340 | case $pick in 341 | *) 342 | echo $pick 343 | break 344 | ;; 345 | cancel) 346 | STATUSVAR=1 347 | break 348 | esac 349 | done 350 | } 351 | 352 | function autologger { 353 | sudo echo "" 354 | STATUSVAR=$? 355 | if [ $STATUSVAR -eq 1 ]; then 356 | return $STATUSVAR 357 | fi 358 | dm=$(dm_detect) 359 | eval user=$(whoami) 360 | case dm in 361 | slim) 362 | sudo sed -i '/autologin/s/^#//g' /etc/slim.conf && sudo sed -i '/defaultuser/s/^#//g' /etc/slim.conf 363 | sudo sed -i "s/simone/$user/g" /etc/slim.conf 364 | STATUSVAR=$? 365 | break 366 | ;; 367 | lightdm) 368 | sudo sed -i "s/^autologin-user=*/autologin-user=$user/g" /etc/lightdm.conf 369 | sudo sed -i 's/^autologin-user-timeout=*/autologin-user-timeout=0/g' /etc/lightdm.conf 370 | sudo groupadd -r autologin 371 | sudo gpasswd -a $user autologin 372 | STATUSVAR=$? 373 | sudo $TEXTEDITOR /etc/lightdm.conf 374 | break 375 | ;; 376 | sddm) 377 | session=$(choose_session) 378 | if [ $STATUSVAR -eq 1 ] || [ "$session" == "" ]; then 379 | return 1 380 | fi 381 | sudo sddm --example-config > /etc/sddm.conf 382 | sudo sed -i "s/^User=/User=$user/g" /etc/sddm.conf 383 | sudo sed -i "s/^Session/Session=$session/g" /etc/sddm.conf 384 | STATUSVAR=$? 385 | break 386 | ;; 387 | mdm) 388 | sudo sed -i "s/^AutomaticLogin=*/AutomaticLogin=$user/g" /etc/mdm.conf 389 | sudo sed -i 's/^AutomaticLoginEnable=*/AutomaticLoginEnable=true/g' /etc/mdm.conf 390 | sudo sed -i 's/^TimedLoginEnable=*/TimedLoginEnable=true/g' /etc/mdm.conf 391 | sudo sed -i 's/^TimedLogin=*/TimedLoginEnable=$user/g' /etc/mdm.conf 392 | sudo sed -i 's/^TimedLoginDelay=*/TimedLoginDelay=0/g' /etc/mdm.conf 393 | STATUSVAR=$? 394 | sudo $TEXTEDITOR /etc/mdm/mdm.conf 395 | break 396 | ;; 397 | lxdm) 398 | sudo sed -i "1s/^/autologin=$user /" /etc/lxdm/lxdm.conf 399 | STATUSVAR=$? 400 | sudo $TEXTEDITOR /etc/lxdm/lxdm.conf 401 | break 402 | ;; 403 | gdm) 404 | sudo sed -i "s/^AutomaticLogin=*/AutomaticLogin=$user/g" /etc/gdm/custom.conf 405 | sudo sed -i 's/^AutomaticLoginEnable=*/AutomaticLoginEnable=true/g' /etc/gdm/custom.conf 406 | sudo sed -i 's/^TimedLoginEnable=*/TimedLoginEnable=true/g' /etc/gdm/custom.conf 407 | sudo sed -i 's/^TimedLogin=*/TimedLoginEnable=$user/g' /etc/gdm/custom.conf 408 | sudo sed -i 's/^TimedLoginDelay=*/TimedLoginDelay=0/g' /etc/gdm/custom.conf 409 | STATUSVAR=$? 410 | break 411 | ;; 412 | kdm) 413 | sudo sed -i "s/^AutoLoginUser=*/AutoLoginUser=$user/g" /usr/kde/*/share/config/kdm/kdmrc 414 | sudo sed -i "s/^AutoLoginEnable=*/AutoLoginEnable=true/g" /usr/kde/*/share/config/kdm/kdmrc 415 | STATUSVAR=$? 416 | break 417 | ;; 418 | *) 419 | if ! [[ -d /run/openrc ]] ; then 420 | sudo pacman -Syu xlogin && sudo systemctl enable xlogin@$(whoami) 421 | STATUSVAR=$? 422 | else 423 | echo -e "$NOSUPPORTAUTOLOGINMSG" 424 | read -s -n1 425 | fi 426 | ;; 427 | esac 428 | return $STATUSVAR 429 | } 430 | 431 | function main { 432 | while true; do 433 | clear 434 | echo "" 435 | echo -e " ::Setup:: " 436 | echo -e " ┌─────────────────────────────────────────────────────────────┐" 437 | echo -e " │ 1 Enable hibernation 2 Install Display manager│" 438 | echo -e " │ 3 Enable autologin 4 Install AUR support │" 439 | echo -e " │ 5 Install shell 6 Disk utility │" 440 | echo -e " │ 7 Install printer support 8 Recover files │" 441 | echo -e " └─────────────────────────────────────────────────────────────┘" 442 | echo -e " Select an item - 0 Exit " 443 | echo "" 444 | read -s -n1 choix 445 | case $choix in 446 | 1) 447 | echo 448 | hibernation_setup 449 | STATUSVAR=$? 450 | if [ $STATUSVAR -eq 0 ]; then 451 | echo "" 452 | echo -e "$HIBERNATIONPREFIXMSG$SETSUFFIXMSG" 453 | pressanykeyrequest 454 | fi 455 | echo "" 456 | ;; 457 | 2) 458 | echo 459 | displaymanager 460 | STATUSVAR=$? 461 | if [ $STATUSVAR -eq 0 ]; then 462 | echo "" 463 | echo -e "$DISPLAYMGRPREFIXMSG$SELECTEDITEM$SETSUFFIXMSG" 464 | pressanykeyrequest 465 | fi 466 | echo "" 467 | ;; 468 | 3) 469 | echo 470 | autologger 471 | STATUSVAR=$? 472 | if [ $STATUSVAR -eq 0 ]; then 473 | echo "" 474 | echo -e "$AUTOLOGGERRPREFIXMSG$SETSUFFIXMSG" 475 | pressanykeyrequest 476 | fi 477 | echo "" 478 | ;; 479 | 4) 480 | echo 481 | sudo pacman -Syu base-devel yaourt 482 | STATUSVAR=$? 483 | if [ $STATUSVAR -eq 0 ]; then 484 | echo "" 485 | echo -e "$AURSUPPORTPREFIXMSG$SETSUFFIXMSG" 486 | pressanykeyrequest 487 | fi 488 | echo "" 489 | ;; 490 | 5) 491 | echo 492 | shell_chooser 493 | STATUSVAR=$? 494 | if [ $STATUSVAR -eq 0 ]; then 495 | echo "" 496 | echo -e "$SHELLPREFIXMSG$SELECTEDITEM$SETSUFFIXMSG" 497 | pressanykeyrequest 498 | fi 499 | echo "" 500 | ;; 501 | 6) 502 | echo 503 | disk_utils 504 | echo "" 505 | ;; 506 | 7) 507 | echo 508 | sudo pacman -Syu manjaro-printers sane 509 | STATUSVAR=$? 510 | if [ $STATUSVAR -eq 0 ]; then 511 | echo "" 512 | echo -e "$PRINTERSUPPORTMSG$SETSUFFIXMSG" 513 | pressanykeyrequest 514 | fi 515 | echo "" 516 | ;; 517 | 8) 518 | echo 519 | photorec 520 | echo "" 521 | ;; 522 | 0) 523 | clear && exit 524 | ;; 525 | *) 526 | echo -e "$ERRORMSG$TRYAGAINMSG" 527 | read -s -n1 528 | clear 529 | ;; 530 | esac 531 | done 532 | } 533 | 534 | main -------------------------------------------------------------------------------- /bin/xinput_tui: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | ## xinput_tui 3 | touchpad_id=$(xinput --list | grep -i "Touchpad" | xargs -n 1 | grep "id=" | sed 's/id=//g') 4 | 5 | toggle_natural_scrolling() 6 | { 7 | natural_scrolling_code=$(xinput --list-props "$touchpad_id" | grep "Natural Scrolling" | awk '{print $5}' | grep -o '[0-9]\+') 8 | 9 | if [[ $(xinput --list-props "$touchpad_id" | grep "Natural Scrolling Enabled (" | awk '{print $6}' | head -n1) == 1 ]]; then 10 | xinput --set-prop "$touchpad_id" "$natural_scrolling_code" 0 && echo "Natural scrolling is now disabled" || echo "Something vent wrong" 11 | else 12 | xinput --set-prop "$touchpad_id" "$natural_scrolling_code" 1 && echo "Natural scrolling is now enabled" || echo "Something vent wrong" 13 | fi 14 | 15 | } 16 | 17 | toggle_tap_to_click() 18 | { 19 | tap_to_click_code=$(xinput --list-props "$touchpad_id" | awk '/Tapping Enabled \(/ {print $4}' | grep -o '[0-9]\+') 20 | 21 | if [[ $(xinput --list-props "$touchpad_id" | awk '/Tapping Enabled \(/ {print $5}') == 1 ]]; then 22 | xinput --set-prop "$touchpad_id" "$tap_to_click_code" 0 && echo "Tap to click is now disabled" || echo "Something vent wrong" 23 | else 24 | xinput --set-prop "$touchpad_id" "$tap_to_click_code" 1 && echo "Tap to click is now enabled" || echo "Something vent wrong" 25 | fi 26 | 27 | } 28 | 29 | toggle_left_handed() 30 | { 31 | left_handed_code=$(xinput --list-props "$touchpad_id" | grep "Left Handed Enabled" | awk '{print $5}' | grep -o '[0-9]\+') 32 | 33 | if [[ $(xinput --list-props "$touchpad_id" | grep "Left Handed Enabled" | awk '{print $6}' | head -n1) == 1 ]]; then 34 | xinput --set-prop "$touchpad_id" "$left_handed_code" 0 && echo "Left handed mode is now disabled" || echo "Something vent wrong" 35 | else 36 | xinput --set-prop "$touchpad_id" "$left_handed_code" 1 && echo "Left handed mode is now enabled" || echo "Something vent wrong" 37 | fi 38 | 39 | } 40 | 41 | set_pointer_speed() 42 | { 43 | 44 | accel_speed_code=$(xinput --list-props "$touchpad_id" | awk '/Accel Speed \(/ {print $4}' | grep -o '[0-9]\+') 45 | current_speed=$(xinput --list-props "$touchpad_id" | awk '/Accel Speed \(/ {print $5}') 46 | 47 | echo "" 48 | echo "Setting pointer speed." 49 | echo "Current speed is $current_speed" 50 | echo "input number between -1 and 1 and press enter" 51 | read speed 52 | xinput --set-prop "$touchpad_id" "$accel_speed_code" "$speed" 53 | echo "Speed is now set to $speed." 54 | read -r -p "${1:-Do you wish to make this setting permanent? [Y/n]} " response 55 | case $response in 56 | [nN] | [nN][oO]) 57 | false 58 | ;; 59 | *) 60 | sudo bash -c 'echo -e "Section \"InputClass\" 61 | \tIdentifier \"'"$touchpad_id"'\" 62 | \tDriver \"libinput\" 63 | \tMatchIsTouchpad \"on\" 64 | \tOption \"AccelSpeed\" \"'$speed'\" 65 | EndSection" > /etc/X11/xorg.conf.d/31-pointerspeed.conf' 66 | ;; 67 | esac 68 | echo "" 69 | echo "created file /etc/X11/xorg.conf.d/31-pointerspeed.conf. 70 | Press any key to continue" 71 | read -s -n1 72 | } 73 | 74 | toggle_drag_lock() 75 | { 76 | drag_lock_code=$(xinput --list-props "$touchpad_id" | grep "Drag Lock Enabled (" | awk '{print $6}' | grep -o '[0-9]\+') 77 | 78 | if [[ $(xinput --list-props "$touchpad_id" | grep "Drag Lock Enabled (" | awk '{print $7}' | head -n1) == 1 ]]; then 79 | xinput --set-prop "$touchpad_id" "$drag_lock_code" 0 && echo "Drag lock is now disabled" || echo "Something vent wrong" 80 | else 81 | xinput --set-prop "$touchpad_id" "$drag_lock_code" 1 && echo "Drag lock is now enabled" || echo "Something vent wrong" 82 | fi 83 | 84 | } 85 | 86 | toggle_disable_while_typing() 87 | { 88 | disable_while_typing_code=$(xinput --list-props "$touchpad_id" | grep "Disable While Typing Enabled (" | awk '{print $6}' | grep -o '[0-9]\+') 89 | 90 | if [[ $(xinput --list-props "$touchpad_id" | grep "Disable While Typing Enabled (" | awk '{print $7}' | head -n1) == 1 ]]; then 91 | xinput --set-prop "$touchpad_id" "$disable_while_typing_code" 1 && echo "Touchpad is now disabled while typing" || echo "Something vent wrong" 92 | else 93 | xinput --set-prop "$touchpad_id" "$disable_while_typing_code" 0 && echo "Touchpad is now enabled while typing" || echo "Something vent wrong" 94 | fi 95 | 96 | } 97 | 98 | toggle_horizontal_scrolling() 99 | { 100 | horizontal_scrolling_code=$(xinput --list-props "$touchpad_id" | grep "Horizontal Scroll Enabled" | awk '{print $5}' | grep -o '[0-9]\+') 101 | 102 | if [[ $(xinput --list-props "$touchpad_id" | grep "Horizontal Scroll Enabled" | awk '{print $6}' | head -n1) == 1 ]]; then 103 | xinput --set-prop "$touchpad_id" "$horizontal_scrolling_code" 0 && echo "Horizontal scrolling is now disabled" || echo "Something vent wrong" 104 | else 105 | xinput --set-prop "$touchpad_id" "$horizontal_scrolling_code" 1 && echo "Horizontal scrolling is now enabled" || echo "Something vent wrong" 106 | fi 107 | 108 | } 109 | 110 | function gui { 111 | if [ -e /usr/bin/lxinput ]; then 112 | lxinput 113 | else 114 | read -p "Lxinput is not installed. Should it be installed? (y/N)" -n 1 -r 115 | echo 116 | if [[ $REPLY =~ ^[Yy]$ ]] 117 | then 118 | if [ -e /var/lib/pacman/db.lck ]; then 119 | echo "Pacman seems to be currently in use." 120 | else 121 | sudo pacman -Sy lxinput && lxinput &>/dev/null 122 | fi 123 | fi 124 | fi 125 | } 126 | 127 | function main { 128 | while true; do 129 | clear 130 | echo "" 131 | echo -e " ::Touchpad settings:: " 132 | echo -e " ┌──────────────────────────────────────────┐" 133 | echo -e " │ 1 Set pointer speed │" 134 | echo -e " │ 2 Toggle tap to click │" 135 | echo -e " │ 3 Toggle drag lock │" 136 | echo -e " │ 4 Toggle left handed mode │" 137 | echo -e " │ 5 Toggle disable while typing │" 138 | echo -e " │ 6 Toggle natural scrolling │" 139 | echo -e " │ 7 Toggle horizontal scrolling │" 140 | echo -e " │ 8 Show xinput manual │" 141 | echo -e " │ 9 Show xinput wiki entry │" 142 | echo -e " │ L Run lxinput │" 143 | echo -e " └──────────────────────────────────────────┘" 144 | echo -e " Select an item - 0 Exit " 145 | echo "" 146 | read -s -n1 choix 147 | case $choix in 148 | 1) 149 | echo 150 | set_pointer_speed 151 | ;; 152 | 2) 153 | echo 154 | toggle_tap_to_click 155 | read -s -n1 156 | ;; 157 | 3) 158 | echo 159 | toggle_drag_lock 160 | read -s -n1 161 | ;; 162 | 4) 163 | echo 164 | toggle_left_handed 165 | read -s -n1 166 | ;; 167 | 5) 168 | echo 169 | toggle_disable_while_typing 170 | read -s -n1 171 | ;; 172 | 6) 173 | echo 174 | toggle_natural_scrolling 175 | read -s -n1 176 | ;; 177 | 7) 178 | echo 179 | toggle_horizontal_scrolling 180 | read -s -n1 181 | ;; 182 | 8) 183 | echo 184 | man xinput 185 | read -s -n1 186 | ;; 187 | 9) 188 | echo 189 | $BROWSER https://wiki.archlinux.org/index.php/Touchpad_Synaptics 190 | read -s -n1 191 | ;; 192 | l|L) 193 | echo 194 | gui 195 | echo -e "Operation complete. Press any key to continue." 196 | read -s -n1 197 | ;; 198 | 0) 199 | clear && exit 200 | ;; 201 | *) 202 | echo -e "Wrong option. Press any key to continue." 203 | read -s -n1 204 | clear 205 | ;; 206 | esac 207 | done 208 | } 209 | 210 | main 211 | --------------------------------------------------------------------------------