OSDN Git Service

rework dswitch
[instantos/instantOS.git] / install.sh
1 #!/usr/bin/env bash
2
3 #############################################
4 ## installs all paperbenni suckless forks  ##
5 ## made for personal use, so be warned ;)  ##
6 #############################################
7
8 echo "installing paperbenni's suckless suite"
9
10 source <(curl -s https://raw.githubusercontent.com/paperbenni/bash/master/import.sh)
11 pb install
12
13 # pinstall dash slop ffmpeg wmctrl
14
15 gclone() {
16     git clone --depth=1 https://github.com/paperbenni/"$1".git
17 }
18
19 gprogram() {
20     wget "https://raw.githubusercontent.com/paperbenni/suckless/master/programs/$1"
21     usrbin "$1"
22 }
23
24 if [ "$1" = "dotfiles" ]; then
25     shift 1
26     DOTFILES="True"
27 fi
28
29 THEME="${1:-dracula}"
30
31 rm -rf suckless
32 mkdir suckless
33 cd suckless
34
35 gclone dwm
36 gclone dmenu
37 gclone st
38
39 # needed for slock
40 if grep -q 'nobody' </etc/groups; then
41     sudo groupadd nobody
42 fi
43 gclone slock
44
45 # session for lightdm
46 wget https://raw.githubusercontent.com/paperbenni/suckless/master/dwm.desktop
47 sudo mv dwm.desktop /usr/share/xsessions/
48
49 # x session wrapper
50 gprogram startdwm
51 # shutdown popup that breaks restart loop
52 gprogram sucklessshutdown
53
54 gprogram autoclicker
55 # deadcenter toggle script
56 gprogram deadcenter
57
58 # dmenu run but in terminal emulator st
59 # only supported terminal apps (less to search through)
60 gprogram dmenu_run_st
61
62 curl "$LINK/termprograms.txt" >~/.cache/termprograms.txt
63
64 for FOLDER in ./*; do
65     if ! [ -d "$FOLDER" ]; then
66         echo "skipping $FOLDER"
67         continue
68     fi
69     pushd "$FOLDER"
70     if ! [ -e build.sh ]; then
71         rm config.h
72         make
73         sudo make install
74     else
75         chmod +x ./build.sh
76         ./build.sh "$THEME"
77     fi
78     popd
79 done
80
81 # install dotfiles like bash,git and tmux config
82 if [ -n "$DOTFILES" ]; then
83     curl https://raw.githubusercontent.com/paperbenni/dotfiles/master/install.sh | bash
84 fi
85
86 LINK="https://raw.githubusercontent.com/paperbenni/suckless/master"
87
88 if cat /etc/os-release | grep -i 'arch'; then
89     pacinstall() {
90         for i in "$@"; do
91             { pacman -iQ "$i" || command -v "$i"; } &>/dev/null && continue
92             sudo pacman -S --noconfirm "$i"
93         done
94     }
95     echo "setting up arch specific stuff"
96
97     sudo pacman -Syu --noconfirm
98
99     # utilities
100     pacinstall picom
101
102     pacinstall bash dash
103     pacinstall wget slop
104
105     pacinstall ffmpeg
106
107     pacinstall dmidecode
108
109     pacinstall wmctrl
110     pacinstall xdotool
111     pacinstall xrandr
112
113     pacinstall ranger
114     pacinstall fzf
115
116     if ! command -v panther_launcher; then
117         wget "https://www.rastersoft.com/descargas/panther_launcher/panther_launcher-1.12.0-1-x86_64.pkg.tar.xz"
118         sudo pacman -U --noconfirm panther_launcher*.pkg.tar.xz
119         rm panther_launcher*.pkg.tar.xz
120     fi
121
122 fi
123
124 if sudo dmidecode --string chassis-type | grep -iq 'laptop'; then
125     touch .cache/islaptop
126 fi
127
128 # ubuntu specific stuff
129 if grep -iq 'ubuntu' </etc/os-release; then
130
131     sudo apt-get update
132     sudo apt-get upgrade -y
133
134     # utilities
135     aptinstall compton
136
137     aptinstall bash dash
138
139     aptinstall wget slop
140
141     aptinstall ffmpeg
142
143     aptinstall xrandr
144
145     aptinstall fzf
146     aptinstall ranger
147
148     aptinstall() {
149         for i in "$@"; do
150             { dpkg -l "$i" || command -v "$i"; } &>/dev/null && continue
151             sudo apt-get install -y "$i"
152         done
153     }
154
155     if ! command -v panther_launcher; then
156         wget "https://www.rastersoft.com/descargas/panther_launcher/panther-launcher-xenial_1.12.0-ubuntu1_amd64.deb"
157         sudo dpkg -i panther-launcher*.deb
158         sudo apt-get install -fy
159         rm panther-launcher*.deb
160     fi
161 fi
162
163 # auto start script with dwm
164 ls ~/.dwm || mkdir ~/.dwm
165 curl $LINK/autostart.sh >~/.dwm/autostart.sh
166
167 # set up multi monitor config for dswitch
168 if ! [ -e ~/paperbenni/ismultimonitor ]; then
169     if xrandr | grep ' connected' | grep -Eo '[0-9]{3,}x' |
170         grep -o '[0-9]*' | wc -l | grep '2'; then
171         mkdir ~/paperbenni &>/dev/null
172         xrandr | grep ' connected' | grep -Eo '[0-9]{3,}x' |
173             grep -o '[0-9]*' >~/paperbenni/ismultimonitor
174         echo "$(wc -l ~/paperbenni/ismultimonitor) monitors detected"
175     else
176         echo "not a multi monitor setup"
177     fi
178 else
179     echo "monitor config: "
180     cat ~/paperbenni/ismultimonitor
181 fi
182
183 # notification program for deadd-center
184 if ! command -v notify-send.py &>/dev/null; then
185     git clone --depth=2 https://github.com/phuhl/notify-send.py
186     cd notify-send.py
187     sudo pip2 install notify2
188     sudo python3 setup.py install
189     cd ..
190     sudo rm -rf notify-send.py
191 fi
192
193 mkdir -p ~/.config/deadd
194 curl $LINK/deadd.conf >~/.config/deadd/deadd.conf
195
196 # install window switcher
197 curl "$LINK/dswitch" | sudo tee /usr/local/bin/dswitch
198 sudo chmod +x /usr/local/bin/dswitch
199
200 # install win + a menus for shortcuts like screenshots and shutdown
201 curl https://raw.githubusercontent.com/paperbenni/menus/master/install.sh | bash
202
203 ## notification center ##
204 # remove faulty installation
205 sudo rm /usr/bin/deadd &>/dev/null
206 sudo rm /usr/bin/deadcenter &>/dev/null
207
208 # main binary
209 echo "installing deadd"
210 wget -q $LINK/bin/deadd.xz
211 xz -d deadd.xz
212 sleep 0.1
213 sudo mv deadd /usr/bin/deadd
214 sudo chmod +x /usr/bin/deadd
215
216 mkdir ~/paperbenni &>/dev/null
217
218 # automatic wallpaper changer
219 gclone rwallpaper
220 cd rwallpaper
221 mv rwallpaper.py ~/paperbenni/
222 chmod +x wallpaper.sh
223 mv wallpaper.sh ~/paperbenni/
224 sudo pip3 install -r requirements.txt
225 cd ..
226 rm -rf rwallpaper
227
228 # install things like fonts or gtk theme
229 if ! [ -e ~/.config/paperthemes/$THEME.txt ]; then
230     echo "installing theme"
231     curl -s "https://raw.githubusercontent.com/paperbenni/suckless/master/themes/$THEME.sh" | bash
232     mkdir ~/.config/paperthemes
233     touch ~/.config/paperthemes/$THEME.txt
234 else
235     echo "theme installation already found"
236 fi
237
238 # fix java on dwm
239 if ! grep 'dwm' </etc/profile; then
240     echo "fixing java windows for dwm in /etc/profile"
241     echo '# fix dwm java windows' | sudo tee -a /etc/profile
242     echo 'export _JAVA_AWT_WM_NONREPARENTING=1' | sudo tee -a /etc/profile
243 else
244     echo "java workaround already applied"
245 fi