Energieoptionen über die Shell verwalten

Die Energieoptionen in Windows kann man zum einen über Gruppenrichtlinien verwalten, oder auch über die Shell. Das ganze funktioniert mit dem Befehl powercfg. Um zum Beispiel zu konfigurieren nach welcher Zeit der Bildschirm ausgeschaltet wird, gibt man den folgenden Befehl ein:
powercfg -CHANGE Desktop -monitor-timeout-ac 20
Desktop steht hier für das Schema das geändert werden soll. In Windows XP muss dieser Wert angegeben werden, in Windows 7 wird das aktuelle Schema verwendet, wenn dieser Parameter fehlt. -monitor-timeout-ac definiert die Zeit nach der der Bildschirm im Netzbetrieb ausgeschaltet werden soll. Für den Akkubetrieb muss man -monitor-timeout-dc verwenden. Wenn der Bildschirm nicht ausgeschaltet werden soll, kann man 0 als wert angeben. Wenn man will, dass der Bildschirm nach 20 Minuten ausschaltet, die Festplatte und der ganze Computer im weiter läuft, kann man das folgendermassen konfigurieren:
powercfg -CHANGE Desktop -monitor-timeout-ac 20
powercfg -CHANGE Desktop -disk-timeout-ac 0
powercfg -CHANGE Desktop -standby-timeout-ac 0
powercfg -CHANGE Desktop -hibernate-timeout-ac 0

Bilder mit ImageMagick unter Linux verkleinern

Letzthin habe ich einen Beitrag über ein PHP Script geschrieben, welches automatisch Bilder verkleinert. Dank eine Hinweis von Boje bin ich dann zu diesem Artikel über Script-Fu gekommen. Eigentlich geht es dort darum, wie man Bilder automatisch im Gimp verkleinert, allerdings hat es oben ein kurzes Shellscript, welches zeigt wie man ein Bild mit dem Befehl convert verkleinert. Und das ist einiges simpler als meine PHP-Lösung. Das Script erfüllt allerdings nicht ganz meine Anforderdungen, also habe ich es noch etwas angepasst. convert ist ein Bestandteil von ImageMagick also muss man das zuerst installieren, falls das nicht nicht geschehen ist.
sudo apt-get install imagemagick

Das Script ist dann relativ schnell gemacht und es ist doch einiges simpler und kürzer als die PHP Version. Und sie funktioniert genauso gut.
#!/bin/bash

# Alle .jpg Dateien auslesen
for file in *.jpg
do
    # Thumbnail erstellen
    convert ${file} -resize x150 `basename $file .jpg`_thumb.jpg

    # Die grosse Datei verkleinern
    convert ${file} -resize x600 ${file}
done

Bilder mit PHP unter Linux verkleinern

Hier im Blog poste ich ja sehr oft Bilder. Meistens sind es selbst gemacht. Nur kann ich diese Bilder nicht einfach von der Kamera herunterkopieren und dann auf den Server laden, nein, ich muss sie auch noch etwas bearbeiten. Meistens beschränkt sich dieses Bearbeiten nur auf das verkleinern. Normalerweise gibt es für jedes Bild zwei Bilder. Ein grösseres mit einer Höhe von 600 Pixel und ein Thumbnail mit einer Höhe von 150 Pixel. Nun habe ich diese Bilder immer im Gimp verkleinert, aber das ist mir jetzt zu dumm geworden. Jedes Bild öffnen, verkleinern, speichern, für das Thumbnail nochmals verkleinern und wieder speichern. sehr aufwändig.
Um das ganze nun etwas zu vereinfachen, habe ich mir ein Script geschreiben, welches alle Bilder in einem Ordner verkleinert. Es gibt wieder zwei Bilder mit den schon genannten Grössen. Da ich nur in PHP weiss wie man so etwas macht, hab ich ein kleines PHP Script geschrieben. Der Quelltext ist weiter unten zu finden. Für das Script wird die GD Library benötigt, welche aber standardmässig schon installiert ist. Zudem habe ich noch die CLI (Command Line Interpreter) Version von PHP installiert, so kann ich das Script wie ein normales Shellscript starten. Bei fertigen Script musste ich nur noch die Dateiendung entfernen und die Datei ausführbar machen (chmod 755). Jetzt kann ich die Datei mit einem Doppelklick ausführen und so werden meine Bilder ohne grossen Aufwand verkleinert. Ein hoch auf die Technik ;)

Nun aber noch der PHP-Code:
#!/usr/bin/php -q
<?
// Ordner
define("FOLDER","./");

// Funktion zum verkleinern der Bilder
function thumb($orig,$thumb,$height)
{
    
// Vorherige Groesse
    
$size=getImageSize(FOLDER.$orig);
    
$orig_width=$size[0];
    
$orig_height=$size[1];

    
// Bild laden
    
$src=imageCreateFromJpeg(FOLDER.$orig);

    
// Neue Groesse bestimmen
    
if($orig_height>$height)
    {
        
$factor=$orig_height/$height;

        
$new_height=round($orig_height/$factor,2);
        
$new_width=round($orig_width/$factor,2);
    }

    
// Zielbild erstellen
    
$dst=imageCreateTrueColor($new_width,$new_height);

    
// Bild kopieren
    
$buffer=imageCopyResized($dst,$src,0,0,0,0,$new_width,$new_height,$orig_width,$orig_height);

    
// Bild speichern
    // Qualitaet ist 85%
    
imageJpeg($dst,FOLDER.$thumb,85);
}

// Order oeffnen
$dir=openDir(FOLDER);

// Ordner durchgehen
while($object=readDir($dir))
{
    
// Wenn Datei im jpg endet
    
if(subStr($object,-3,3)=="jpg")
    {
        
$orig=$object;

        
// Name fuer Thumb bestimmen
        // Aus test.jpg wird test_thumb.jpg
        
$split=explode(".",$object);
        unSet(
$split[count($split)-1]);
        
$thumb=implode(".",$split)."_thumb.jpg";

        
// Bilder verkleinern
        
thumb($orig,$thumb,150);
        
thumb($orig,$orig,600);
    }
}
?>

History scrollen in der Shell

Ich mag es, wenn ich unter Linux mit Page Up und Page down durch die History scrollen kann. Bei einigen Distributionen geht das standardmässig aber nicht, also muss man etwas nachhelfen.
Nur den folgenden Code in die ~./inputrc kopieren.
# home/end keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# delete/insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# scrolling the history with page up/page down
"\e[5~": history-search-backward
"\e[6~": history-search-forward

Dann funktionieren auch die Home, End, Delete und Insert Tasten in der Shell.