#!/usr/bin/perl # gCpicker, color selector/picker with last color memory : raimo 20060816 -> 20061226.2 BETA! look *1 # http://dash.atspace.org/ubuntu/gcpicker # # libgtk2-perl and libgnome2-perl required # sudo apt-get install libgtk2-perl libgnome2-perl # # wget -O ~/gcpicker.txt http://dash.atspace.org/sec/gcpicker.txt # set SETTINGS below (*0): nano ~/gcpicker.txt # sudo cp -i ~/gcpicker.txt /usr/bin/gcpicker # sudo chmod 755 /usr/bin/gcpicker # gcpicker --help # gcpicker & use strict; # ----- SETTINGS ----- # *0 my $stick = 0; # 0/1 visible in all desktops my $ontop = 1; # 0/1 on the top my $hide = 0; # 0/1 hide from taskbar my $alpha = 0; # 0/1 show opacity selector # -------------------- # # params are as "flip-flop", if default is 0 # command line parameter turns it to 1 and backwards use Gnome2; use Gtk2 "-init"; sub help; sub mem; sub save; my $name = $0; $name =~ s/^.*\///; my $vers = 20061226.2; my $lic = "http://creativecommons.org/licenses/publicdomain/"; my $home = $ENV{"HOME"}; my ($r, $g, $b, $a); exit print help if grep/^-h$|^--help$|^-v$|^--version$/, @ARGV; $stick = !$stick if grep/^--stick$/, @ARGV; $ontop = !$ontop if grep/^--ontop$/, @ARGV; $hide = !$hide if grep/^--hide$/, @ARGV; $alpha = !$alpha if grep/^--alpha$/, @ARGV; my $window = Gtk2::Window -> new("toplevel"); $window -> set_title(" gCpicker"); $window -> set_position("center-always"); $window -> set_keep_above($ontop); $window -> stick if $stick == 1 || $stick; $window -> set_skip_taskbar_hint($hide); $window -> signal_connect(delete_event => sub{$window -> destroy}); $window -> signal_connect(destroy => sub{Gtk2 -> main_quit}); my $picker = Gnome2::ColorPicker -> new; $picker -> set_size_request(65, 35); $picker -> set_title("gCpicker"); $picker -> set_i8($r, $g, $b, $a) if mem == 2; # color from memory $picker -> signal_connect(color_set => sub{save(($r, $g, $b, $a) = $picker -> get_i8)}); $picker -> set_use_alpha(1) if $alpha == 1 || $alpha; $window -> add($picker); $window -> show_all; Gtk2 -> main; exit 0; sub help{ my $help = <; close FILE; $ret = 2 if $r =~ m/^\d{1,3}$/ && $g =~ m/^\d{1,3}$/ && # fixed numchk 20061226 $b =~ m/^\d{1,3}$/ && $a =~ m/^\d{1,3}$/; # mark for set_i8 return $ret; } sub save{ my $hex = sprintf("%02X%02X%02X", $r, $g, $b); my $css = sprintf("%.2f", $a / 255); print "\ncolor: #$hex\n", "background-color: #$hex\n", "rgb($r, $g, $b)\n", "opacity: $css\n", "rgba($r, $g, $b, $css)\n", "alpha: $a\n\n"; open FILE, "> $home/.gcpicker.mem"; flock FILE, 2; print FILE "$r|$g|$b|$a"; close FILE; } # *1 20061226, raimo # - added last color memory, it's cool I think? ;) # - changed return values to HEX-color # - returns CSS/HEX and RGB -values to STDOUT in every color select # - returns CSS3 opacity and rgba values too # URL: http://dash.atspace.org/ubuntu/gcpicker # dev: http://gtk2-perl.sourceforge.net/doc/pod/Gnome2/ColorPicker.html # license: http://creativecommons.org/licenses/publicdomain/