From d17ba37c01c5014a82c318b8dfeb09bd27cf209b Mon Sep 17 00:00:00 2001 From: Alan Bruce Date: Sun, 22 Aug 2010 19:28:24 -0700 Subject: [PATCH] Easy Chroot 0.3.1 --- .../easy-chroot/debian/changelog | 15 ++ .../.py2deb_build_folder/easy-chroot/debian/compat | 1 + .../easy-chroot/debian/control | 57 ++++++ .../easy-chroot/debian/copyright | 35 ++++ .../.py2deb_build_folder/easy-chroot/debian/dirs | 3 + .../.py2deb_build_folder/easy-chroot/debian/optify | 1 + .../easy-chroot/debian/postinst | 15 ++ .../.py2deb_build_folder/easy-chroot/debian/postrm | 9 + .../.py2deb_build_folder/easy-chroot/debian/rules | 110 +++++++++++ .../easy-chroot/src/etc/sudoers.d/chroot.sudoers | 2 + .../easy-chroot/src/sbin/closechroot | 87 +++++++++ .../easy-chroot/src/sbin/cpu-ondemand | 6 + .../easy-chroot/src/sbin/cpu-perform | 8 + .../easy-chroot/src/sbin/qchroot | 163 ++++++++++++++++ .../easy-chroot/src/sbin/qmount | 205 ++++++++++++++++++++ .../easy-chroot/src/sbin/qumount | 70 +++++++ .../easy-chroot/src/sbin/synchroot | 42 ++++ .../easy-chroot/src/usr/bin/gxmessage | Bin 0 -> 20956 bytes .../easy-chroot/src/usr/bin/hostwin | Bin 0 -> 15774 bytes .../easy-chroot/src/usr/bin/quserchroot | 38 ++++ fremantle/easy-chroot/build_easychroot.py | 2 +- fremantle/easy-chroot/control/changelog | 3 +- fremantle/easy-chroot/src/sbin/closechroot | 7 + fremantle/easy-chroot/src/sbin/qchroot | 17 +- fremantle/easy-chroot/src/sbin/qmount | 9 +- fremantle/easy-chroot/src/sbin/qumount | 6 + .../archive/MurrinaNightOrange/gtk-2.0/gtkrc | 204 +++++++++++++++++++ fremantle/easy-deb-chroot/build_easydebchroot.py | 4 +- fremantle/easy-deb-chroot/control/changelog | 9 +- .../easy-deb-chroot/src/home/user/.xbindkeysrc | 32 +-- fremantle/easy-deb-chroot/src/sbin/debsu | 64 ++++++ fremantle/easy-deb-chroot/src/usr/bin/debbie-sue | 45 +++++ fremantle/easy-deb-chroot/src/usr/bin/debian-lxde | 28 +++ fremantle/easy-deb-chroot/src/usr/bin/debwm | 11 ++ fremantle/easy-deb-chroot/src/usr/bin/fixkbdfocus | 26 +++ .../src/usr/share/applications/hildon/lxde.desktop | 2 +- .../share/applications/hildon/lxdefocus.desktop | 2 +- 37 files changed, 1315 insertions(+), 23 deletions(-) create mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/changelog create mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/compat create mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/control create mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/copyright create mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/dirs create mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/optify create mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postinst create mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postrm create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/rules create mode 100644 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/etc/sudoers.d/chroot.sudoers create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-ondemand create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-perform create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qchroot create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qmount create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qumount create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/synchroot create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/gxmessage create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/hostwin create mode 100755 fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/quserchroot create mode 100755 fremantle/easy-deb-chroot/archive/MurrinaNightOrange/gtk-2.0/gtkrc create mode 100755 fremantle/easy-deb-chroot/src/sbin/debsu create mode 100755 fremantle/easy-deb-chroot/src/usr/bin/debbie-sue create mode 100755 fremantle/easy-deb-chroot/src/usr/bin/debian-lxde create mode 100755 fremantle/easy-deb-chroot/src/usr/bin/debwm create mode 100755 fremantle/easy-deb-chroot/src/usr/bin/fixkbdfocus diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/changelog b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/changelog new file mode 100644 index 0000000..b7ab80a --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/changelog @@ -0,0 +1,15 @@ +easy-chroot (0.3.1-1fremantle1) stable; urgency=low + + 0.2.1: First version for Fremantle, fifth package. Trying a new version of py2deb. + 0.2.2: Added thp's patches, some other fixes. + 0.2.3: First version in Extras! + 0.2.4: Fixed some small bugs and added a bugtracker field. + 0.2.5: Unmount /dev/shm in the closechroot script + 0.2.6: Include Debian's fuser as a workaround for broken busybox + 0.2.7: Remove the closechroot .desktop file, move to Easy Debian + 0.2.8: Support dmsetup + kernel-module-dmloop packages, if installed + 0.2.9: Use the 'cd /proc' workaround for broken fuser bug, add 'nodiratime,nobh' to mount options + 0.3.0: Require dmlosetup to be present before attempting dm-loop. + 0.3.1: Strip trailing slash on mountpoint in all scripts, fixed problems in multi-loop handling. + + -- Alan Bruce (qole) Sun, 22 Aug 2010 15:11:03 +0000 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/compat b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/compat @@ -0,0 +1 @@ +5 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/control b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/control new file mode 100644 index 0000000..6bbdb6b --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/control @@ -0,0 +1,57 @@ +Source: easy-chroot +Section: user/system +Priority: extra +Maintainer: Alan Bruce (qole) +Build-Depends: debhelper (>= 5) +Standards-Version: 3.7.2 + +Package: easy-chroot +Architecture: armel +Depends: libblkid1 +XSBC-Maemo-Display-Name: Easy Chroot +Description: Scripts to mount and chroot into images/partitions, Fremantle version. + --- + This package provides the infrastructure for Easy Debian, + but it can be used for other purposes, like mounting a CD-ROM image + or setting up an on-device SDK for app development. + Install dmsetup and kernel-module-dmloop to use the (possibly faster) dm-loop. + --- + (If that didn't make any sense to you, don't install this) +XSBC-Bugtracker: https://garage.maemo.org/tracker/?atid=3577&group_id=953&func=browse +XB-Maemo-Icon-26: + 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 \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/copyright b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/copyright new file mode 100644 index 0000000..34b6076 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/copyright @@ -0,0 +1,35 @@ +This package was py2debianized(0.5.3) by Alan Bruce (qole) on +Sun, 22 Aug 2010 15:11:03 +0000. + +It was downloaded from + +Upstream Author: Alan Bruce (qole) + +Copyright: 2010 by Alan Bruce (qole) + +License: + + + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + + +The Debian packaging is (C) 2010, Alan Bruce (qole) and +is licensed under the GPL, see above. + +# Please also look if there are files or directories which have a +# different copyright/license attached and list them here. diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/dirs b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/dirs new file mode 100644 index 0000000..3fa2141 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/dirs @@ -0,0 +1,3 @@ +etc/sudoers.d/ +sbin/ +usr/bin/ \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/optify b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/optify new file mode 100644 index 0000000..c86c3f3 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/optify @@ -0,0 +1 @@ +none \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postinst b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postinst new file mode 100644 index 0000000..ed8534e --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postinst @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +if [ ! -e "/sbin/ezchroot" ] ; then + ln -s /sbin/qchroot /sbin/ezchroot +fi + +# yet another kludge; detect an upgrade (forced OFF) +UPGRD='no' + +# this takes a while; that's why it's at the end... +update-sudoers + +exit 0 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postrm b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postrm new file mode 100644 index 0000000..21b6405 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/postrm @@ -0,0 +1,9 @@ +#!/bin/sh + +if [ ! -e "/sbin/ezchroot" ] ; then + rm /sbin/ezchroot +fi + +update-sudoers + +exit 0 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/rules b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/rules new file mode 100755 index 0000000..6f269cd --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/debian/rules @@ -0,0 +1,110 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + + touch configure-stamp + +build: build-stamp + +build-stamp: configure-stamp + dh_testdir + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # ====================================================== + #$(MAKE) DESTDIR="$(CURDIR)/debian/easy-chroot" install + mkdir -p "$(CURDIR)/debian/easy-chroot" + +# mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" + cp -a "src/sbin/closechroot" "$(CURDIR)/debian/easy-chroot/sbin/closechroot" + mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" + cp -a "src/sbin/cpu-ondemand" "$(CURDIR)/debian/easy-chroot/sbin/cpu-ondemand" + mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" + cp -a "src/sbin/cpu-perform" "$(CURDIR)/debian/easy-chroot/sbin/cpu-perform" + mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" + cp -a "src/sbin/qchroot" "$(CURDIR)/debian/easy-chroot/sbin/qchroot" + mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" + cp -a "src/sbin/qmount" "$(CURDIR)/debian/easy-chroot/sbin/qmount" + mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" + cp -a "src/sbin/qumount" "$(CURDIR)/debian/easy-chroot/sbin/qumount" + mkdir -p "$(CURDIR)/debian/easy-chroot/sbin/" + cp -a "src/sbin/synchroot" "$(CURDIR)/debian/easy-chroot/sbin/synchroot" + mkdir -p "$(CURDIR)/debian/easy-chroot/usr/bin/" + cp -a "src/usr/bin/gxmessage" "$(CURDIR)/debian/easy-chroot/usr/bin/gxmessage" + mkdir -p "$(CURDIR)/debian/easy-chroot/usr/bin/" + cp -a "src/usr/bin/hostwin" "$(CURDIR)/debian/easy-chroot/usr/bin/hostwin" + mkdir -p "$(CURDIR)/debian/easy-chroot/usr/bin/" + cp -a "src/usr/bin/quserchroot" "$(CURDIR)/debian/easy-chroot/usr/bin/quserchroot" + mkdir -p "$(CURDIR)/debian/easy-chroot/etc/sudoers.d/" + cp -a "src/etc/sudoers.d/chroot.sudoers" "$(CURDIR)/debian/easy-chroot/etc/sudoers.d/chroot.sudoers" + + # ====================================================== + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs debian/changelog + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_makeshlibs + dh_installdeb +# dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/etc/sudoers.d/chroot.sudoers b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/etc/sudoers.d/chroot.sudoers new file mode 100644 index 0000000..defeda1 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/etc/sudoers.d/chroot.sudoers @@ -0,0 +1,2 @@ +Defaults env_keep+=GTK_MODULES +user ALL = NOPASSWD: ALL \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot new file mode 100755 index 0000000..cdb2c89 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/closechroot @@ -0,0 +1,87 @@ +#!/bin/sh +#Close a mounted chroot; this means killing all the chroot apps and unmounting the bound directories. + +# By Alan M Bruce (qole) +# +# GPL licensed; keep code free! + +if [ "`whoami`" != "root" ] ; then + echo "please run me as root!" + exit 9 +fi + +#Try to get the chroot location from the first parameter +CHROOT=$1 + +#Try to get the chroot location from the config file... +if [ "x$CHROOT" = x ] ; then + #Pull in the config, if possible... + [ -f /home/user/.chroot ] && . /home/user/.chroot + #Still not set? Set to default + [ "x$CHROOT" != x ] || CHROOT=/debian +fi + +# Strip off a trailing slash +LASTCHAR=`echo $CHROOT | cut -c ${#CHROOT}` +if [ "$LASTCHAR" = "/" ] ; then + echo "..stripping trailing slash..." >/dev/stderr + CHROOT=`echo $CHROOT | cut -c 0-$((${#CHROOT}-1))` +fi + +#Abort if chroot not mounted. +if [ ! -f "$CHROOT/var/lock/qmount-complete" ] ; then + echo "Nothing to do; chroot not mounted!" + exit 1 +fi + +echo "Closing the chroot..." + +# Fremantle's fuser command is broken. +# We can either use Debian's one instead (as gfuser), +# or we can use the workaround: "cd /proc" first. + +echo "...closing chroot apps..." + +TEST1=`mount | grep " $CHROOT "` +if [ "x$TEST1" != "x" ] ; then + if [ -f "/bin/gfuser" ] ; then + gfuser -m "$CHROOT" -k + else + cd /proc + fuser -m "$CHROOT" -k + fi +else + if [ -f "/bin/gfuser" ] ; then + gfuser "$CHROOT" -k + else + cd /proc + fuser "$CHROOT" -k + fi +fi + +echo "..Unmounting bound dirs..." + +#Any external mounts + +umount -fl $CHROOT/home/user/MyDocs +umount -fl $CHROOT/dev/pts +umount -fl $CHROOT/dev/shm + +MNTD=`cat /proc/mounts | grep " $CHROOT/" | awk '{print $2}'` +for MDRV in $MNTD ; do + echo "unmounting $MDRV" + umount -l "$MDRV" +done + +if [ -f "$CHROOT/var/lock/qmount-complete" ] ; then + rm "$CHROOT/var/lock/qmount-complete" +fi + +if [ -f "$CHROOT/var/lock/chroot-complete" ] ; then + rm "$CHROOT/var/lock/chroot-complete" +fi + +/sbin/qumount $CHROOT + +echo "chroot closed." +exit 0 \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-ondemand b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-ondemand new file mode 100755 index 0000000..3c394fa --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-ondemand @@ -0,0 +1,6 @@ +#!/bin/sh + +# set cpu governor to on-demand mode +# (based on lcuk's liqbase script) + +echo ondemand >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-perform b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-perform new file mode 100755 index 0000000..a3ad3b3 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/cpu-perform @@ -0,0 +1,8 @@ +#!/bin/sh + +# set cpu governor to on-demand mode +# (based on lcuk's liqbase script) + +echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor +sleep 1 +echo '' >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qchroot b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qchroot new file mode 100755 index 0000000..8955351 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qchroot @@ -0,0 +1,163 @@ +#!/bin/sh +# Sets up (if necessary) and chroots into a different environment. +# Expects root privileges, does not drop them. + +# By Alan M Bruce (qole) with help from Benson Mitchell and Thomas Perl +# +# GPL licensed; keep code free! + +# This script should have a wrapper to set up extra variables, +# OR, it can be run as a command: +# ezchroot + +if [ "`whoami`" != "root" ] ; then + echo "please run me as root!" + exit 9 +fi + +IMGFILE=$1 +shift 1 + +CHROOT=$1 +shift 1 + +# echo ezchroot $IMGFILE $CHROOT $* + +# Strip off a trailing slash +LASTCHAR=`echo $CHROOT | cut -c ${#CHROOT}` +if [ "$LASTCHAR" = "/" ] ; then + echo "..stripping trailing slash..." >/dev/stderr + CHROOT=`echo $CHROOT | cut -c 0-$((${#CHROOT}-1))` +fi + +qmount $IMGFILE $CHROOT +MOUNTSUCCESS=$? + +if [ "$MOUNTSUCCESS" != "1" ] && [ "$MOUNTSUCCESS" != "0" ] ; then + echo Cancelling chroot... + exit $MOUNTSUCCESS +fi + +if [ "$MOUNTSUCCESS" = "0" ] ; then + #Make the tablet's devices available to the chroot + echo . >/dev/stderr + mount -o bind /dev "$CHROOT/dev" + mount -o bind /proc "$CHROOT/proc" + + #Gentoo wiki says this will make X work + echo .. >/dev/stderr + mount -t devpts none "$CHROOT/dev/pts" + mount -o bind /tmp "$CHROOT/tmp" + + #Open e-mail attachments, etc + mount -o bind /var/tmp "$CHROOT/var/tmp" + + #ArchLinux suggestions + mount -o bind /dev/shm "$CHROOT/dev/shm" + mount -o bind /sys "$CHROOT/sys" + + #Any external devices + echo ... >/dev/stderr + MNTD=`cat /proc/mounts | grep ' /media/' | awk '{print $2}'` + + for MDRV in $MNTD ; do + if [ ! -d "$CHROOT$MDRV" ] ; then + mkdir -p "$CHROOT$MDRV" + fi + mount -o bind "$MDRV" "$CHROOT$MDRV" + done + + #Mount the user's home dir + echo .... >/dev/stderr + #mount -o bind /home/user "$CHROOT/home/user" + + # Do it the Fremantle way. + mount /dev/mmcblk0p2 "$CHROOT/home" + mount /dev/mmcblk0p1 "$CHROOT/home/user/MyDocs" + + #Make DBus work + mount -o bind /var/run/dbus "$CHROOT/var/run/dbus" + mount -o bind /var/lib/dbus "$CHROOT/var/lib/dbus" + + #Make pulseaudio work + mount -o bind /var/run/pulse "$CHROOT/var/run/pulse" + + #Speed hacks: lower the priority of processes + #renice 0 `pidof mmcqd` + #renice 20 `pidof trackerd` + + # Sync the chroot if requested... + if [ -f /home/user/.synchroot ] ; then + /sbin/synchroot $CHROOT + rm /home/user/.synchroot + fi + + # Place any commands you wish to run the first time you chroot + # into the /var/run/onfirstchroot-ext.rc file (inside your rootfs) + + if [ -f "$CHROOT/var/run/onfirstchroot-ext.rc" ] ; then + . "$CHROOT/var/run/onfirstchroot-ext.rc" + fi + + # Place any commands you wish to run from inside the chroot + # the first time you chroot into the /var/run/onfirstchroot.rc + # file (inside your rootfs) + + if [ -f "$CHROOT/var/run/onfirstchroot.rc" ] ; then + chroot $CHROOT "/var/run/onfirstchroot.rc" + fi + +fi + +# Place any commands you wish to run every time you chroot +# into the /var/run/onchroot-ext.rc file (inside your rootfs) + +if [ -f "$CHROOT/var/run/onchroot-ext.rc" ] ; then + . "$CHROOT/var/run/onchroot-ext.rc" +fi + +# Place any commands you wish to run from inside the chroot +# every time you chroot into the /var/run/onchroot.rc +# file (inside your rootfs) + +if [ -f "$CHROOT/var/run/onchroot.rc" ] ; then + chroot $CHROOT "/var/run/onchroot.rc" +fi + +#All set up. Set flag for next time... + +if [ ! -d "$CHROOT/var/lock" ] ; then + mkdir -p "$CHROOT/var/lock" +fi + +trap "rm -f $CHROOT/var/lock/chroot-complete ; echo -ne '\033]0;osso_xterm\007' ; exit" INT TERM EXIT +echo $IMGFILE $@ > "$CHROOT/var/lock/chroot-complete" + +#Custom prompt and xterm title. Reduces confusion. +CHRLABEL=`blkid -s LABEL $IMGFILE | cut -d' ' -f2 | cut -d'=' -f2 | sed 's/"//g'` + +#If the file is mounted on loop, use that label. +if [ "x$CHRLABEL" = "x" ] ; then + + # first find the loop + LOOPNO=`mount | grep loop | grep $CHROOT | awk '{print $1}'` + + if [ "x$LOOPNO" != "x" ] ; then + CHRLABEL=`blkid -s LABEL $LOOPNO | cut -d' ' -f2 | cut -d'=' -f2 | sed 's/"//g'` + fi +fi + +if [ "x$CHRLABEL" = "x" ] ; then + CHRLABEL=chroot +fi + +echo -ne "\033]0;$CHRLABEL\007" >/dev/stderr +export PS1="[\u@$CHRLABEL: \w]" + +#Actually chroot +echo "Everything set up, running chroot..." >/dev/stderr +chroot $CHROOT "$@" + +#All done, reset. +exit 0 + diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qmount b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qmount new file mode 100755 index 0000000..12c808f --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qmount @@ -0,0 +1,205 @@ +#!/bin/sh +# Sets up (if necessary) and chroots into a different environment. +# Expects root privileges, does not drop them. + +# By Alan M Bruce (qole) with help from Benson Mitchell and Thomas Perl +# +# GPL licensed; keep code free! + +# Hacked roughly to work with Fremantle. Help always appreciated. I can be found on talk.maemo.org. + +# This script should have a wrapper to set up extra variables, +# OR, it can be run as a command: +# qmount + +if [ "`whoami`" != "root" ] ; then + echo "please run me as root!" + exit 9 +fi + +IMGFILE=$1 +MNTPT=$2 + +# echo qmount $IMGFILE $MNTPT + +#Ensure that we have an image or partition to mount + +if [ ! -f "$IMGFILE" ] && [ ! -b "$IMGFILE" ] ; then + MSG1=`printf "ERROR!\n\nThe image specified ($IMGFILE) does not exist or is neither\na regular nor a block special file.\n\nFirst parameter must be an image file or partition"` + if [ ! -f "/usr/bin/gxmessage" ] ; then + echo $MSG1 >/dev/stderr + else + gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" + fi + exit 9 +fi + +#Ensure that we have a chroot directory to mount the image or partition on + +if [ "x$MNTPT" = "x" ] || [ "x`echo $MNTPT | grep '/'`" = "x" ] ; then + MSG1=`printf "ERROR!\n\nNo chroot directory specified!\n\nSecond parameter must be chroot dir (eg. /debian)"` + if [ ! -f "/usr/bin/gxmessage" ] ; then + echo $MSG1 >/dev/stderr + else + gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" + fi + exit 9 +fi + +# Strip off a trailing slash +LASTCHAR=`echo $MNTPT | cut -c ${#MNTPT}` +if [ "$LASTCHAR" = "/" ] ; then + echo "..stripping trailing slash..." >/dev/stderr + MNTPT=`echo $MNTPT | cut -c 0-$((${#MNTPT}-1))` +fi + +#Check to see if already mounted +if [ -f "$MNTPT/var/lock/qmount-complete" ] ; then + echo "$MNTPT has a qmount already!" >/dev/stderr + MTDIMGFILE=`cat $MNTPT/var/lock/qmount-complete` + if [ "$IMGFILE" != "$MTDIMGFILE" ] ; then + echo $MTDIMGFILE already mounted here! >/dev/stderr + MSG1=`printf "Mount problem!\n\n$MTDIMGFILE already mounted on $MNTPT"` + if [ ! -f "/usr/bin/gxmessage" ] ; then + echo $MSG1 >/dev/stderr + else + gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" + fi + exit 9 + # Instead of failing, we could unmount instead... + # echo Unmounting... + # closechroot $MNTPT + else + echo $MTDIMGFILE already mounted on $MNTPT... >/dev/stderr + exit 1 + fi +fi + +if [ ! -f "$MNTPT/var/lock/qmount-complete" ] ; then + echo "Mounting..." + if [ "$IMGFILE" != "none" ] ; then + + if [ -f "$IMGFILE" ] ; then + LOOP=loop, + echo "using image file: $IMGFILE" >/dev/stderr + if [ "x$IMGFS" = x ] ; then + IMGFS=`echo $IMGFILE | awk -F '.' '{print $NF}'` + echo "fs type is $IMGFS" >/dev/stderr + fi + else + LOOP= + echo "using device: $IMGFILE" >/dev/stderr + PARTINFO="`blkid -s TYPE $IMGFILE`" + if [ "x$IMGFS" = x ] ; then + IMGFS=`echo $PARTINFO | awk '{print $NF}' | awk -F '=' '{print $NF}' | sed s/\"//g` + fi + fi + + # missing in Fremantle... + # modprobe mbcache + + if [ "$IMGFS" != "ext3" ] && [ "$IMGFS" != "ext2" ] ; then + echo "Don't know $IMGFS: Using ext2 file system" >/dev/stderr + IMGFS=ext2 + fi + + echo "Using $IMGFS file system" + if [ "$IMGFS" = ext3 ] ; then + #insmod "$MODULEPATH/jbd.ko" 2>/dev/null + modprobe jbd + fi + + #insmod "$MODULEPATH/$IMGFS.ko" 2>/dev/null + modprobe $IMGFS + + if [ -d "/lib/modules/`uname -r`" ] ; then + MODULEPATH="/lib/modules/`uname -r`" + else + MODULEPATH=/lib/modules/2.6.28-omap1 + fi + + if [ "$LOOP" = "loop," ] ; then + + # Check for dm-loop kernel module and dmlosetup command. + # If found, then use dm-loop instead of regular loop. + + if [ -f "$MODULEPATH/dm-loop.ko" ] && [ -f "/sbin/dmlosetup" ]; then + + # use dm-loop + + echo "mounting $IMGFILE on the turbo-loop ;)" + #insmod $MODULEPATH/dm-mod.ko 2>/dev/null + modprobe dm-mod + #insmod $MODULEPATH/dm-loop.ko 2>/dev/null + modprobe dm-loop + + NEXTLOOP=`ls -l /dev/dm-* 2>/dev/null | tail -1 | awk '{print $NF}' | awk -F '-' '{print $NF+1}'` + if [ "x$NEXTLOOP" = "x" ] ; then + NEXTLOOP=0 + fi + + DMLOMSG=`dmlosetup loop$NEXTLOOP "$IMGFILE" 2>&1` + MNTMSG=`mount -t "$IMGFS" /dev/dm-$NEXTLOOP "$MNTPT" -o noatime,nobh,nodiratime 2>&1` + + else + + # use "regular" loop + + echo "mounting $IMGFILE on loop" >/dev/stderr + NEXTLOOP=`mount | grep loop | tail -1 | awk '{print $1}' | awk -F "/" '{print $3}' | cut -c 5-6 | awk '{print $0+1}'` + if [ "x$NEXTLOOP" = "x" ] ; then + NEXTLOOP=0 + fi + + DMLOMSG="" + MNTMSG=`mount -t "$IMGFS" "$IMGFILE" "$MNTPT" -o loop,noatime,nobh,nodiratime 2>&1` + + fi + + if [ "$?" != 0 ] ; then + MSG1=`printf "Mount failure!\n\n$IMGFILE failed to mount on loop$NEXTLOOP\n\n$DMLOMSG\n$MNTMSG"` + if [ ! -f "/usr/bin/gxmessage" ] ; then + echo $MSG1 >/dev/stderr + else + gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" + fi + exit 2 + fi + echo ...$IMGFILE mounted on loop$NEXTLOOP >/dev/stderr + else + echo "mounting device: $IMGFILE" >/dev/stderr + if ! mount -t "$IMGFS" "$IMGFILE" "$MNTPT" -o ${LOOP}noatime,nobh,nodiratime ; then + MSG1=`printf "Mount failure!\n\n$IMGFILE failed to mount on $MNTPT"` + if [ ! -f "/usr/bin/gxmessage" ] ; then + echo $MSG1 >/dev/stderr + else + gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "EZ-CHROOT ERROR" "$MSG1" + fi + exit 3 + fi + + fi + + else + echo "Not mounting any filesystem, chroot is $MNTPT" >/dev/stderr + fi + +#All set up. Set flag for next time... + + if [ ! -d "$MNTPT/var/lock" ] ; then + mkdir -p "$MNTPT/var/lock" + fi + + # Place any commands you wish to run the first time you mount + # into the $MNTPT/var/run/onmount.rc file + + if [ -f "$MNTPT/var/run/onmount.rc" ] ; then + . "$MNTPT/var/run/onmount.rc" + fi + + echo $IMGFILE > "$MNTPT/var/lock/qmount-complete" + exit 0 + +fi + +exit 1 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qumount b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qumount new file mode 100755 index 0000000..db98974 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/qumount @@ -0,0 +1,70 @@ +#!/bin/sh +#Unmount a mounted MNTPT. +# By Alan M Bruce (qole) +# +# GPL licensed; keep code free! + +if [ "`whoami`" != "root" ] ; then + echo "please run me as root!" + exit 9 +fi + +#Try to get the MNTPT location from the first parameter +MNTPT=$1 + +#Try to get the MNTPT location from the config file... +if [ "x$MNTPT" = x ] ; then + #Pull in the config, if possible... + [ -f /home/user/.chroot ] && . /home/user/.chroot + MNTPT=$CHROOT + #Still not set? FAIL + if [ "x$MNTPT" != x ] ; then + echo "No mountpoint to unmount!" >/dev/stderr + exit 8 + fi +fi + +# Strip off a trailing slash +LASTCHAR=`echo $MNTPT | cut -c ${#MNTPT}` +if [ "$LASTCHAR" = "/" ] ; then + echo "..stripping trailing slash..." >/dev/stderr + MNTPT=`echo $MNTPT | cut -c 0-$((${#MNTPT}-1))` +fi + +TEST1=`mount | grep " $MNTPT "` + +if [ "x$TEST1" != "x" ] ; then + echo "..Unmounting $MNTPT..." >/dev/stderr + umount -ld "$MNTPT" + + TEST2=`mount | grep " $MNTPT "` + + if [ "x$TEST2" != "x" ] ; then + echo "...$MNTPT didn't unmount!" >/dev/stderr + exit 8 + fi +else + echo "$MNTPT is not mounted; Check for trailing slashes." >/dev/stderr +fi + +if [ ! "x`grep device-mapper /proc/misc`" = "x" ] ; then + LOOPDEV=`echo $TEST1 | cut -f1 -d' '` + while [ "x`echo $LOOPDEV | grep dm-`" != "x" ] ; do + LOOPNO=`echo $LOOPDEV | awk -F '-' '{print $NF}'` + echo "..Unmounting turbo loop ($LOOPNO)..." >/dev/stderr + dmlosetup -d /dev/loop$LOOPNO + if [ "$?" != 0 ] || [ "x`dmsetup status | grep loop$LOOPNO`" != "x" ] ; then + echo "Waiting for apps to terminate, will try again." >/dev/stderr + sleep 5 + dmlosetup -d /dev/loop$LOOPNO + if [ "$?" != 0 ] ; then + echo "Can't unmount turbo-loop! Try dmlosetup -d /dev/loop$LOOPNO manually." >/dev/stderr + exit 9 + fi + fi + LOOPDEV=`mount | grep " $MNTPT " | cut -f1 -d' '` + done +fi + +echo "successful unmount..." >/dev/stderr +exit 0 diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/synchroot b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/synchroot new file mode 100755 index 0000000..c8dbe71 --- /dev/null +++ b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/sbin/synchroot @@ -0,0 +1,42 @@ +#!/bin/sh +#Synch a mounted chroot; this means copying some important files to the chroot. + +#Try to get the chroot location from the config file... +if [ "x$CHROOT" = x ] ; then + #Pull in the config, if possible... + [ -f /home/user/.chroot ] && . /home/user/.chroot + #Still not set? Set to default + [ "x$CHROOT" != x ] || CHROOT=/debian +fi + +#Abort if chroot not mounted. +if [ ! -d "$CHROOT/etc/" ] ; then + echo "cannot sync; chroot not mounted!" + exit 99 +fi + +echo "synching the chroot..." + +#Just a somewhat-readable uniquifier so backups don't overwrite other backups. +BOB=`date | awk '{print $1$2$3}'` + +#Make the Internet work. + +mv "$CHROOT/etc/resolv.conf" "$CHROOT/etc/resolv.conf.$BOB" +cp /etc/resolv.conf "$CHROOT/etc/resolv.conf" +mv "$CHROOT/etc/hosts" "$CHROOT/etc/hosts.$BOB" +cp /etc/hosts "$CHROOT/etc/hosts" + +#Make permissions work. +mv "$CHROOT/etc/group" "$CHROOT/etc/group.$BOB" +cp /etc/group "$CHROOT/etc/group" +mv "$CHROOT/etc/passwd" "$CHROOT/etc/passwd.$BOB" +cp /etc/passwd "$CHROOT/etc/passwd" + +#Set the correct time. +mv "$CHROOT/etc/localtime" "$CHROOT/etc/localtime.$BOB" +cp -a /etc/localtime "$CHROOT/etc/localtime" + +#Help make N810 F-keys work +mv "$CHROOT/usr/share/X11/xkb" "$CHROOT/usr/share/X11/xkb.$BOB" +cp -r /usr/share/X11/xkb "$CHROOT/usr/share/X11" \ No newline at end of file diff --git a/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/gxmessage b/fremantle/easy-chroot/.py2deb_build_folder/easy-chroot/src/usr/bin/gxmessage new file mode 100755 index 0000000000000000000000000000000000000000..ddcd9c44ed65db85b13a99e5449685ecc64ab7ef GIT binary patch literal 20956 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/dev/stderr + CHROOT=`echo $CHROOT | cut -c 0-$((${#CHROOT}-1))` +fi + #Abort if chroot not mounted. if [ ! -f "$CHROOT/var/lock/qmount-complete" ] ; then echo "Nothing to do; chroot not mounted!" diff --git a/fremantle/easy-chroot/src/sbin/qchroot b/fremantle/easy-chroot/src/sbin/qchroot index 799ae5b..8955351 100755 --- a/fremantle/easy-chroot/src/sbin/qchroot +++ b/fremantle/easy-chroot/src/sbin/qchroot @@ -23,6 +23,13 @@ shift 1 # echo ezchroot $IMGFILE $CHROOT $* +# Strip off a trailing slash +LASTCHAR=`echo $CHROOT | cut -c ${#CHROOT}` +if [ "$LASTCHAR" = "/" ] ; then + echo "..stripping trailing slash..." >/dev/stderr + CHROOT=`echo $CHROOT | cut -c 0-$((${#CHROOT}-1))` +fi + qmount $IMGFILE $CHROOT MOUNTSUCCESS=$? @@ -126,14 +133,18 @@ fi trap "rm -f $CHROOT/var/lock/chroot-complete ; echo -ne '\033]0;osso_xterm\007' ; exit" INT TERM EXIT echo $IMGFILE $@ > "$CHROOT/var/lock/chroot-complete" -#If the file is mounted on loop, use that label. - #Custom prompt and xterm title. Reduces confusion. CHRLABEL=`blkid -s LABEL $IMGFILE | cut -d' ' -f2 | cut -d'=' -f2 | sed 's/"//g'` #If the file is mounted on loop, use that label. if [ "x$CHRLABEL" = "x" ] ; then - CHRLABEL=`blkid -s LABEL /dev/loop0 | cut -d' ' -f2 | cut -d'=' -f2 | sed 's/"//g'` + + # first find the loop + LOOPNO=`mount | grep loop | grep $CHROOT | awk '{print $1}'` + + if [ "x$LOOPNO" != "x" ] ; then + CHRLABEL=`blkid -s LABEL $LOOPNO | cut -d' ' -f2 | cut -d'=' -f2 | sed 's/"//g'` + fi fi if [ "x$CHRLABEL" = "x" ] ; then diff --git a/fremantle/easy-chroot/src/sbin/qmount b/fremantle/easy-chroot/src/sbin/qmount index f44d3db..12c808f 100755 --- a/fremantle/easy-chroot/src/sbin/qmount +++ b/fremantle/easy-chroot/src/sbin/qmount @@ -46,6 +46,13 @@ if [ "x$MNTPT" = "x" ] || [ "x`echo $MNTPT | grep '/'`" = "x" ] ; then exit 9 fi +# Strip off a trailing slash +LASTCHAR=`echo $MNTPT | cut -c ${#MNTPT}` +if [ "$LASTCHAR" = "/" ] ; then + echo "..stripping trailing slash..." >/dev/stderr + MNTPT=`echo $MNTPT | cut -c 0-$((${#MNTPT}-1))` +fi + #Check to see if already mounted if [ -f "$MNTPT/var/lock/qmount-complete" ] ; then echo "$MNTPT has a qmount already!" >/dev/stderr @@ -139,7 +146,7 @@ if [ ! -f "$MNTPT/var/lock/qmount-complete" ] ; then # use "regular" loop echo "mounting $IMGFILE on loop" >/dev/stderr - NEXTLOOP="" + NEXTLOOP=`mount | grep loop | tail -1 | awk '{print $1}' | awk -F "/" '{print $3}' | cut -c 5-6 | awk '{print $0+1}'` if [ "x$NEXTLOOP" = "x" ] ; then NEXTLOOP=0 fi diff --git a/fremantle/easy-chroot/src/sbin/qumount b/fremantle/easy-chroot/src/sbin/qumount index 03701a0..db98974 100755 --- a/fremantle/easy-chroot/src/sbin/qumount +++ b/fremantle/easy-chroot/src/sbin/qumount @@ -24,6 +24,12 @@ if [ "x$MNTPT" = x ] ; then fi fi +# Strip off a trailing slash +LASTCHAR=`echo $MNTPT | cut -c ${#MNTPT}` +if [ "$LASTCHAR" = "/" ] ; then + echo "..stripping trailing slash..." >/dev/stderr + MNTPT=`echo $MNTPT | cut -c 0-$((${#MNTPT}-1))` +fi TEST1=`mount | grep " $MNTPT "` diff --git a/fremantle/easy-deb-chroot/archive/MurrinaNightOrange/gtk-2.0/gtkrc b/fremantle/easy-deb-chroot/archive/MurrinaNightOrange/gtk-2.0/gtkrc new file mode 100755 index 0000000..11920cb --- /dev/null +++ b/fremantle/easy-deb-chroot/archive/MurrinaNightOrange/gtk-2.0/gtkrc @@ -0,0 +1,204 @@ +# theme by BaSS www.josealberto.org +# based in Murrine night +style "theme-default" +{ + GtkButton ::default_border = { 0, 0, 0, 0 } + GtkRange ::trough_border = 0 + GtkPaned ::handle_size = 6 + GtkRange ::slider_width = 32 + GtkRange ::stepper_size = 38 + + GtkScrollbar ::min_slider_length = 30 + GtkCheckButton ::indicator_size = 14 + GtkMenuBar ::internal-padding = 0 + GtkTreeView ::expander_size = 14 + GtkExpander ::expander_size = 16 + GtkScale ::slider-length = 24 + # cursor + GtkWidget ::cursor_color = "#FF993F" + + xthickness = 1 + ythickness = 1 + + # texto general + fg[NORMAL] = "#aeaeae" + # texto y detalles mouseover + fg[PRELIGHT] = "#FF993F" + # texto activo + fg[ACTIVE] = "#cccccc" + fg[SELECTED] = "#cccccc" + # texto inactivo + fg[INSENSITIVE] = "#5c5c5c" + + # fondo general + bg[NORMAL] = "#3c3c3c" + # fondo elementos seleccionado + bg[PRELIGHT] = "#292929" + # fondo seleccion + bg[ACTIVE] = "#2c2c2c" + # elementos seleccionados (chekcboxes...) + bg[SELECTED] = "#272727" + # fondo elementos inactivos + bg[INSENSITIVE] = "#353535" + + # fondo general + base[NORMAL] = "#191919" + base[PRELIGHT] = "#272727" + # fondo activo + base[ACTIVE] = "#333333" + base[SELECTED] = "#404040" + base[INSENSITIVE] = "#333333" + + text[NORMAL] = "#aeaeae" + text[PRELIGHT] = "#aeaeae" + text[ACTIVE] = "#aeaeae" + text[SELECTED] = "#aeaeae" + text[INSENSITIVE] = "#000000" + + GnomeHRef::link_color ="#424449" + GtkIMHtmlr::hyperlink-color ="#424449" + + NautilusIconContainer::normal_alpha = 0 + NautilusIconContainer::frame_text = 1 + #NautilusIconContainer::dark_info_color = "#827B69" + #NautilusIconContainer::light_info_color = "#827B69" + #NautilusIconContainer::highlight_alpha = 70 + + engine "murrine" + { + scrollbarstyle = 4 # Enable or disable circles, stripes, handles + listviewstyle = 1 # 0 = nothing, 1 = dotted + scrollbar_color = "#252525" + contrast = 1.0 + glazestyle = 3 # 0 = flat hilight, 1 = curved hilight, 2 = concave style, 3 = top curved hilight, 4 = beryl style + menubarstyle = 1 # 0 = flat, 1 = glassy, 2 = gradient, 3 = striped + menubaritemstyle = 0 # 0 = menuitem look, 1 = button look + menuitemstyle = 2 # 0 = flat, 1 = glassy, 2 = striped + listviewheaderstyle = 2 # 0 = flat, 1 = glassy, 2 = raised + roundness = 7 # 0 = squared, 1 = old default, more will increase roundness + animation = TRUE # FALSE = disabled, TRUE = enabled + } +} + +style "theme-wide" = "theme-default" +{ + xthickness = 2 + ythickness = 2 +} + +style "theme-wider" = "theme-default" +{ + xthickness = 3 + ythickness = 3 +} + +style "theme-entry" = "theme-wider" +{ + bg[SELECTED] = "#262626" +} + +style "theme-button" = "theme-wider" +{ + bg[NORMAL] = "#404040" + bg[ACTIVE] = "#303030" +} + +style "theme-notebook" = "theme-wide" {} + +style "theme-tasklist" = "theme-default" +{ + xthickness = 5 + ythickness = 3 +} + +style "theme-menu" = "theme-default" +{ + xthickness = 2 + ythickness = 1 +} + +style "theme-menu-item" = "theme-default" +{ + ythickness = 3 + fg[PRELIGHT] = "#FF993F" + text[PRELIGHT] = "#cccccc" +} + +style "theme-menubar" = "theme-default" +{ + bg[NORMAL] = "#2c2c2c" +} + +style "theme-menubar-item" +{ + ythickness = 4 + bg[PRELIGHT] = "#272727" +} + +style "theme-tree" = "theme-default" +{ + xthickness = 2 + ythickness = 2 +} + +style "theme-frame-title" = "theme-default" +{ + fg[NORMAL] = "#aeaeae" +} + +style "theme-tooltips" = "theme-default" +{ + xthickness = 4 + ythickness = 4 + bg[NORMAL] = "#2c2c2c" +} + +style "theme-progressbar" = "theme-wide" +{ + xthickness = 1 + ythickness = 1 + fg[PRELIGHT] = "#000000" +} + +style "theme-combo" = "theme-button" {} + +style "EditorStyle" { + base[NORMAL] = "#111111" + text[NORMAL] = "#aeaeae" + text[PRELIGHT] = "#aeaeae" + text[ACTIVE] = "#aeaeae" + text[INSENSITIVE] = "#aeaeae" +} + +class "GtkWidget" style "theme-default" +class "GtkButton" style "theme-button" +class "GtkScale" style "theme-button" +class "GtkCombo" style "theme-button" +class "GtkRange" style "theme-wide" +class "GtkFrame" style "theme-wide" +class "GtkMenu" style "theme-menu" +class "GtkEntry" style "theme-entry" +class "GtkMenuItem" style "theme-menu-item" +class "GtkNotebook" style "theme-notebook" +class "GtkProgressBar" style "theme-progressbar" +class "*MenuBar*" style "theme-menubar" + +widget_class "*MenuItem.*" style "theme-menu-item" +widget_class "*MenuBar.*" style "theme-menubar-item" + +widget_class "*.GtkComboBox.GtkButton" style "theme-combo" +widget_class "*.GtkCombo.GtkButton" style "theme-combo" + +widget_class "*.tooltips.*.GtkToggleButton" style "theme-tasklist" +widget "gtk-tooltips" style "theme-tooltips" + +widget_class "*.GtkTreeView.GtkButton" style "theme-tree" +widget_class "*.GtkCTree.GtkButton" style "theme-tree" +widget_class "*.GtkList.GtkButton" style "theme-tree" +widget_class "*.GtkCList.GtkButton" style "theme-tree" +widget_class "*.GtkFrame.GtkLabel" style "theme-frame-title" + +widget_class "*.GtkNotebook.*.GtkEventBox" style "theme-notebook" +widget_class "*.GtkNotebook.*.GtkViewport" style "theme-notebook" + +class "GtkTextView" style "EditorStyle" diff --git a/fremantle/easy-deb-chroot/build_easydebchroot.py b/fremantle/easy-deb-chroot/build_easydebchroot.py index ff65c32..5d64fa9 100755 --- a/fremantle/easy-deb-chroot/build_easydebchroot.py +++ b/fremantle/easy-deb-chroot/build_easydebchroot.py @@ -24,13 +24,13 @@ if __name__ == "__main__": p.description=qoledescript.read() p.xsbc_bugtracker="http://talk.maemo.org/showthread.php?t=34550" p.maemodispname="Easy Debian" - version = "0.9.46" #Version of your software, e.g. "1.2.0" or "0.8.2" + version = "0.9.53" #Version of your software, e.g. "1.2.0" or "0.8.2" build = "1fremantle1" #Build number qolechangelog = open("control/changelog", "r") changeloginformation = qolechangelog.read() p.author="Alan Bruce (qole)" p.mail="qole@qole.org" - p.depends = "easy-chroot (>=0.2.7), lzma, wget" + p.depends = "easy-chroot (>=0.2.7), lzma, wget, wmctrl, zenity, murrinanightorange" p.section="user/system" p.icon = "deblet-48.png" p.arch="armel" #should be all for python, any for all arch diff --git a/fremantle/easy-deb-chroot/control/changelog b/fremantle/easy-deb-chroot/control/changelog index c65d9a1..9e9e59e 100644 --- a/fremantle/easy-deb-chroot/control/changelog +++ b/fremantle/easy-deb-chroot/control/changelog @@ -7,4 +7,11 @@ 0.9.43: Removed Evince icon; Maemo version is just as good. Don't overwrite user's .xbindkeysrc 0.9.44: Added notification (noise, vibration, LED) to install script, ready to push to Extras! 0.9.45: Fixed ~/.xbindkeysrc file to work with all keyboards. Installer now triggers synchroot script. -0.9.46: Deleted theme line from /home/user/.config/lxde/config \ No newline at end of file +0.9.46: Deleted theme line from /home/user/.config/lxde/config +0.9.47: PR 1.2 keyboard focus workaround, added debsu and debbie-sue +0.9.48: A less image-dependent keyboard focus workaround, /usr/bin/fixkbdfocus +0.9.49: Cleaned up the fixkbdfocus script. +0.9.50: Made a new script that first attempts to raise the existing LXDE window, and if that fails, it starts a new LXDE session. This allows one icon to work for both starting and restoring LXDE. Thanks rebhana. Ready for Extras-Testing now. +0.9.51: New Maemo-side script to launch LXDE with full keyboard focus! +0.9.52: Tweaked Maemo-side script to avoid timing issues. +0.9.53: Moved MurrinaNightOrange out, depends on it now. Depends on wmctrl too. \ No newline at end of file diff --git a/fremantle/easy-deb-chroot/src/home/user/.xbindkeysrc b/fremantle/easy-deb-chroot/src/home/user/.xbindkeysrc index 29252e0..2addc5c 100644 --- a/fremantle/easy-deb-chroot/src/home/user/.xbindkeysrc +++ b/fremantle/easy-deb-chroot/src/home/user/.xbindkeysrc @@ -51,42 +51,50 @@ "xvkbd -xsendevent -text '\r'" Shift + KP_Enter +# debernardis and rebhana suggest TAB and Esc + +"xvkbd -xsendevent -text '\t'" + Shift+Mod5 + Right + +"xvkbd -xsendevent -text '\e'" + Shift+Mod5 + Left + # F1-F12 mapped to Shift+Fn + keys from upper row (thanks, rebhana): -"xvkbd -text "\[F1]"" +"xvkbd -xsendevent -text "\[F1]"" m:0x81 + c:24 -"xvkbd -text "\[F2]"" +"xvkbd -xsendevent -text "\[F2]"" m:0x81 + c:25 -"xvkbd -text "\[F3]"" +"xvkbd -xsendevent -text "\[F3]"" m:0x81 + c:26 -"xvkbd -text "\[F4]"" +"xvkbd -xsendevent -text "\[F4]"" m:0x81 + c:27 -"xvkbd -text "\[F5]"" +"xvkbd -xsendevent -text "\[F5]"" m:0x81 + c:28 -"xvkbd -text "\[F6]"" +"xvkbd -xsendevent -text "\[F6]"" m:0x81 + c:29 -"xvkbd -text "\[F7]"" +"xvkbd -xsendevent -text "\[F7]"" m:0x81 + c:30 -"xvkbd -text "\[F8]"" +"xvkbd -xsendevent -text "\[F8]"" m:0x81 + c:31 -"xvkbd -text "\[F9]"" +"xvkbd -xsendevent -text "\[F9]"" m:0x81 + c:32 -"xvkbd -text "\[F10]"" +"xvkbd -xsendevent -text "\[F10]"" m:0x81 + c:33 -"xvkbd -text "\[F11]"" +"xvkbd -xsendevent -text "\[F11]"" m:0x81 + c:59 -"xvkbd -text "\[F12]"" +"xvkbd -xsendevent -text "\[F12]"" m:0x81 + c:22 # Examples of commands: diff --git a/fremantle/easy-deb-chroot/src/sbin/debsu b/fremantle/easy-deb-chroot/src/sbin/debsu new file mode 100755 index 0000000..e4f1785 --- /dev/null +++ b/fremantle/easy-deb-chroot/src/sbin/debsu @@ -0,0 +1,64 @@ +#!/bin/sh +# Sets up (if necessary) for chroot into a Debian environment. +# Expects root privileges, does not drop them. +# Look to /usr/bin/debbie-sue for a friendly wrapper. + +# By Alan M Bruce (qole) +# with help from Benson Mitchell, Thomas Perl, Anton Rebhan +# +# GPL licensed; keep code free! + +if [ "`whoami`" != "root" ] ; then + echo "please run me as root!" + exit 9 +fi + +#Pull in the config, if possible... +if [ -f "/home/user/.chroot" ] ; then + +. /home/user/.chroot + +else + echo "No ~/.chroot file." >/dev/stderr +fi + +#This comes from the config file... If not, fall back on '/debian' +if [ "x$CHROOT" = "x" ] ; then + CHROOT=/.debian + echo "No chroot dir specified; using $CHROOT" >/dev/stderr +else + echo "Chroot dir specified: $CHROOT" >/dev/stderr +fi + +#This comes from the config. If not, search for debian*.img.ext2 +if [ "x$IMGFILE" = "x" ] ; then + echo "No image file or partition specified." >/dev/stderr + IMGMMC="`ls -1 /home/user/MyDocs/debian*.img* /media/mmc1/debian*.img* | head -1`" + if [ "x$IMGMMC" != x ] ; then + IMGFILE="$IMGMMC" + else + MSG1=`printf "ERROR!\n\nYou have no debian.img.ext2 file on your memory cards.\n\nPlease use the Debian Image Installer in Extras."` + if [ ! -f "/usr/bin/gxmessage" ] ; then + echo $MSG1 >/dev/stderr + else + gxmessage -center -alignbuttons center -buttons GTK_STOCK_OK:0 -geometry 680x250 -title "MISSING DISK IMAGE" "$MSG1" + fi + exit 9 + fi +else + echo "$IMGFILE specified in ~/.chroot" >/dev/stderr +fi + +# +#Make the temp dir bigger for OpenOffice etc. +# +#This comes from the config file... +#If not, fall back to a 6MB /tmp dir +# + +[ "x$TMPSIZE" != x ] || TMPSIZE=6M +mount -o remount,size=$TMPSIZE /tmp + +# All exported variables need to be defined in the chroot with this script. + +qchroot $IMGFILE $CHROOT su - "$@" diff --git a/fremantle/easy-deb-chroot/src/usr/bin/debbie-sue b/fremantle/easy-deb-chroot/src/usr/bin/debbie-sue new file mode 100755 index 0000000..e9ee1c0 --- /dev/null +++ b/fremantle/easy-deb-chroot/src/usr/bin/debbie-sue @@ -0,0 +1,45 @@ +#!/bin/sh +# Chroots to Debian and runs a shell, or any command-line as non-root. + +# By Alan M Bruce (qole), Benson Mitchell and Thomas Perl +# +# GPL licensed; keep code free! + +if [ "`whoami`" = "root" ] ; then + echo "please don't run me as root!" + exit 9 +fi + +#Pull in the config, if possible... +[ -f /home/user/.chroot ] && . /home/user/.chroot + +#This comes from the config file... If not, fall back on 'user' +#[ "x$DEBUSER" != x ] || DEBUSER=user +DEBUSER=$USER + +CHROOTUSER=$DEBUSER + +#If display's not given, go to primary display. If it's set, let's not +#mangle it to allow convenient use of USB VGA out, or multiple Xomaps. +[ "x$DISPLAY" != x ] || export DISPLAY=:0.0 + +#This enables long-hold-to-right-click in all GTK+ apps. +#Maybe we'd be better to add libgtkstylus.so anyway, but for now, we'll +#just leave it if they've got any non-empty GTK_MODULES +[ "x$GTK_MODULES" != x ] || export GTK_MODULES=libgtkstylus.so + +#Note use of su below, so no Debian-side script req'd to drop privileges. +#With no args, use a shell; su will get the right one, with no -c +#With args, just run them as $DEBUSER. + +if [ $# = 0 ] ; then + echo Starting Debian shell... >/dev/stderr + sudo /sbin/debian su - $DEBUSER +else + # Workaround to allow "debbie" to be used as login shell + if [ "$1" == "-c" ]; then + shift + fi + echo Starting Debian $* >/dev/stderr + sudo /sbin/debian su - $DEBUSER -c "$*" +fi diff --git a/fremantle/easy-deb-chroot/src/usr/bin/debian-lxde b/fremantle/easy-deb-chroot/src/usr/bin/debian-lxde new file mode 100755 index 0000000..33cfdc2 --- /dev/null +++ b/fremantle/easy-deb-chroot/src/usr/bin/debian-lxde @@ -0,0 +1,28 @@ +#!/bin/sh +################################## +#Change these two variables to the WM of your choice. +WMEXEC="$1" +[ "x$WMEXEC" != x ] || WMEXEC="startlxde1" +################################## +export DISPLAY=:0 +# export TSLIB_TSDEVICE=/dev/input/event3 +debbie-sue 'echo "chroot is now open!"' +debbie-sue '/usr/bin/Xephyr :1 -screen 800x480 -br -ac' & +while [ "x$PARWIN" = "x" ] ; do + # wait for Xephyr window to appear + export PARWIN=`wmctrl -l | grep -i "N/A Xephyr" | awk '{print $1}'` +done +echo "Xephyr window ID is ($PARWIN)" +DISPLAY=:1 ; debbie-sue "habak -mf /usr/share/fonts/truetype/DroidSans-Bold.ttf \ + -ht 'Ctrl-back to return to dashboard.'" +DISPLAY=:0 ; wmctrl -i -r $PARWIN -T 'Easy Debian' +wmctrl -i -r $PARWIN -b toggle,fullscreen +zenity --display=:0 --info --title="Information" --text="Welcome to Easy Debian LXDE. This window is needed to gain keyboard focus in LXDE." & +while [ "x$TWOWIN" = "x" ] ; do + # wait for Zenity dialog to pop up... + export TWOWIN=`wmctrl -l | grep -i Information | awk '{print $1}'` +done +sudo debian /sbin/qobi-wmhint-fix $PARWIN +debbie-sue /usr/bin/$WMEXEC +killall Xephyr +export DISPLAY=:0 diff --git a/fremantle/easy-deb-chroot/src/usr/bin/debwm b/fremantle/easy-deb-chroot/src/usr/bin/debwm new file mode 100755 index 0000000..3ceadd0 --- /dev/null +++ b/fremantle/easy-deb-chroot/src/usr/bin/debwm @@ -0,0 +1,11 @@ +#!/bin/sh + +# This script first attempts to raise an existing Debian WM, +# and if that fails, it will start a new Debian WM. + +# Thanks again, rebhana! + +fixkbdfocus "N/A Easy Debian" +if [ "$?" = 2 ] ; then + debian-lxde +fi \ No newline at end of file diff --git a/fremantle/easy-deb-chroot/src/usr/bin/fixkbdfocus b/fremantle/easy-deb-chroot/src/usr/bin/fixkbdfocus new file mode 100755 index 0000000..76ef544 --- /dev/null +++ b/fremantle/easy-deb-chroot/src/usr/bin/fixkbdfocus @@ -0,0 +1,26 @@ +#!/bin/sh +# +# A small keyboard focus hack that uses qobi's workaround +# +# Provide the unique name of your window and get keyboard focus in it. +# GPL licenced. Share your code! + +if [ "x$1" = "x" ] ; then + gxmessage "Please specify a window name to focus." + exit 1 +fi + +WINLIST=`wmctrl -l` +FOCUSWIN=`echo "$WINLIST" | grep -i "$1" | awk '{print $1}'` + +if [ "x$FOCUSWIN" = "x" ] ; then + # gxmessage "No window found with the name $1" + echo "No window found with the name $1" + exit 2 +fi + +#FOCUSCMD="sudo debian qobi-wmhint-fix $FOCUSWIN ; wmctrl -i -a $FOCUSWIN" +#osso-xterm "$FOCUSCMD" + +sudo debian qobi-wmhint-fix $FOCUSWIN +wmctrl -i -a $FOCUSWIN diff --git a/fremantle/easy-deb-chroot/src/usr/share/applications/hildon/lxde.desktop b/fremantle/easy-deb-chroot/src/usr/share/applications/hildon/lxde.desktop index 90da7c4..346a844 100644 --- a/fremantle/easy-deb-chroot/src/usr/share/applications/hildon/lxde.desktop +++ b/fremantle/easy-deb-chroot/src/usr/share/applications/hildon/lxde.desktop @@ -2,7 +2,7 @@ Encoding=UTF-8 Name=Debian LXDE GenericName=Debian LXDE -Exec=/usr/bin/debbie xephwm5 +Exec=/usr/bin/debwm Icon=deblet X-Osso-Type=application/x-executable X-HildonDesk-ShowInToolbar=true diff --git a/fremantle/easy-deb-chroot/src/usr/share/applications/hildon/lxdefocus.desktop b/fremantle/easy-deb-chroot/src/usr/share/applications/hildon/lxdefocus.desktop index ebf2f9d..390830e 100644 --- a/fremantle/easy-deb-chroot/src/usr/share/applications/hildon/lxdefocus.desktop +++ b/fremantle/easy-deb-chroot/src/usr/share/applications/hildon/lxdefocus.desktop @@ -2,7 +2,7 @@ Encoding=UTF-8 Name=Fix LXDE kbd GenericName=Fix LXDE keyboard -Exec=/usr/bin/debbie xephfocus +Exec=fixkbdfocus "N/A Easy Debian" Icon=fix-kbd-focus X-Osso-Type=application/x-executable X-HildonDesk-ShowInToolbar=true -- 1.7.9.5