OSDN Git Service

63e64fc8c6dda61fb164fe41afcc5ab92d5c6ed5
[alterlinux/alterlinux.git] / channels / i3 / airootfs.any / usr / bin / initmenu
1 #!/bin/bash
2
3 RED='\e[41m'
4 BLUE='\e[44m'
5 ORANGE='\e[46m'
6 NC='\e[0m'
7 STATUSVAR=1
8 TEXTEDITOR=$EDITOR
9
10 # Service messages section
11 CONTINMSG="$BLUE Press any key to continue$NC"
12 ERRORMSG="$RED Wrong.$NC"
13 TRYAGAINMSG="$RED Press any key and try again$NC"
14 SELECTFILEMSG="Select file to configure and press Enter: "
15 SELECTTARGETMSG="Select target and press Enter to change to: "
16 SERVICEPREFIXMSG="Service "
17 SERVICESTARTEDMSG=" was started successfully"
18 SERVICEENABLEDMSG=" was enabled successfully"
19 SERVICESTOPPEDMSG=" was stopped successfully"
20 SERVICEDISABLEDMSG=" was disabled successfully"
21
22 function pressanykeyrequest {
23         echo -e "$CONTINMSG"
24         read -s -n1
25         STATUSVAR=1
26 }
27
28 function config_editor {
29 PS3="$SELECTFILEMSG"
30 configs=("journald.conf" "system.conf" "logind.conf" "user.conf" "cancel")
31
32 select pick in "${configs[@]}"
33 do
34         case $pick in
35                 logind.conf)
36                         [ -e /etc/systemd/logind.conf.d/10-logind.conf ] || \
37                         sudo mkdir -p /etc/systemd/logind.conf.d/ && \
38                         sudo cp /etc/systemd/logind.conf /etc/systemd/logind.conf.d/10-logind.conf && \
39                         sudo $TEXTEDITOR /etc/systemd/logind.conf.d/10-logind.conf
40                         break
41                         ;;
42                 system.conf)
43                         [ -e /etc/systemd/system.conf.d/10-system.conf ] || \
44                         sudo mkdir -p /etc/systemd/system.conf.d/ && \
45                         sudo cp /etc/systemd/system.conf /etc/systemd/system.conf.d/10-system.conf && \
46                         sudo $TEXTEDITOR /etc/systemd/system.conf.d/10-system.conf
47                         break
48                         ;;
49                 journald.conf)
50                         [ -e /etc/systemd/journald.conf.d/10-journald.conf ] || \
51                         sudo mkdir -p /etc/systemd/journald.conf.d/ && \
52                         sudo cp /etc/systemd/journald.conf /etc/systemd/journald.conf.d/10-journald.conf && \
53                         sudo $TEXTEDITOR /etc/systemd/journald.conf.d/10-journald.conf
54                         break
55                         ;;
56                 user.conf)
57                         [ -e /etc/systemd/user.conf.d/10-user.conf ] || \
58                         sudo mkdir -p /etc/systemd/user.conf.d/ && \
59                         sudo cp /etc/systemd/user.conf /etc/systemd/user.conf.d/10-user.conf && \
60                         sudo $TEXTEDITOR /etc/systemd/user.conf.d/10-user.conf
61                         break
62                         ;;
63                 cancel)
64                         break
65         esac
66 done
67
68 }
69
70 function change_runlevel {
71 PS3="$SELECTTARGETMSG"
72 targets=("poweroff" "rescue" "multi-user" "graphical" "reboot" "cancel")
73
74 select pick in "${targets[@]}"
75 do
76         case $pick in
77                 poweroff)
78                         sudo systemctl isolate poweroff.target
79                         break
80                         ;;
81                 reboot)
82                         sudo systemctl isolate reboot.target
83                         break
84                         ;;
85                 rescue)
86                         sudo systemctl isolate rescue.target
87                         break
88                         ;;
89                 multi-user)
90                         sudo systemctl isolate multi-user.target
91                         break
92                         ;;
93                 graphical)
94                         sudo systemctl isolate graphical.target
95                         break
96                         ;;
97                 cancel)
98                         break
99         esac
100 done
101
102
103 }
104
105 function enable_services {
106         OUTPUTITEM=""
107         OUTPUTITEM=$(systemctl list-unit-files | awk '/disabled/ {print $1}' | fzf -m -e --reverse)
108         if [ "$OUTPUTITEM" != "" ]
109         then
110                 sudo systemctl enable $OUTPUTITEM
111                 STATUSVAR=$?
112         else
113                 STATUSVAR=1
114         fi
115 return $STATUSVAR
116 }
117
118 function start_services {
119         OUTPUTITEM=""
120         OUTPUTITEM=$(systemctl list-unit-files | awk '/disabled/ {print $1}' | fzf -m -e --reverse)
121         if [ "$OUTPUTITEM" != "" ]
122         then
123                 sudo systemctl start $OUTPUTITEM
124                 STATUSVAR=$?
125         else
126                 STATUSVAR=1
127         fi
128 return $STATUSVAR
129 }
130
131 function stop_services {
132         OUTPUTITEM=""
133         OUTPUTITEM=$(systemctl list-unit-files | awk '/enabled/ {print $1}' | fzf -m -e --reverse)
134         if [ "$OUTPUTITEM" != "" ]
135         then
136                 sudo systemctl stop $OUTPUTITEM
137                 STATUSVAR=$?
138         else
139                 STATUSVAR=1
140         fi
141 return $STATUSVAR
142 }
143
144 function disable_services {
145         OUTPUTITEM=""
146         OUTPUTITEM=$(systemctl list-unit-files | awk '/enabled/ {print $1}' | fzf -m -e --reverse)
147         if [ "$OUTPUTITEM" != "" ]
148         then
149                 sudo systemctl disable $OUTPUTITEM
150                 STATUSVAR=$?
151         else
152                 STATUSVAR=1
153         fi
154 return $STATUSVAR
155 }
156
157 function main {
158     while true; do
159     clear
160     echo ""
161     echo -e "                          ::Init menu:: "
162     echo -e " ┌─────────────────────────────────────────────────────────────┐"
163     echo -e " │    1   Enable services              2   Disable services    │"
164     echo -e " │    3   Start services               4   Stop Services       │"
165     echo -e " │    5   List active services         6   Show boot messages  │"
166     echo -e " │    7   Edit configuration files     8   Change runlevel     │"
167     echo -e " │    9   Analyze boot                                         │"
168     echo -e " └─────────────────────────────────────────────────────────────┘"
169     echo -e "          Select an item       -       0   Exit "
170     echo ""
171     read -s -n1 choix
172     case $choix in
173         1)
174             echo
175             enable_services
176             STATUSVAR=$?
177                 if [ $STATUSVAR -eq 0 ]; then
178                         echo -e "$SERVICEPREFIXMSG$OUTPUTITEM$SERVICEENABLEDMSG"
179                         pressanykeyrequest
180                 else
181                         echo ""
182                 fi
183             ;;
184         2)
185             echo
186             disable_services
187             STATUSVAR=$?
188                 if [ $STATUSVAR -eq 0 ]; then
189                         echo -e "$SERVICEPREFIXMSG$OUTPUTITEM$SERVICEDISABLEDMSG"
190                         pressanykeyrequest
191                 else
192                         echo ""
193                 fi
194             ;;
195         3)
196             echo
197             start_services
198             STATUSVAR=$?
199                 if [ $STATUSVAR -eq 0 ]; then
200                         echo -e "$SERVICEPREFIXMSG$OUTPUTITEM$SERVICESTARTEDMSG"
201                         pressanykeyrequest
202                 else
203                         echo""
204                 fi
205             ;;
206         4)
207             echo
208             stop_services
209             STATUSVAR=$?
210                 if [ $STATUSVAR -eq 0 ]; then
211                         echo -e "$SERVICEPREFIXMSG$OUTPUTITEM$SERVICESTOPPEDMSG"
212                         pressanykeyrequest
213                 else
214                         echo ""
215                 fi
216                 ;;
217         5)
218             echo
219             systemctl
220             echo ""
221             pressanykeyrequest
222             ;;
223         6)
224             echo
225             dmesg
226             echo ""
227             pressanykeyrequest
228             ;;
229         7)
230             echo
231             config_editor
232             echo ""
233             ;;
234         8)
235             echo
236             change_runlevel
237             echo ""
238             ;;
239         9)
240             echo
241                 clear
242             systemd-analyze blame
243             echo ""
244             pressanykeyrequest
245             ;;
246         0)
247             clear && exit
248             ;;
249         *)
250             echo -e "$ERRORMSG$TRYAGAINMSG"
251             read -s -n1
252             clear
253             ;;
254     esac
255     done
256 }
257
258 main