-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapps_install-1.2-debian.sh
executable file
·582 lines (491 loc) · 23.4 KB
/
apps_install-1.2-debian.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
#!/bin/bash
#####################################################################################################################
#
# apps_install-1.2-debian.sh
#
# Author : Spyridakis Christos
# Created Date : 3/05/2017
# Last Updated : 15/4/2021
# Email : spyridakischristos@gmail.com
#
#
# Description :
# Install some of my favorite (and in my personal point of view useful) applications in a Debian-
# based system (Tested on Ubuntu Unity 16.04). This script is free and open source software ; please
# make sure to read the documentation of each application before install or use it. I am not responsible
# for any damage
#
#
# Additional Comments:
# 1) For some Applications, their description is based on official application's description
# 2) The following functions are implemented:
# a) __ADDREP - Use it in order to execute command "sudo add-apt-repository -y" and afterwards update system
# b) __INST - Use it in order to execute command "sudo apt-get -y install"
# c) __GET - Download application from official site
# d) __START - Creates a desktop entry on ~/.config/autostart
# 3) Uncomment or comment out applications in order to personalize script behaviour
# 4) Feel free to use it as you like
#
#
####################################################################################################################
interpreter='bash'
#-----------------------------------------------------------
#----------------------- IMPORTANT -----------------------
#-----------------------------------------------------------
# If you need to use #!/bin/sh uncomment the following line
#interpreter='sh'
#-----------------------------------------------------------
if [ ${interpreter} = "bash" ] ; then
declare -a comletedApps
declare -a failedApps
fi
# Color changing variables
red=`tput setaf 1`
green=`tput setaf 2`
yellow=`tput setaf 3`
reset=`tput sgr0`
helpMenu(){
echo "Usage: $0 [Option]... [Option]... "
echo "Usage: $0 -F"
echo "Usage: $0 -L [Option]... [Option]... "
echo "Install some of my favorite (and from my point of view, useful) applications on a Debian-based system"
echo
echo "Options:"
echo " -c, --content video and photo editing programs"
echo " -d, --develop IDEs and editors"
echo " -e, --engineering tools for engineers"
echo " -f, --files file managers, editors etc..."
echo " -g, --games linux games"
echo " -h, --help show this help page"
echo " -m, --media media players (music, video, etc...)"
echo " -n, --nettools network tools"
echo " -o, --onboot create desktop entries on ~/.config/autostart"
echo " -p, --pentest some penetration testing tools"
echo " -l, --peripheral peripheral device management services"
echo " -s, --system system tools"
echo " -w, --web web related software"
echo " -F, --Full complete installation"
echo " -L, --Light typical installation"
}
# Install apps
__INST(){
for app in "$@"
do
echo "Try to install: ${yellow} ${app} ${reset}"
if [ ${interpreter} = "bash" ] ; then
sudo apt-get -y install ${app} && comletedApps+=("${app}") || failedApps+=("${app}")
else
sudo apt-get -y install ${app} && echo "${app} : ${green}Installation COMPLETED${reset}" || echo "${app} : ${red}Installation FAILED${reset}"
fi
echo
done
}
# Add repository
__ADDREP(){
sudo add-apt-repository -y ${1}
sudo apt-get -y update --fix-missing
}
# Update and upgrade system
__UPDG(){
sudo apt-get -y update --fix-missing
sudo apt-get -y upgrade
sudo apt-get -y autoclean
sudo apt-get -y autoremove
}
# Update system
__UPD(){
sudo apt-get -y update --fix-missing
}
# Creates a desktop entry on ~/.config/autostart
__START(){
entry="[Desktop Entry]\n"
entry+="Type=Application\n"
nameT=""
execT=""
commentT=""
while :
do
case "$1" in
-n ) nameT=${2} ; shift ; shift;;
-e ) execT=${2} ; shift ; shift;;
-c ) commentT=${2} ; shift ; shift;;
-i ) entry+="Icon=${2}\n" ; shift ; shift;;
-ndf ) entry+="NoDisplay=false\n" ; shift;;
-ndt ) entry+="NoDisplay=true\n" ; shift;;
-hf ) entry+="Hidden=false\n" ; shift;;
-ht ) entry+="Hidden=true\n" ; shift;;
-tf ) entry+="Terminal=false\n" ; shift;;
-tt ) entry+="Terminal=true\n" ; shift;;
-sf ) entry+="StartupNotify=false\n"; shift;;
-st ) entry+="StartupNotify=true\n" ; shift;;
-gf ) entry+="X-GNOME-Autostart-enabled=false\n" ; shift;;
-gt ) entry+="X-GNOME-Autostart-enabled=true\n" ; shift;;
-*)
echo "Unknown option: $1 on function __START" >&2
exit 1
;;
*)
break
esac
done
entry+="Name=${nameT}\n"
entry+="Exec=${execT}\n"
entry+="Comment=${commentT}\n"
echo -e ${entry} > ~/.config/autostart/${nameT}.desktop
}
__GET(){
wget ${1} -P ~/Downloads
}
# Print some interesting informations at the end
__INFO(){
if [ ${interpreter} = "bash" ] ; then
echo
echo "${yellow}--------------------------------"
echo " SCRIPT RESULTS:"
echo "--------------------------------${reset}"
if [ ${#comletedApps[*]} -ne 0 ] ; then
echo
echo " ${green}Successfully Installed/Updated Applications:${reset}"
for app in ${comletedApps[@]}
do
echo -e "${green}\xE2\x9C\x94${reset} ${app}"
done
fi
if [ ${#failedApps[*]} -ne 0 ]; then
echo
echo " ${red}Problem with the installation of the following applications:${reset}"
for app in ${failedApps[@]}
do
echo -e "${red}\xE2\x9D\x8C${reset} ${app}"
done
fi
echo
fi
echo "${green}Installation Completed!${reset}"
}
contentCreate(){
__INST blender #3D modeling tool
#__INST kdenlive #Video Editing Software
#__INST krita #Photo Editing Software
#__INST kazam #Screencasting program
# Gimp - Photo Editing Software
__ADDREP ppa:otto-kesselgulasch/gimp
__INST gimp
#TODO : Lightworks
}
codeDevelopment(){
__INST arduino arduino-core #Arduino IDE
__INST git #Version control system
__INST vim #Vim terminal text editor
#__INST emacs #Emacs terminal text editor
#__INST eclipse #IDE
#__INST netbeans #IDE
#TODO Android studio
#TODO VS_CODE
}
engineering(){
# __INST virtualbox #Virtual Machine
__INST phpmyadmin #Administration tool for MySQL and MariaDB
#__INST logisim #logic circuits design
#__INST eagle #Schematics and pcb design tool
#__INST fritzing #Schematics and pcb design tool
#__INST guake #One key(drop-down) terminal
#__INST qreator #Create qr codes GUI
#__INST qrencode #Create qr codes Terminal
#__INST kexi #All in one Sql gui
# Octave (Matlab linux alternative)
__ADDREP ppa:octave/stable
__INST octave
# pkg install -forge <pkg_name>; # Pkg from octave.sourceforge.io
# __kalgebra # Featured graph calculator
# Kicad
# __ADDREP ppa:js-reynaud/kicad-5.1
# __INST kicad
# Docker
# __INST apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#sudo apt-key fingerprint 0EBFCD88
# __ADDREP "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# __INST docker-ce docker-ce-cli containerd.io
# Docker-compose
# sudo apt-get remove docker-compose
# if [ ! -d /usr/local/bin/ ] ; then # if /usr/local/bin/ does not exists create it
# sudo mkdir /usr/local/bin/
# fi
# version=1.24.0
# sudo curl -L "https://github.com/docker/compose/releases/download/${version}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# sudo chmod +x /usr/local/bin/docker-compose
# sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# Postgresql Server and Client
#__INST pgadmin3 postgresql postgresql-contrib
# Postgresql Server configuration steps:
#1) sudo -u postgres psql postgres #Connect to db postgres via psql as user postgres
#2) \password postgres #Change pass for postgres user
}
files(){
__INST nemo
__INST system-config-samba samba #Share files on LAN (In order to setup user use: sudo smbpasswd -a username)
__INST pdfshuffler #Pdf editor (Merge, remove pages, etc)
__INST meld #Diff GUI programm (For both Files & Folders)
#__INST dolphin #File Browser
#__INST bluefish #Text editor
__INST evince #Pdf viewer
__INST xournal #Pdf note taking
#__INST zim #Notes create
__INST gscan2pdf #Images to pdf
# Sublime text editor
#__ADDREP ppa:webupd8team/sublime-text-3
#__INST sublime-text-installer
#__INST subliminal
# LaTex
#__INST texlive-full #Full
__INST texlive texlive-base #Light
# LaTex Editor
__INST texmaker
# Atom text editor
#__ADDREP ppa:webupd8team/atom
#__INST atom
}
games(){
__INST hedgewars #Worms game
# This is not actually a game, fortune
# is a program that displays a random
# message from a database of quotations
__INST fortune-mod
#__INST hollywood #Create a Hollywood geek melodrama
}
media(){
__INST vlc browser-plugin-vlc #VLC player
__INST tomahawk #Music player
__INST easytag #Tags editing tool for audio/video files
#__INST clementine #Music player
# KODI media center
#__INST software-properties-common
#__ADDREP ppa:team-xbmc/ppa
#__INST kodi
}
nettools() {
#Download manager
#__ADDREP ppa:plushuang-tw/uget-stable
#__INST uget
__INST qbittorrent #Torrent client
#__INST filezilla #File transfer application
#Youtube-dl
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
# ________________________________________________________________________________________________
# Youtube-dl examples
# --- Audio Playlist ---
# youtube-dl --extract-audio --embed-thumbnail --audio-format mp3 --yes-playlist <PLAYLIST-URL>
# --- Video ---
# youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 --embed-thumbnail <URL>
# --- Video Playlist ---
# youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 --embed-thumbnail --yes-playlist <PLAYLIST-URL>
# ________________________________________________________________________________________________
# KDE connect (bridge between Android devices and Linux PC)
__ADDREP ppa:webupd8team/indicator-kdeconnect
__INST kdeconnect indicator-kdeconnect
# TODO : Test GSConnect
__INST speedtest-cli #Test your broadband connection
}
pentest(){
__INST linssid #Wireless access points informations
__INST etherape #Network mapping tool
__INST wireshark #Network packages tool
__INST aircrack-ng #Network tool
__INST nmap #Network mapping tool
__INST zenmap #GUI Network mapping tool
__INST john #Decrypt passwords, hashes etc...
__INST macchanger #Change Mac address
__INST bless #Hex editor
__INST steghide #Steganography program
__INST cmatrix #Just for fun xD, matrix style on terminal
__INST traceroute #Displays the route used by IP packets
__INST whois #Whois protocol client
}
peripheral(){
#Mapping extra mouse and keyboard actions
#E.g. using MX Master 2S:
#https://wiki.archlinux.org/index.php/Logitech_MX_Master?fbclid=IwAR0o3Tc3F7rpyLLFS834RhIIcE12KP9AuqUCkMZroTe7cZn2UWru7vKNKc8
__INST xbindkeys xautomation
__INST solaar #Logitech Unifying Receiver peripherals manager for Linux
__INST autokey-qt #Desktop automation utility
__INST xdotool #Simulate X11 keyboard/mouse input events
}
# If you want to start on boot some applications just use this function
# As a matter of fact, this function uses __START which just creates desktop
# entries on ~/.config/autostart directory
startOnBoot(){
echo "Start on Boot Script"
__START -n 'Alarm-Clock' -e 'alarm-clock-applet --hidden'
__START -n 'Caffeine' -e '/usr/bin/caffeine'
__START -n 'caffeine-indicator' -e 'caffeine-indicator' -hf -ndf -gt
#__START -n 'Num_Caps-lock' -e 'indicator-keylock' -hf -ndf -gt
__START -n 'Parcellite' -e 'bash -c "parcellite &"' -c 'Clipboard Manager' -i 'parcellite' -tf -gt
__START -n 'Psensor' -e 'psensor' -hf -ndf -gt
#__START -n 'Skype' -e '/usr/bin/skypeforlinux' -i 'skypeforlinux' -tf -sf -gt
#__START -n 'synergy' -e 'synergy' -hf -ndf -gt
__START -n 'System-load-indicator' -e 'indicator-multiload' -i 'utilities-system-monitor' -tf -gt
__START -n 'Viber' -e '/opt/viber/Viber' -hf -ndf -gt
#__START -n 'xbindkeys' -e 'xbindkeys' -ht -ndf -gt
#__START -n 'nitrogen' -e 'nitrogen --restores'
__START -n 'KDE Connect Indicator' -e 'indicator-kdeconnect'
__START -n 'Firefox' -e 'firefox' -tf -i 'firefox'
}
system(){
#sudo apt-get remove unity-lens-shopping #Unity Dash search remove
__INST software-properties-common #Extra softwate packages install
__INST network-manager #Network-Manager
__INST gparted #Partition-editing application
__INST htop #Interactive process viewer
__INST btop #Graphical process viewer
# Other monitoring systems: bottom
__INST synergy #Mouse and Keyboard sharing Software
#__INST barrier #Synergy alternative
__INST dconf-tools #Low-level configuration system for GSettings
__INST expect #Automate events using expected words tool
__INST hardinfo #System useful informations
__INST openvpn #VPN configuring
__INST caffeine #Easily enable/disable screensaver applet
__INST psensor #System Temps
__INST indicator-multiload #Graphical system load indicator for CPU, ram, etc
__INST alarm-clock-applet #Alarm clock
__INST gnome-system-monitor #System Monitor
#__INST unity-tweak-tool #Unity GUI customization tool
__INST gnome-tweak-tool #Gnome GUI customization tool
__INST clamav clamtk #Open source antivirus engine with GUI
__INST indicator-keylock #Num/Caps lock indicator
__INST tmux #Terminal multiplexer
__INST exfat-fuse exfat-utils #Mount exfat file system
__INST screenfetch #Bash Screenshot Information Tool
__INST tree #Displays an indented directory tree
__INST figlet #Create characters in many different styles
__INST pasystray #PulseAudio system tray
__INST alltray #Dock apps in system tray (GNOME)
__INST python3-pip
__INST ncdu #Disk space monitoring tool
__INST ranger #CLI file manager
__INST xfce4-settings #To replace default file browser (run xfce4-mime-settings and goto utils)
__INST paprefs #Enable multiple audio outputs at once
#To work, install it, open it from terminal goto Simultaneous Outputs and enable it, then
#run 'pulseaudio -k' and you are ready
# __INST scrcpy #Display phones screen to PC
__INST calcurse #Terminal based Calendar and To-Do list
__INST molly-guard # Protect against unwanted shutdowns/reboots
# __INST anbox #Android sandbox
#PDF presentation tools
__INST pdf-presenter-console
__INST dspdfviewer
# Pympress for >= ubuntu 20.04
#__INST pympress libgtk-3-0 libpoppler-glib8 libcairo2 python3-gi python3-gi-cairo gobject-introspection libgirepository-1.0-1 gir1.2-gtk-3.0 gir1.2-poppler-0.18
#Zsh install with oh my zsh
# __INST zsh
# __INST fonts-powerline
# sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
#chsh -s $(which zsh) #Make zsh primary shell (On debian-based system the default shell usually is /bin/bash)
#Clipboard from terminal
__INST xclip
#Clipboard manager Applet
__INST parcellite
#IMPORTANT!
#ERROR: Flag 0x0001, status 0, EXIT 1 STAT 0
#FIX: remove .local/share/parcellite
#Neofetch
__ADDREP ppa:dawidd0811/neofetch
__INST neofetch
__INST blueman bluez-utils bluez bluetooth #Bluetooth client(In my case, i use it for my Logitech bluetooth peripherals)
#Important: You need to use gnome-tweak-tool in order to disable Icons on Desktop
__INST nitrogen #Wallpaper browser and changing utility
#Compiz Settings Manager
__INST compizconfig-settings-manager
__INST compiz-plugins-extra
__INST iperf3 #Perform Network speed tests (from one device run: iperf3 -s | from another iperf3 -c <IP>)
__INST bmon #Graphical Network tool
__INST iftop #Network tool
__INST nload #Keep an eye on network traffic and bandwidth usage
__INST netcat-traditional #Listen on a port: nc -lvp ${port} | Connect to a port: nc -v ${ip} ${port} | Check if port open: nc -zv ${ip} ${port}
__INST ncat # nmap version of netcat
# Network tools
__INST ptunnel
__INST tcpdump
#__INST xsensors lm-sensors #Sensors (Use $sensors-detect)
#__INST openjdk-8-jdk
#__INST wallch #Wallpaper Clock
#__INST kazam #Screen recording
#__INST bacula #Backup System
#Python 3.6
#__ADDREP ppa:jonathonf/python-3.6
#__INST python3.6
#Numix theme
#__ADDREP ppa:numix/ppa
#__INST numix-gtk-theme numix-icon-theme-circle numix-wallpaper-notd
#Problem with click on touch (touchpad)
# sudo apt-get install aptitude
# sudo aptitude update
# sudo aptitude install xserver-xorg-input-synaptics
# sudo apt-get install xserver-xorg-input-all
# Battery optimize
# __INST tlp powertop
# for CPU
# __INST intel-microcode #For Intel
# __INST TODO for AMD
}
web(){
__INST chromium-browser #Browser
}
full(){
contentCreate
codeDevelopment
engineering
files
games
media
nettools
pentest
peripheral
system
web
#startOnBoot
}
light(){
files
media
nettools
peripheral
system
}
#MAIN
while :
do
case "$1" in
-c | --content) __UPDG ; contentCreate ; shift ;;
-d | --develop) __UPDG ; codeDevelopment ; shift ;;
-e | --engineering) __UPDG ; engineering ; shift ;;
-f | --files) __UPDG ; files ; shift ;;
-g | --games) __UPDG ; games ; shift ;;
-h | --help) helpMenu ; exit 0;;
-m | --media) __UPDG ; media ; shift ;;
-n | --nettools) __UPDG ; nettools ; shift ;;
-o | --onboot) startOnBoot; exit 0;;
-p | --pentest) __UPDG ; pentest ; shift ;;
-l | --peripheral) __UPDG ; peripheral; shift ;;
-s | --system) __UPDG ; system ; shift ;;
-w | --web) __UPDG ; web ; shift ;;
-F | --Full) __UPDG ; full ; break ;;
-L | --Light) __UPDG ; light ; shift ;;
--*)
echo "Unknown option: $1" >&2
helpMenu
exit 1
;;
-*)
echo "Unknown option: $1" >&2
helpMenu
exit 1
;;
*)
break
esac
done
__UPDG
__INFO