3 ###############################################
4 ## script for instantOS autostart ##
5 ###############################################
7 # run userinstall to determine device properties
8 if ! iconf -i userinstall; then
9 /usr/share/instantutils/userinstall.sh
10 iconf -i userinstall 1
13 # architecture detection
15 if uname -m | grep -q '^arm'; then
19 if [ "$(ps aux | grep bash | grep instantautostart | wc -l)" -gt 3 ]; then
20 echo "already running"
30 if ! iconf -i rangerplugins; then
32 echo "installing ranger plugins"
33 mkdir -p ~/.config/ranger/plugins
34 cp -r /usr/share/rangerplugins/* ~/.config/ranger/plugins/
35 iconf -i rangerplugins 1
38 # find out if it's a live session
39 if [ -e /usr/share/liveutils ] &>/dev/null; then
41 echo "live session detected"
44 if iconf -i islaptop; then
45 export ISLAPTOP="true"
46 echo "laptop detected"
52 if [ -n "$ISLIVE" ]; then
59 # optionally disable status bar
60 if iconf -i nobar; then
61 NMON=$(iconf names | wc -l)
62 for i in $(eval "echo {1..$NMON}"); do
63 echo "found monitor $i"
64 xdotool key super+comma
69 if [ -n "$ISRASPI" ]; then
70 # enable double drawing for moving floating windows
71 # greatly increases smoothness
73 if ! [ -e ~/.config/instantos/israspi ]; then
74 echo "marking machine as raspi"
75 mkdir -p ~/.config/instantos
76 touch ~/.config/instantos/israspi
77 # logo does not work on raspi
82 if ! iconf -i notheming; then
85 iconf -i instantthemes 1
87 # dynamically switch between light and dark gtk theme
89 if [ "$DATEHOUR" -gt "20" ] || [ "$DATEHOUR" -lt "7" ]; then
91 touch /tmp/instantdarkmode
92 [ -e /tmp/instantlightmode ] && rm /tmp/instantlightmode
95 touch /tmp/instantlightmode
96 [ -e /tmp/instantdarkmode ] && rm /tmp/instantdarkmode
99 touch /tmp/instantlightmode
102 mkdir -p /tmp/notifications &>/dev/null
103 if ! pgrep dunst; then
105 # wait for theming before starting dunst
106 if [ -e /tmp/instantdarkmode ] || [ -e /tmp/instantlightmode ]; then
117 # set up oh-my-zsh config if not existing already
118 iconf -i nozsh || instantshell &
120 # fix resolution on virtual machine
121 if ! iconf -i novmfix && cat /proc/cpuinfo | grep -q hypervisor; then
122 # indicator file only exists on kvm/QEMU on amd
123 if [ -e /opt/instantos/kvm ]; then
125 if lshw -c video | grep -i 'qxl' || xrandr | grep -i '^qxl'; then
127 # iconf -i noanimations 1
128 if ! iconf -i potato && ! iconf -i nopotato; then
129 if echo "please set your video card to virtio or passthrough
130 QXL on AMD on QEMU/kvm has been known to cause a severe Xorg memory leak.
131 Disabling compositing makes this somewhat bearable,
132 but switching really is recommended.
133 (or switch to virtualbox, no issues there...)
134 Disable compositing for this VM?" | imenu -C; then
138 if ! imenu -c "ask again next time?"; then
147 if echo "virtual machine detected.
148 Would you like to switch to a 1080p resolution?" | imenu -C; then
149 echo "applying virtual machine workaround"
150 /opt/instantos/menus/dm/tv.sh
152 if ! imenu -c "ask again next session"; then
159 echo "not a live session"
160 if [ -e /opt/instantos/installtrigger ]; then
161 zenity --info --text "finishing installation in background" &
163 # ask for password if postinstall already ran
164 if ! timeout 2 sudo echo test; then
165 instantsudo instantpostinstall
166 sudo rm /opt/instantos/installtrigger
168 sudo instantpostinstall
175 if ! iconf -i max; then
179 if [ -e ~/instantos/monitor.sh ]; then
180 bash ~/instantos/monitor.sh &
181 elif [ -e ~/.config/autorandr/instantos/config ]; then
182 autorandr instantos &
185 if checkinternet; then
188 # fall back to already installed wallpapers
189 instantwallpaper offline
190 for i in $(seq 10); do
191 if checkinternet; then
200 # apply keybpard layout
201 if [ -e ~/instantos/keyboard ]; then
202 setxkbmap -layout $(cat ~/instantos/keyboard)
204 CURLOCALE=$(locale | grep LANG | sed 's/.*=\(.*\)\..*/\1/')
210 echo "no keyboard layout found for your locale"
216 if iconf mousespeed; then
217 echo "setting mousespeed"
218 instantmouse s "$(iconf mousespeed)"
221 if ! iconf -i noconky; then
222 shuf /usr/share/instantwidgets/tooltips.txt | head -1 >~/.cache/tooltip
223 conky -c /usr/share/instantwidgets/tooltips.conf &
227 echo "live session detected"
230 echo "disabling compositing for qxl graphics"
231 if lshw -c video | grep -i 'qxl' || xrandr | grep -i '^qxl'; then
236 iconf -i wifiapplet 1
237 instantwallpaper set /usr/share/instantwallpaper/defaultphoto.png
238 conky -c /usr/share/instantwidgets/install.conf &
241 if ! pgrep python; then
249 # make built in status optional
250 if ! iconf -i nostatus; then
251 source /usr/bin/instantstatus &
254 iconf -i potato || ipicom &
257 xfce4-power-manager &
259 while iconf -i wifiapplet:; do
260 if ! pgrep nm-applet; then
266 # welcome greeter app
267 if iconf -b welcome; then
271 # prompt to fix configuration if installed from the AUR
272 if ! iconf -i norootinstall && ! islive; then
273 if ! command -v imenu || ! command -v instantmenu; then
274 notify-send "please install instantmenu and imenu"
276 if ! [ -e /opt/instantos/rootinstall ]; then
277 imenu -m "instantOS is missing some configuration"
278 while ! [ -e /tmp/rootskip ]; do
279 if imenu -c "would you like to fix that?"; then
280 touch /tmp/topinstall
281 instantsudo bash -c "instantutils root"
284 if imenu -c "Are you sure? this will prevent parts of instantOS from functioning correctly"; then
294 # displays message user opens the terminal for the first time
295 if ! iconf -i nohelp; then
296 if ! grep -q 'instantterminalhelp' ~/.zshrc; then
297 echo '[[ $- == *i* ]] && instantterminalhelp' >>~/.zshrc
301 if iconf -i highfps; then
302 xdotool key super+alt+shift+d
305 if iconf -i noanimations; then
306 xdotool key super+alt+shift+s
310 if iconf -i desktopicons; then
311 rox --pinboard Default
314 # user declared autostart
315 if [ -e ~/.instantautostart ]; then
316 bash ~/.instantautostart