From 3a594ad38241da5087d34584ba70ca06e7be97c4 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Thu, 23 Aug 2012 19:40:15 -0500 Subject: LinHES-config: added print_xorg_res.py this feeds the ui to list valid modelines as X detects them. This provides a consistent interface. Also updated xconfig.sh todo something with the XRes value and configuring xorg. --- abs/core/LinHES-config/PKGBUILD | 21 ++--- abs/core/LinHES-config/print_xorg_res.py | 128 +++++++++++++++++++++++++++++++ abs/core/LinHES-config/xconfig.sh | 47 ++++++++++-- abs/core/mythinstall/PKGBUILD | 2 +- 4 files changed, 182 insertions(+), 16 deletions(-) create mode 100644 abs/core/LinHES-config/print_xorg_res.py diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD index d395bbc..0ea9210 100644 --- a/abs/core/LinHES-config/PKGBUILD +++ b/abs/core/LinHES-config/PKGBUILD @@ -1,11 +1,11 @@ pkgname=LinHES-config pkgver=2.3 -pkgrel=81 +pkgrel=83 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config ) pkgdesc="Install and configure your system" depends=('bc' 'libstatgrab' 'mysql-python' 'expect' 'curl' 'dnsutils' 'parted' 'sg3_utils' 'nmbscan' 'system-templates' 'rsync' 'python-parted' - 'python-pexpect' 'python-netifaces' + 'python-pexpect' 'python-netifaces' 'python-iplib' 'mythinstall>=2-10' 'sudo') #LinHES-timezone arch=('i686' 'x86_64') @@ -46,8 +46,9 @@ source=(mv_install.py 09_mythvantge_runit_grub systemconfig.py myth_user_call.py mythvantage.cfg - config-sudo.rules - hdhr.conf blacklist_nouveau.conf blacklist_pcspkr.conf ) + config-sudo.rules + hdhr.conf blacklist_nouveau.conf blacklist_pcspkr.conf + print_xorg_res.py ) backup=(etc/mythvantage.cfg) install=config.install @@ -95,6 +96,7 @@ build() { install -m 0755 mv_hostype.py $MVDIR/bin/ install -m 0755 mv_supplemental.py $MVDIR/bin/ install -m 0755 systemconfig.py $MVDIR/bin/ + install -m 0755 print_xorg_res.py $MVDIR/bin/ install -m 0755 mythvantage.cfg $startdir/pkg/etc/ #README file displayed on install @@ -107,13 +109,13 @@ build() { #sudo rules mkdir -p $startdir/pkg/etc/sudoers.d/ - chmod 750 $startdir/pkg/etc/sudoers.d/ - chown -R root:root $startdir/pkg/etc/sudoers.d + chmod 750 $startdir/pkg/etc/sudoers.d/ + chown -R root:root $startdir/pkg/etc/sudoers.d install -o root -g root -m 0750 config-sudo.rules $startdir/pkg/etc/sudoers.d/config_sudo #sysctrl conf install -o root -g root -D -m 0755 hdhr.conf $startdir/pkg/etc/sysctl.d/hdhr.conf - + #modules blacklist files install -o root -g root -D -m 0755 blacklist_pcspkr.conf $startdir/pkg/etc/modprobe.d/blacklist_pcspkr.conf install -o root -g root -D -m 0755 blacklist_nouveau.conf $startdir/pkg/etc/modprobe.d/blacklist_nouveau.conf @@ -129,7 +131,7 @@ md5sums=('0b29bb0819aad086f612699815132ec5' '68199e861c2933ccbb84735b9b440157' '2a7f3b34e522acfd08283b86c8926aba' '60103d94ada98ac583fea620294f14d3' - '36b0ce0589fd522217f90e0d0e5315c0' + '61e1e5cc957a0ce99a8a24501efab88c' 'ecf9e5df20683a769c4a8a8f2d65de85' '895d4e842d7457a48a6d2ce0e9c833b7' '8ba06c2ce6129371548cc360ccca27f8' @@ -158,4 +160,5 @@ md5sums=('0b29bb0819aad086f612699815132ec5' '4804aa93aaad3dfcfff08cd9ffd68836' '0fa6fffd87f350380d45f1f8a5b7babe' '6ec39b010c0ed8901ea896c7e153d330' - '3866086e6af5e3528a66eff492f2f4dd') + '3866086e6af5e3528a66eff492f2f4dd' + 'c9279fa095af624ee3d9bc75d3328360') diff --git a/abs/core/LinHES-config/print_xorg_res.py b/abs/core/LinHES-config/print_xorg_res.py new file mode 100644 index 0000000..3b7ce56 --- /dev/null +++ b/abs/core/LinHES-config/print_xorg_res.py @@ -0,0 +1,128 @@ +#!/usr/bin/python2 +# -*- coding: utf-8 -*- + +__author__ = "James Meyer" +__date__ = "August 23rd 2012" + + +from subprocess import Popen, PIPE +import re + +class available_display_res(): + def __init__(self): + + self.mode_list=[] + self.videocard = self.find_video_card() + + if self.videocard == "nvidia": + self.parse_modeline_nvidia() + else: + self.sizes_xrandr() + #elif self.videocard == "intel": + #self.sizes_xrandr() + #elif self.videocard == "vmware": + #self.sizes_xrandr() + #elif self.videocard == "vesa": + #self.sizes_parse_log() + + + def getlist(self): + return self.mode_list + + def getvc(self): + return self.videocard + + def find_video_card(self): + videocard="" + conf_file="/etc/X11/xorg.conf.d/20-automv.conf" + lines=[] + try: + f=open(conf_file,'r') + lines=f.readlines() + f.close() + except: + print " find_video_card: couldn't read in %s" %conf_file + videocard = "unknown" + + for line in lines: + parsed=line.split() + if parsed[0].strip() == "Driver": + videocard = parsed[1].strip('''"''') + break + + return videocard + + def parse_modeline_nvidia(self): + self.mode_list=[] + conf_file="/var/log/Xorg.0.log" + lines=[] + try: + f=open(conf_file,'r') + lines=f.readlines() + f.close() + except: + print " parse_modeline_nvidia: couldn't read in %s" %conf_file + self.mode_list=["Auto"] + #now parse the list looking for modelines + search="Modes in ModePool" + searchindex=[] + for line in lines: + if line.find(search) > 4 : + searchindex.append(lines.index(line)) + search="End of ModePool" + + if len(searchindex) == 2: + break + #extract the modelines + #[ 29.858] (II) NVIDIA(GPU-0): "nvidia-auto-select" : 2560 x 1600 @ 59.9 Hz (from: EDID) + try: + modelines = lines[searchindex[0]+1:searchindex[1]-1] + for i in modelines: + self.mode_list.append(i.split('''"''')[1]) + except: + self.mode_list=["nvidia-auto-select"] + + + def sizes_parse_log(self): + self.mode_list=["parse_log_list"] + + def sizes_xrandr(self): + """List all sizes detected by xrandr, + ordered by the next resolution to cycle to""" + size_re = re.compile("^ ([0-9]*x[0-9]*)\W*[0-9]*\.[0-9]*(\*)?") + p1 = Popen(['xrandr'], stdout=PIPE) + sizes = [] + current_size_index = 0 + for line in p1.communicate()[0].split("\n"): + m = size_re.match(line) + if m: + sizes.append(m.group(1)) + if m.group(2) == "*": + current_size_index = len(sizes) - 1 + #return sizes[current_size_index+1:] + sizes[:current_size_index+1] + self.mode_list = sizes[current_size_index+1:] + sizes[:current_size_index+1] + +def go(): + mode = available_display_res() + vc = mode.getvc() + modelist = mode.getlist() + print vc + + for i in modelist: + print i + conf_file="/tmp/modelines" + try: + f=open(conf_file,'w') + for i in modelist: + f.write(i) + f.write("\n") + f.close() + except: + print " print_xorg_res: couldn't write modelines to %s" %conf_file + + + + +if __name__ == '__main__': + go() + diff --git a/abs/core/LinHES-config/xconfig.sh b/abs/core/LinHES-config/xconfig.sh index 73e4a5e..f832e66 100755 --- a/abs/core/LinHES-config/xconfig.sh +++ b/abs/core/LinHES-config/xconfig.sh @@ -144,6 +144,22 @@ function intel_driver_install { # Xres="${Xres} 720x480_60" # fi +function set_res { + echo " Setting modeline to ${Xres}" + echo " Setting modeline to ${Xres}" >> $LOGFILE 2>&1 + cat > /etc/X11/xorg.conf.d/30-screen.conf < /etc/X11/autostart/vmware.sh echo "/usr/bin/vmware-user-suid-wrapper" >> /etc/X11/autostart/vmware.sh chmod 755 /etc/X11/autostart/vmware.sh + if [ ${Xres} != "Auto" ] + then + set_res + else + rm -f /etc/X11/xorg.conf.d/30-screen.conf + fi ;; Intel|intel) intel_driver_install cp $TEMPLATES/xorg/xorg.intel /etc/X11/xorg.conf.d/20-automv.conf + if [ ${Xres} != "Auto" ] + then + set_res + else + rm -f /etc/X11/xorg.conf.d/30-screen.conf + fi ;; vesa|InnoTek|*) #leaving this as * and vesa for no real reason other then it's explicit to catch vesa vesa_driver_install cp $TEMPLATES/xorg/xorg.vesa /etc/X11/xorg.conf.d/20-automv.conf -# if [ ${Xres} = Auto ] -# then -# sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF" -# else -# sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF" -# fi + if [ ${Xres} != "Auto" ] + then + set_res + else + rm -f /etc/X11/xorg.conf.d/30-screen.conf + fi + ;; esac diff --git a/abs/core/mythinstall/PKGBUILD b/abs/core/mythinstall/PKGBUILD index 923fb3e..a07a78e 100644 --- a/abs/core/mythinstall/PKGBUILD +++ b/abs/core/mythinstall/PKGBUILD @@ -1,7 +1,7 @@ # Maintainer: Jams pkgname=mythinstall pkgver=3 -pkgrel=29 +pkgrel=30 pkgdesc="LinHES installer/systemconfig GUI." arch=('i686' 'x86_64') depends=('mythtv>=0.25') -- cgit v0.12