2012. szeptember 10., hétfő

Thunar egyéni műveletek: ISO készítés, mount


A Crunchbang Linux alapértelmezett fájlkezelője a Thunar, melynek fejlesztési céljai közé tartozik, hogy gyorsabban induljon, mint bármely más böngésző, és rendkívül megbízható legyen, ezenkívül könnyen kiterjeszthető legyen a funkcionalitása plugin-ek és egyéb szkriptek segítségével. Talán gyorsaság és memóriahasználat szempontjából nem a legjobb (a PCManFM egy kicsit ebben megelőzi), viszont az általam korábban használat Konqueror-t, és Nautilus-t bőven lehagyja.
Sokáig nem használtam hozzá saját kiegészítéseket, mert a Crunchbang-ben alapból hozzá adtak már néhány egyéni műveletet (custom action, magyarul szörnyen hangzik). Ezek a következők: Fájlok keresése Catfish-el, Thunar megnyitása root jogosultsággal, Terminator megnyitása az adott mappában a felhasználó vagy root jogosultsággal.
Nautilus esetén is ezeket a kiegészítéseket használtam, de néha hasznos lenne, ha .iso fájlokat is gyorsan tudnék kezelni Thunar-ból. Például egy Daemon Tools funkcionalitását megvalósíthatná custom action-ökkel! Amikor ez eszembe jutott el is kezdtem átírni a korábbi Nautilus-nál használt .iso kezelő szkriptjeimet Thunar-os verzióra, így most megosztom, hátha szüksége van másoknak is rájuk.

előkészítés
3 szkripttel elég jól kezelni tudjuk már az .iso képfájlokat. Lesz egy képfájlt csatoló, egy leválasztó, és egy képfájlokat készítő szkript. Természetesen bárhova telepíthetőek lesznek, ez csak egy példa lesz:
#csináljunk a home-unkban egy .scripts könyvtárat, ha még nincs
mkdir -p ~/.scripts/ISOManager
#hozzuk létre a 3 szkriptet
touch ~/.scripts/ISOMount ~/.scripts/ISOunMount ~/.scripts/MakeISO
#tegyük őket futtathatóvá
chmod +x  ~/.scripts/ISOMount ~/.scripts/ISOunMount ~/.scripts/MakeISO
.iso képfájl csatolása
A Thunar-ban a Szerkesztés -> Egyéni műveletek beállítása... résznél, a "+" gomb megnyomása után adhatunk hozzá újat. A Név és Leírás mezőket töltsük ki tetszés szerint, a Parancs részhez, pedig írjuk be a következőt:
gksudo ~/.scripts/ISOManager/ISOMount %f
Megjelenési feltételeknél írjuk be, hogy csak a *.iso alakú Egyéb fájlok-nál jelenjen meg ez az opció. Ezután Terminálban:
gedit ~/.scripts/ISOManager/ISOMount
 Majd illesszük be a következő szkriptet, és mentsük el a fájlt:
#!/bin/bash
BASENAME=`basename "$1"`
ISO=`printf "%q" "$1"`
sudo mkdir -p "/media/$BASENAME"
if sudo mount -o loop -t iso9660 $ISO "/media/$BASENAME"; then
    if zenity --question --title "ISO Mounter" --text "$BASENAME Successfully Mounted. Open Volume?"; then
        thunar /media/"$BASENAME"
    fi
    exit 0
else
    sudo rmdir "/media/$BASENAME"
    zenity --error --title "ISO Mounter" --text "Cannot mount $BASENAME!"
    exit 1
fi
.iso képfájl leválasztása
Az előzőhöz hasonlóan kell hozzáadnunk, de a Parancs a következő legyen:
gksudo ~/.scripts/ISOManager/ISOunMount %f
Megjelenési feltételeknél írjuk be, hogy csak a *.iso alakú Egyéb fájlok-nál jelenjen meg ez az opció. Ezután Terminálban:
gedit ~/.scripts/ISOManager/ISOMount
Majd illesszük be a következő szkriptet, és mentsük el a fájlt:
#!/bin/bash
BASENAME=`basename $1`
sudo umount "/media/$BASENAME"
sudo rmdir "/media/$BASENAME"
zenity --info --text "Successfully unmounted /media/$BASENAME"
exit 0
.iso képfájl készítése
Ugyanúgy, mint az előzőeket. Parancs:
~/.scripts/ISOManager/MakeISO %N
Megjelenési feltételeknél írjuk be, hogy bármely fájlnál (*) jelenjen meg ez az opció, és minden fájltípust jelöljünk be. Majd Terminálban:
gedit ~/.scripts/ISOManager/MakeISO
Végül  illesszük be a következő szkriptet, és mentsük el a fájlt:
#!/bin/bash
zenity --question --text="Create an ISO image here?" || exit

(genisoimage -r -o generated.iso "$@" 2>&1 |
while read i; do
    PARCIAL=$(echo $i | grep -o [0-9]*'\.'[0-9]*)
    if [ $PARCIAL ]; then
        echo $PARCIAL
        echo "# $PARCIAL% done..."
    fi;
done
echo "# Finish." ) | zenity --progress --title="Creating \"$*.iso\""
Ha mindent jól csináltunk a következő menüpontokkal találkozhatunk Thunar-ban, ha jobb klikkel kapcsoltunk kijelölt fájlokra:




Thunar hivatalos Wiki-je, néhány új custom action
Thunar hivatalos oldala

2012. szeptember 9., vasárnap

Code::Blocks OpenGL (GLUT) támogatással


C és C++ fejlesztésekhez általában, ha valamilyen IDE-t használok az a Code::Blocks. Egyrészt nagyon könnyen konfigurálható, crossplatform és rengeteg kiegészítő érhető el hozzá.
Újabban viszont 3D grafikus programozáshoz használom, amelyhez szükséges eszközök telepítéséről és beállításáról fogok most írni.

Először is telepítsük a Code::Blocks-ot, egy nem hivatalos, de hivatalosan támogatott repository-ból (a Jens' repository-ban elérhetőek testing változatai is a programnak).
Adjuk hozzá a szükséges tárolókat és kulcsokat:
echo "deb http://apt.jenslody.de/stable squeeze main" | sudo tee -a /etc/apt/sources.list
echo "deb-src http://apt.jenslody.de/stable squeeze main" | sudo tee -a /etc/apt/sources.list

echo "deb http://apt.wxwidgets.org/ squeeze-wx main" | sudo tee -a /etc/apt/sources.list

wget -q http://apt.wxwidgets.org/key.asc -O- | sudo apt-key add -
sudo apt-get update
sudo apt-get install jens-lody-debian-keyring
Telepítsük a Code::Blocks-ot:
sudo apt-get install codeblocks
Ha mindezzel megvagyunk telepíhetjük az GLUT támogatást, amely az OpenGL kiegészítése és egyszerűbben programozhatunk benne:
sudo apt-get install libxxf86vm1 libxxf86vm-dev freeglut3 freeglut3-dev libglut3 libglut3-dev glutg3-dev libxt-dev libxt6
Ha GLUT-ot használva akarunk programozni, akkor a következőképpen kell létrehoznunk a projektünket:
A Code::Blocks megnyitása után, válasszuk ki a sablonoknál a "GLUT project"-et:
A "Go" gomb megnyomása után meg kell adnunk a projektünk címét, mentési helyét, majd egy "Next" után meg kell adni a GLUT header fájlok helyét, amit a /usr könyvtárból fog include-olni:


Ha minden kész egy F9 gombbal lefordíthatjuk a GLUT példaprogramot és futtathatjuk, ha minden rendben akkor a következőhöz hasonló eredményt kell látnunk:

2012. szeptember 3., hétfő

HP4530s Linux - További fogyasztás csökkentés


Ahogy egy korábbi cikkemben már írtam, a Linux rendszer néhány hardverközeli finomhangolásával további fogyasztást csökkentést érhetünk el. Így ezzel a laptopunk töltőmentes üzemidejének hosszát is meghosszabbíthatjuk.
Az írásomban leírtakat egy HP 4530S notebookon végeztem el Crunchbang Linux operációs rendszeren. Egyes paramétereket más gép és rendszer esetében meg kell változtatunk, máshol újabb energiaspórolási lehetőségek is léteznek, de alapvetően más környezetben is használható a szkript, melyet főként még az Ubuntu-s időmből mentettem át. Azóta sokat fejlődött a szkript, méréseim szerint körülbelül további 2W-ot lehet megspórolni vele, amely önmagában nem sok, de a korábbi cikkemmel együtt alkalmazva már nem is olyan elhanyagolható fogyasztás csökkentés.

Először is telepítsük fel a pm-utils csomagot:
sudo apt-get install pm-utils
majd hozzuk létre és tegyük futtathatóvá a szkriptünket, amely automatikus hálózati töltő csatlakozásakor, vagy kihúzásakor fog lefutni:
sudo touch /etc/pm/power.d/99-savings
sudo chmod +x /etc/pm/power.d/99-savings
sudo gedit /etc/pm/power.d/99-savings
 A megnyíló Gedit-be illesszük be a következő power.d szkriptet:
ac_power()
{
# Enable wake on lan
ethtool -s eth0 wol g

# Remount filesystems so the journal commit only happens every 30
# seconds.  By default this is 5 but, I prefer to reduce the disk
# activity a bit.
mount -o remount,commit=30,atime,diratime /
mount -o remount,commit=30,atime,diratime /home

# Set the Intel wifi to no power savings.
iwconfig wlan0 power off

# Turn Bluetooth on
modprobe bluetooth
hciconfig hci0 up

# Set kernel dirty page value back to default
echo 10 > /proc/sys/vm/dirty_ratio
echo 5 > /proc/sys/vm/dirty_background_ratio
echo 600 > /proc/sys/vm/dirty_writeback_centisecs

# Disable powersaving on disk
hdparm -B 255 -S 244 /dev/sda
 
# Turn swap on
swapon -a
 
# Turn laptop mode off
echo 0 > /proc/sys/vm/laptop_mode
 
# Turn nmi watchdog on
#echo 1 > /proc/sys/kernel/nmi_watchdog
 
# Disable powersaving on soundcard (AC97)
#echo 0 > /sys/module/snd_ac97_codec/parameters/power_save
# Disable powersaving on soundcard (HDA)
echo 0 > /sys/module/snd_hda_intel/parameters/power_save 
echo N > /sys/module/snd_hda_intel/parameters/power_save_controller

# Disable CD polling
hal-disable-polling --device /dev/scd0 --enable-polling

# Disable SATA power saving
for i in /sys/class/scsi_host/host*/link_power_management_policy; do echo max_performance > $i; done

# Change cpu mode to ondemand
for i in /sys/devices/system/cpu/*/cpufreq/scaling_governor; do echo ondemand > $i; done

# Disable PCI power saving
for i in /sys/bus/pci/devices/*/power/control; do echo on > $i; done
}

battery_power()
{
# Disable wake on lan
ethtool -s eth0 wol d

# Change the filesystem commit times to 10 minutes.  This reduces disk
# activity
mount -o remount,commit=600,noatime,nodiratime /
mount -o remount,commit=600,noatime,nodiratime /home

# Set the intel wlan to save power
iwconfig wlan0 power on

# Turn Bluetooth off
hciconfig hci0 down
rmmod bluetooth

# Reduce disk activity by waiting up to 10 minutes before doing writes
echo 90 > /proc/sys/vm/dirty_ratio
echo 1 > /proc/sys/vm/dirty_background_ratio
echo 60000 > /proc/sys/vm/dirty_writeback_centisecs
 
# Put down the controller when not in use
echo 10 > /sys/module/snd_hda_intel/parameters/power_save
echo Y > /sys/module/snd_hda_intel/parameters/power_save_controller
 
# Enable powersaving on disk after 60 second
hdparm -B 1 -S 12 /dev/sda
 
# Turn swap off
swapoff -a
 
# Turn laptop mode on
echo 5 > /proc/sys/vm/laptop_mode
 
# Turn nmi watchdog off
#echo 0 > /proc/sys/kernel/nmi_watchdog
 
# Turn soundcard off when not in use (AC97)
#echo 1 > /sys/module/snd_ac97_codec/parameters/power_save
#echo 1 > /dev/dsp
# Turn soundcard off when not in use (HDA)
echo 10 > /sys/module/snd_hda_intel/parameters/power_save
 
# Disable CD polling
hal-disable-polling --device /dev/scd0

# Enable SATA power saving
for i in /sys/class/scsi_host/host*/link_power_management_policy; do echo min_power > $i; done

# Change CPU frequency governor to powersave
for i in /sys/devices/system/cpu/*/cpufreq/scaling_governor; do echo powersave > $i; done

# Enable PCI power saving
for i in /sys/bus/pci/devices/*/power/control; do echo auto > $i; done

# Enable USB power saving
for i in /sys/bus/usb/devices/*/power/autosuspend; do echo 2 > $i; done
for i in /sys/bus/usb/devices/*/power/level; do echo auto > $i; done
}

case "$1" in
    false) ac_power ;;
    true) battery_power ;;
esac
 Mentsük el a változásokat, lépjünk ki a Gedit-ből és ezzel már csökkentettük is laptunk fogyasztását! További fogyasztás csökkentő lehetőségekről is írok majd még a jövőben; legközelebb egy SSD meghajtó vásárlását tűztem ki célul az eredményekről szintén beszámolok majd. :)

LessWatts.org