Change the color of selected text

A nifty little detail in html5 is that you can change the color of selected text, which is usually blue. It's just one of those details that webdesigners usually forget.

You can change the color of the selection using the following css:

::selection {
    background-color: red;
    color: #fff;
}
::-moz-selection {
    background-color: red;
    color: #fff;
}

The ::selection is used by most modern browsers, except for Firefox. The latter uses its own selector ::-moz-selection. I read an article that wrote they cannot be combined. As such, the following will NOT work:

::selection, ::-moz-selection { /* You can't combine like this */
    background-color: red;
    color: #fff;
}
© GeekLabInfo Change the color of selected text is a post from GeekLab.info. You are free to copy materials from GeekLab.info, but you are required to link back to http://www.geeklab.info

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Windows 7: Using symbolic links

Linux and unix have had this nifty little feature called symlinks (symbolic links) for decades. Windows has finally caught up with the new command mklink.

Windows Vista introduced the new command mklink, which was expanded in Windows 7.

Syntax

MKLINK [[/D] | [/H] | [/J]] Link Target
 
        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.

Examples

Link d:\myfile.txt (the file) to c:\something.txt (the link):

mklink c:\something.txt d:\myfile.txt

Make some crappy old program save its data to your fileserver directly by linking \\fileserver\data (target) to c:\program files\crappy-old-program\data (the directory).

mklink "c:\program files\crappy-old-program\data" \\fileserver\data /d
© GeekLabInfo Windows 7: Using symbolic links is a post from GeekLab.info. You are free to copy materials from GeekLab.info, but you are required to link back to http://www.geeklab.info

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 1.50 out of 5)
Loading...

Varnish cache: how to detect IPv6

The following VCL code detects if the client is connected using IPv6:

acl isipv6{                     
        "::"/0;
}                      
sub vcl_recv {          
    # [... whatever rules you like ...]
    if(server.ip ~ isipv6){
        # [... whatever rules you like ...]
    }
    # [... whatever rules you like ...]
}

You may want to use that for example for a "you're ipv6 enabled" banner.

© GeekLabInfo Varnish cache: how to detect IPv6 is a post from GeekLab.info. You are free to copy materials from GeekLab.info, but you are required to link back to http://www.geeklab.info

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

GTK and KDE: unreadable fonts

I just found a note from several years back. Since it may someday be handy to someone, I'm posting it here:

KDE somewhat integrates GTK applications. These applications will get the color schemes from KDE. Sometimes fonts in menu's get rendered unreadable by this.

Wrong styles are defined in /opt/gnome/share/themes/Qt/gtk-2.0/gtkrc:

style "default"
{
  engine "qtengine"
  {
  }
}
class "GtkWidget" style "default"

Disabling this whole block fixed my problem.

© GeekLabInfo GTK and KDE: unreadable fonts is a post from GeekLab.info. You are free to copy materials from GeekLab.info, but you are required to link back to http://www.geeklab.info

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Hide the mouse cursor with X

I recently got myself a touch screen, that I mounted near the entrance to welcome visitors. The device was really hard to install, as the drivers for 4 different Linux distros were broken, and only binary drivers are released. The fifth distro finally worked.

One thing that does annoy me however, is that X always shows the cursor. To hide the cursor on a touch screen, you can use the program unclutter:

yum install unclutter
unclutter -idle 0

Unclutter with such a short delay (0 seconds) also makes it impossible to select texts, but for this application, that's just perfect.

© GeekLabInfo Hide the mouse cursor with X is a post from GeekLab.info. You are free to copy materials from GeekLab.info, but you are required to link back to http://www.geeklab.info

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...

Backup your phone with zero keypresses

I created some scripts to backup my Samsung Galaxy S2 to my Fedora 16 system without pressing any keys or even touching the mouse. It works like this:

To backup a SGS2, you go to settings > applications > usb tools on the phone, and click the button. You then connect it to a usb cable. At that moment, two removable devices become visible to the Linux system: one for the SD card, one for the built-in memory. But they still contain no media. Only when you press another button on the phone, the "media are inserted in the devices", triggering a "change" action with the udev daemon.

Configuration of the udev daemon

Create a file /etc/udev/rules.d/71-android-backup.rules:

SUBSYSTEM=="block", ACTION=="change", ENV{ID_SERIAL}=="Android_UMS_Composite_XXXXXXXXXXXXXXXX-0:0", ENV{DISK_MEDIA_CHANGE}=="1", ENV{ID_FS_TYPE}=="vfat", RUN+="/usr/local/bin/androidbackup"

Whenever a (virtual) medium is inserted, a udev change action is triggered. Actually, it gets triggered multiple times, but we only need the one that has the environment variable DISK_MEDIA_CHANGE=1 set.

Action to perform

The action triggered is /usr/local/bin/androidbackup and all parameters are in the environment. So let's create that file. I use a rsnapshot-like operation to backup my data, but without actually using rsnapshot.

#!/bin/bash
 
function msg {
        /usr/bin/logger -t android "$1"
        DISPLAY=:0 qdbus $dbusRef setLabelText "$1"
        DISPLAY=:0 qdbus $dbusRef Set "" value $2
}
 
if [ "$1" != "FORKED" ]; then
        $0 FORKED &
        exit 0
fi
 
if [ -f /etc/sysconfig/androidbackup ]; then
        . /etc/sysconfig/androidbackup
else
        echo /etc/sysconfig/androidbackup does not exist
        exit 0
fi
 
#debug disabled:
#set > /tmp/android/`date +%s`.$RANDOM
 
dbusRef=`kdialog --display :0 --progressbar "Backup android..." 100`
 
msg "Attach $DEVNAME $ACTION $ID_SERIAL" 0
 
if [ ! -e $DESTINATION ]; then
        # I could mkdir -p, but sometimes $DESTINATION could just be a network location that's offline
        msg "Android will not be backed up: $DESTINATION is not okay" 0
        exit 0
fi
 
mkdir -p /mnt/android
 
mount $DEVNAME /mnt/android 
rc=$?
if [ $rc -ne 0 ]; then
        msg "Problem mounting $DEVNAME to /mnt/android: $rc " 0
        mount | grep android 2>&1 | logger -t androidbackup
        exit 0
fi
 
if [ "`mount |grep -i /mnt/android`" == "" ]; then
        msg "Cannot find /mnt/android in mount table" 0
        exit 0
fi
 
msg "Remove old backup" 8
[ -e $DESTINATION/backup.30 ] && rm -rf $DESTINATION/backup.30
 
msg "Start backup" 10
for i in `/usr/bin/seq 30 -1 2`; do 
        if [ -e $DESTINATION/backup.$((i-1)) ]; then
                msg "mv $DESTINATION/backup.$((i-1)) $DESTINATION/backup.$i" 11
                mv $DESTINATION/backup.$((i-1)) $DESTINATION/backup.$i
        fi
done
 
msg "Copy" 40
[ -e $DESTINATION/backup.0 ] && /bin/cp -al $DESTINATION/backup.0 $DESTINATION/backup.1
mkdir -p $DESTINATION/backup.0/
 
msg "Start rsync" 40
/usr/bin/rsync -az --numeric-ids --delete --hard-links /mnt/android/ $DESTINATION/backup.0/
touch $DESTINATION/backup.0/
 
chown -R $CHOWN $DESTINATION/backup.0
 
umount /mnt/android
 
msg "Done" 100
exit 0

Since that file refers to /etc/sysconfig/androidbackup, let's also make that file:

#next line defines the location of all backups
DESTINATION=/home/geeklab/.androidbackup
 
#next line defines the owner of all files copied
CHOWN=geeklab
© GeekLabInfo Backup your phone with zero keypresses is a post from GeekLab.info. You are free to copy materials from GeekLab.info, but you are required to link back to http://www.geeklab.info

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading...