Magellan Linux

Contents of /mcore-src/trunk/mcore-tools/src/modules/basic-video/graphic.client.class.in

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2845 - (show annotations) (download)
Fri Nov 16 14:24:20 2018 UTC (5 years, 5 months ago) by niro
File size: 7318 byte(s)
-honor MROOT and fix typos en|disabled -> en|disable
1 # $Id$
2
3 provide basic-video
4
5 # todo monitor gfxcard
6 helper_graphic_add_configs()
7 {
8 local path="$1"
9 local conf
10
11 # exit ERR if path does not exist
12 [[ ! -d ${path} ]] && return 1
13
14 for conf in $(find "${path}" -mindepth 1 -maxdepth 1 -type f -name \*.conf | sort)
15 do
16 cat "${conf}" >> "${CONFIG}"
17 done
18 }
19
20 # everything from xorg conf but inputdevices. they are handled properly trough udev!
21 helper_graphic_rebuild_xorg_conf_d()
22 {
23 local CONFIG
24 local conf
25 local boardvendor
26 local write_zotac_quirk
27
28 # rebuild 25-gfxcard.conf
29 # always clear the config
30 CONFIG="${MROOT}@@SYSCONFDIR@@/X11/xorg.conf.d/25-device.conf"
31 clearconfig
32 addconfig "# Autogenerated by mcored"
33 # but only add lines if some values are found in config.d dir
34 if path_not_empty ${MROOT}/${MCORE_CONFIG_PATH}/xorg/device
35 then
36 addconfig 'Section "Device"'
37 helper_graphic_add_configs ${MROOT}/${MCORE_CONFIG_PATH}/xorg/device
38 addconfig 'EndSection'
39 fi
40
41 # rebuild 25-module.conf
42 # always clear the config
43 CONFIG="${MROOT}@@SYSCONFDIR@@/X11/xorg.conf.d/25-module.conf"
44 clearconfig
45 addconfig "# Autogenerated by mcored"
46 # but only add lines if some values are found in config.d dir
47 if path_not_empty ${MROOT}/${MCORE_CONFIG_PATH}/xorg/module
48 then
49 addconfig 'Section "Module"'
50 helper_graphic_add_configs ${MROOT}/${MCORE_CONFIG_PATH}/xorg/module
51 addconfig 'EndSection'
52 fi
53
54 # rebuild 25-screen.conf
55 # always clear the config
56 CONFIG="${MROOT}@@SYSCONFDIR@@/X11/xorg.conf.d/25-screen.conf"
57 clearconfig
58 addconfig "# Autogenerated by mcored"
59 # but only add lines if some values are found in config.d dir
60 if path_not_empty ${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen
61 then
62 addconfig 'Section "Screen"'
63 addconfig ' Identifier "Screen0"'
64 addconfig ' Monitor "Monitor0"'
65 helper_graphic_add_configs ${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen
66 addconfig 'EndSection'
67 fi
68
69 # always disable hdmi port on zotac devices atm - fixme make it configurable like alx
70 CONFIG="${MROOT}@@SYSCONFDIR@@/X11/xorg.conf.d/30-fix-zotac.conf"
71 clearconfig
72 write_zotac_quirk=0
73 if [ -e /sys/devices/virtual/dmi/id/board_vendor ]
74 then
75 boardvendor="$(< /sys/devices/virtual/dmi/id/board_vendor)"
76 # decapitalize
77 boardvendor="${boardvendor,,}"
78 case ${boardvendor} in
79 *zotac*) write_zotac_quirk=1 ;;
80 esac
81 fi
82 # some zotacs has as the board_vendor "filled by o.e.m"
83 # so we search the whole devices subtree for zotac vendor matches
84 # 0x19da="ZOTAC International (MCO) Ltd."
85 if [[ -n $(cat /sys/devices/*/*/subsystem_vendor | grep 0x19da) ]]
86 then
87 write_zotac_quirk=1
88 fi
89
90 if [ -f ${MROOT}/${MCORE_CONFIG_PATH}/xorg/device/hdmi ]
91 then
92 source ${MROOT}/${MCORE_CONFIG_PATH}/xorg/device/hdmi
93 case "${graphic_hdmi}" in
94 enable) write_zotac_quirk=0 ;;
95 disable) write_zotac_quirk=1 ;;
96 esac
97 fi
98
99 if [[ ${write_zotac_quirk} = 1 ]]
100 then
101 addconfig "# Autogenerated by mcored"
102 addconfig "Section \"Monitor\""
103 addconfig " Identifier \"LVDS1\""
104 addconfig " Option \"Ignore\" \"True\""
105 addconfig "EndSection"
106 fi
107 }
108
109 help_graphic_resolution()
110 {
111 mecho "set graphic.resolution [resolution]"
112 mecho " auto, 800x600, 1024x768, 1280x1024 etc"
113 }
114
115 help_graphic_refresh()
116 {
117 mecho "set graphic.refresh [refresh rate]"
118 mecho " auto, 60, 100 - all values are Hz"
119 }
120
121 help_graphic_depth()
122 {
123 mecho "set graphic.depth [color-depth]"
124 mecho " auto, 1, 4, 8, 15, 16, 24 - all values are bits"
125 }
126
127 help_graphic_driver()
128 {
129 mecho "get graphic.driver [action]"
130 mecho " Shows current selected or system available graphic drivers."
131 mecho " Available actions:"
132 mecho " system - show available drivers on the system"
133 mecho " current - shows the current selected driver used by Xorg"
134 mecho
135 mecho "set graphic.driver [driver]"
136 mecho " Selects the graphic card driver used by Xorg."
137 }
138
139 help_graphic_hdmi()
140 {
141 mecho "set graphic.hdmi [action]"
142 mecho " Available actions:"
143 mecho " enable - enables the hdmi port"
144 mecho " disable - disables the hdmi port"
145 }
146
147 # set_graphic_resolution ${value}
148 set_graphic_resolution()
149 {
150 local resolution="${CLASS_ARGV[0]}"
151 local CONFIG
152 local depth
153 [[ -z ${resolution} ]] && help_graphic_resolution && return 1
154
155 CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen/20-resolution.conf"
156
157 case ${resolution} in
158 *x*)
159 clearconfig
160 # do it for all supported color depth
161 for depth in 1 4 8 15 16 24
162 do
163 addconfig ' SubSection "Display"'
164 addconfig " Depth ${depth}"
165 addconfig " Modes \"${resolution}\""
166 addconfig ' ViewPort 0 0'
167 addconfig ' EndSubSection'
168 done
169
170 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
171 then
172 x11runas "xrandr --size ${resolution}"
173 fi
174 ;;
175 auto) clearconfig ;;
176 esac
177
178 helper_graphic_rebuild_xorg_conf_d
179 }
180
181 # set_graphic_depth ${value}
182 set_graphic_depth()
183 {
184 local depth="${CLASS_ARGV[0]}"
185 local CONFIG
186 [[ -z ${depth} ]] && help_graphic_depth && return 1
187
188 CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/xorg/screen/10-depth.conf"
189
190 # do it only for supported color depths
191 case "${depth}" in
192 1|4|8|15|16|24)
193 clearconfig
194 addconfig " DefaultDepth ${depth}"
195 ;;
196 auto) clearconfig ;;
197 *) help_graphic_depth && return 1 ;;
198 esac
199
200 helper_graphic_rebuild_xorg_conf_d
201 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
202 then
203 mecho "X11 restart required!"
204 fi
205 }
206
207 # set_graphic_refresh ${value}
208 set_graphic_refresh()
209 {
210 local value="${CLASS_ARGV[0]}"
211 [[ -z ${value} ]] && help_graphic_refresh && return 1
212
213 #echo "${value}" > ${MROOT}/${MCORE_CONFIG_PATH}/xorg/refresh
214
215 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
216 then
217 x11runas "xrandr --refresh ${value}"
218 fi
219
220 helper_graphic_rebuild_xorg_conf_d
221 }
222
223 set_graphic_driver()
224 {
225 local driver="${CLASS_ARGV[0]}"
226 local driverdir="@@LIBDIR@@/xorg/modules/drivers"
227 local CONFIG
228 [[ -z ${driver} ]] && help_graphic_driver && return 1
229
230 if [[ ${driver} = auto ]]
231 then
232 decho "Using driver autodetection, doing nothing"
233 elif [[ -f ${MROOT}/${driverdir}/${driver}_drv.so ]]
234 then
235 CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/xorg/device/25-device.conf"
236 clearconfig
237 addconfig " Identifier \"Card0\""
238 addconfig " Driver \"${driver}\""
239
240 helper_graphic_rebuild_xorg_conf_d
241 if [[ -z ${MROOT} ]] || [[ ${MROOT} = / ]]
242 then
243 mecho "X11 restart required!"
244 fi
245 else
246 eecho "Driver '${driver}' does not exist on this system. Aborted!"
247 fi
248 }
249
250 set_graphic_hdmi()
251 {
252 local action="${CLASS_ARGV[0]}"
253 local CONFIG
254
255 case "${action}" in
256 enable|disable)
257 CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/xorg/device/hdmi"
258 clearconfig
259 addconfig "graphic_hdmi=\"${action}\""
260 ;;
261 *)
262 help_graphic_driver
263 return 1
264 ;;
265 esac
266 }
267
268 get_graphic_driver()
269 {
270 local action="${CLASS_ARGV[0]}"
271 local driverdir="@@LIBDIR@@/xorg/modules/drivers"
272 local driver
273 local config="${MCORE_CONFIG_PATH}/xorg/device/25-device.conf"
274 local i
275
276 case "${action}" in
277 current)
278 if [[ -f ${MROOT}/${config} ]]
279 then
280 driver=$(grep Driver "${MROOT}/${config}" | sed 's:.*Driver.*\"\(.*\)\":\1:')
281 rvecho "${driver}"
282 else
283 rvecho "none"
284 fi
285 ;;
286 system)
287 driver=$(list_files_in_directory ${MROOT}/${driverdir} -mindepth 1 -maxdepth 1 | sed s':_drv.so::g')
288 rvecho "${driver}"
289 ;;
290 *)
291 help_graphic_driver
292 return 1
293 ;;
294 esac
295 }
296
297 get_graphic_hdmi()
298 {
299 local CONFIG="${MROOT}/${MCORE_CONFIG_PATH}/xorg/device/hdmi"
300 if [ -f ${CONFIG} ]
301 then
302 rvecho "$(< ${CONFIG})"
303 fi
304 }