OSDN Git Service

remove redundant width setting from instantdiper
[instantos/instantOS.git] / programs / instantdisper
1 #!/bin/bash
2
3 # menu similar to the super + p menu on windows
4 # used to quickly change settings when docking a laptop
5
6 mainmenu() {
7     echo '>>h PROJECT
8            Extend
9            PC screen only
10            Second screen only
11                Duplicate
12 :g Set default action
13 :r Close menu' | instantmenu -l 20 -h -1 -c -w -1 -bw 4 -q search
14 }
15
16 defaultmenu() {
17     echo '>>h Default projection settings
18              Extend
19              PC screen only
20              Second screen only
21                 Duplicate
22 :b Ask
23 :r None
24 :b Back' | instantmenu -l 20 -h -1 -c -w -1 -bw 4 -q search
25 }
26
27 restartdunst() {
28     sleep 1
29     if pgrep dunst
30     then
31         echo "restarting dunst"
32         pkill dunst
33         sleep 1
34         dunst & 
35     fi
36 }
37
38 setdefault() {
39     DEFAULTLOOPING="true"
40     while [ -n "$DEFAULTLOOPING" ]; do
41         DEFAULTCHOICE="$(defaultmenu)"
42
43         if [ -z "$DEFAULTCHOICE" ]; then
44             continue
45         else
46             unset DEFAULTLOOPING
47         fi
48
49         case "$DEFAULTCHOICE" in
50         "*Second screen only")
51             iconf automon S
52             ;;
53         *Extend)
54             iconf automon e
55             ;;
56         "*PC screen only")
57             iconf automon s
58             ;;
59         *Duplicate)
60             iconf automon c
61             ;;
62         *None)
63             iconf automon n
64             ;;
65         *Ask)
66             iconf -d automon
67             ;;
68         *) # Back
69             instantdisper &
70             exit
71             ;;
72         esac
73     done
74 }
75
76 # apply saved setting
77 applydefault() {
78     if ! iconf automon; then
79         echo "no default monitor setting"
80     fi
81
82     AUTOMON="$(iconf automon)"
83     if grep '^[esSc]$' <<<"$AUTOMON"; then
84         disper -"$AUTOMON"
85         restartdunst &
86     else
87         echo "none"
88     fi
89 }
90
91 if [ -n "$1" ]; then
92     case "$1" in
93     apply)
94         if iconf automon; then
95             applydefault
96             exit
97         fi
98         ;;
99     setdefault)
100         setdefault
101         applydefault
102         exit
103         ;;
104     settings)
105         echo "starting instantdisper"
106         ;;
107     esac
108 fi
109
110 LOOPING="true"
111 while [ -n "$LOOPING" ]; do
112     CHOICE="$(mainmenu)"
113     unset LOOPING
114     case "$CHOICE" in
115     *Extend)
116         echo "extend"
117         disper -e
118         restartdunst &
119         ;;
120     *only)
121         if grep -q 'PC' <<<"$CHOICE"; then
122             echo "setting display to primary monitor"
123             disper -s
124         else
125             echo "setting display to secondary monitor"
126             disper -S
127         fi
128         restartdunst &
129         ;;
130     *Duplicate)
131         echo "duplicating monitors"
132         disper -c
133         restartdunst &
134         ;;
135     *action)
136         echo "setting default action"
137         setdefault
138         applydefault
139         ;;
140     *menu)
141         exit
142         ;;
143     *)
144         echo "choice $CHOICE"
145         LOOPING="true"
146         ;;
147     esac
148 done