3 ###############################################
4 ## script for instantOS autostart ##
5 ###############################################
7 INSTANTVERSION="$(cat /usr/share/instantutils/version)"
8 if iconf version && [ "$(iconf version)" = "$INSTANTVERSION" ]; then
9 echo "version check successful"
10 echo "running version $INSTANTVERSION"
12 echo "running update hooks"
13 /usr/share/instantutils/userinstall.sh
14 iconf -i userinstall 1
15 iconf version "$INSTANTVERSION"
19 # architecture detection
21 if uname -m | grep -q '^arm'; then
25 if iconf -i noautostart; then
26 echo "autostart disabled"
30 if [ "$(ps aux | grep bash | grep instantautostart | wc -l)" -gt 3 ]; then
31 echo "already running"
39 command -v instantdotfiles && instantdotfiles
41 if ! iconf -i rangerplugins && command -v rangerplugins; then
43 echo "installing ranger plugins"
44 mkdir -p ~/.config/ranger/plugins
45 cp -r /usr/share/rangerplugins/* ~/.config/ranger/plugins/
46 iconf -i rangerplugins 1
49 # find out if it's a live session
50 if [ -e /usr/share/liveutils ] &>/dev/null; then
52 echo "live session detected"
55 if iconf -i islaptop; then
56 export ISLAPTOP="true"
57 echo "laptop detected"
63 if [ -n "$ISLIVE" ]; then
70 # optionally disable status bar
71 if iconf -i nobar; then
72 NMON=$(iconf names | wc -l)
73 for i in $(eval "echo {1..$NMON}"); do
74 echo "found monitor $i"
75 xdotool key super+comma
80 if [ -n "$ISRASPI" ]; then
81 # enable double drawing for moving floating windows
82 # greatly increases smoothness
84 if ! [ -e ~/.config/instantos/israspi ]; then
85 echo "marking machine as raspi"
86 mkdir -p ~/.config/instantos
87 touch ~/.config/instantos/israspi
88 # logo does not work on raspi
93 if ! iconf -i notheming; then
96 iconf -i instantthemes 1
98 # dynamically switch between light and dark gtk theme
100 if [ "$DATEHOUR" -gt "20" ] || [ "$DATEHOUR" -lt "7" ]; then
102 touch /tmp/instantdarkmode
103 [ -e /tmp/instantlightmode ] && rm /tmp/instantlightmode
106 touch /tmp/instantlightmode
107 [ -e /tmp/instantdarkmode ] && rm /tmp/instantdarkmode
110 touch /tmp/instantlightmode
113 mkdir -p /tmp/notifications &>/dev/null
114 if ! pgrep dunst; then
116 # wait for theming before starting dunst
117 if [ -e /tmp/instantdarkmode ] || [ -e /tmp/instantlightmode ]; then
128 # set up oh-my-zsh config if not existing already
129 iconf -i nozsh || instantshell &
131 # fix resolution on virtual machine
132 if ! iconf -i novmfix && grep -q 'hypervisor' /proc/cpuinfo; then
133 # indicator file only exists on kvm/QEMU on amd
134 if [ -e /opt/instantos/kvm ]; then
136 if lshw -c video | grep -i 'qxl' || xrandr | grep -i '^qxl'; then
138 # iconf -i noanimations 1
139 if ! iconf -i potato && ! iconf -i nopotato; then
140 if echo "please set your video card to virtio or passthrough
141 QXL on AMD on QEMU/kvm has been known to cause a severe Xorg memory leak.
142 Disabling compositing makes this somewhat bearable,
143 but switching really is recommended.
144 (or switch to virtualbox, no issues there...)
145 Disable compositing for this VM?" | imenu -C; then
149 if ! imenu -c "ask again next time?"; then
159 if ! [ -e /opt/instantos/guestadditions ]; then
160 if echo "virtual machine detected.
161 Would you like to switch to a 1080p resolution?" | imenu -C; then
162 echo "applying virtual machine workaround"
163 /usr/share/instantassist/assists/t/v.sh
165 if ! imenu -c "ask again next session"; then
173 echo "not a live session"
174 if [ -e /opt/instantos/installtrigger ]; then
175 zenity --info --text "finishing installation in background" &
177 # ask for password if postinstall already ran
178 if ! timeout 2 sudo echo test; then
179 instantsudo instantpostinstall
180 sudo rm /opt/instantos/installtrigger
182 sudo instantpostinstall
188 cd ~/instantos || exit 1
189 if ! iconf -i max; then
193 if [ -e ~/instantos/monitor.sh ]; then
194 bash ~/instantos/monitor.sh &
195 elif [ -e ~/.config/autorandr/instantos/config ]; then
196 autorandr instantos &
199 if checkinternet; then
202 # fall back to already installed wallpapers
203 instantwallpaper offline
204 for i in $(seq 10); do
205 if checkinternet; then
214 # apply keybpard layout
215 if iconf layout; then
216 setxkbmap -layout "$(iconf layout)"
218 CURLOCALE=$(locale | grep LANG | sed 's/.*=\(.*\)\..*/\1/')
224 echo "no keyboard layout found for your locale"
230 if iconf mousespeed; then
231 echo "setting mousespeed"
232 instantmouse s "$(iconf mousespeed)"
235 if iconf -i reversemouse; then
241 if ! iconf -i noconky; then
242 shuf /usr/share/instantwidgets/tooltips.txt | head -1 >~/.cache/tooltip
243 conky -c /usr/share/instantwidgets/tooltips.conf &
247 echo "live session detected"
250 echo "disabling compositing for qxl graphics"
251 if lshw -c video | grep -i 'qxl' || xrandr | grep -i '^qxl'; then
255 sudo systemctl start NetworkManager
258 iconf -i wifiapplet 1
259 instantwallpaper set /usr/share/instantwallpaper/defaultphoto.png
260 conky -c /usr/share/instantwidgets/install.conf &
263 if ! pgrep python; then
271 # make built in status optional
272 if ! iconf -i nostatus; then
273 source /usr/bin/instantstatus &
276 iconf -i potato || ipicom &
282 xfce4-power-manager &
286 if iconf -i wifiapplet && ! pgrep nm-applet; then
287 echo "starting bluetooth applet"
291 if iconf -i bluetoothapplet && ! pgrep blueman-applet; then
292 echo "starting bluetooth applet"
298 # welcome greeter app
299 if iconf -b welcome; then
303 # prompt to fix configuration if installed from the AUR
304 if ! iconf -i norootinstall && ! islive; then
305 if ! command -v imenu || ! command -v instantmenu; then
306 notify-send "please install instantmenu and imenu"
308 if ! [ -e /opt/instantos/rootinstall ]; then
309 imenu -m "instantOS is missing some configuration"
310 while ! [ -e /tmp/rootskip ]; do
311 if imenu -c "would you like to fix that?"; then
312 touch /tmp/topinstall
313 instantsudo bash -c "instantutils root"
316 if imenu -c "Are you sure? this will prevent parts of instantOS from functioning correctly"; then
326 # displays message user opens the terminal for the first time
327 if ! iconf -i nohelp; then
328 if ! grep -q 'instantterminalhelp' ~/.zshrc; then
329 echo '[[ $- == *i* ]] && instantterminalhelp' >>~/.zshrc
333 if iconf -i highfps; then
334 xdotool key super+alt+shift+d
337 if iconf -i noanimations; then
338 xdotool key super+alt+shift+s
342 if iconf -i desktopicons; then
343 rox --pinboard Default
347 if iconf -i udiskie; then
348 command -v udiskie && udiskie -t &
351 # user declared autostart
352 if [ -e ~/.instantautostart ]; then
353 bash ~/.instantautostart &