+#!/usr/bin/env perl
+use 5.010;
+
+say 'use strict;';
+say '+{';
+my @names;
+
+for my $path (glob 'data/xcolors/themes/*') {
+ open my $theme, '<', $path;
+ (my $name = $path) =~ s{.*/}{}; # basename
+ push @names, $name;
+
+ my @pal;
+ while (readline $theme) {
+ m{ color(\d+) \h* : \h* ( \#(\S+) | rgb:(\S+) ) }x or next;
+ my ($idx, $val) = ($1, uc $+);
+ $idx < 16 or next;
+ $val =~ s/[^0-9A-F]//g;
+ $pal[$idx] = $val;
+ }
+
+ say qq("$name" => {);
+ say qq(\ttitle => '$name',);
+ say qq(\tparent => 'cga',);
+ say qq(\tlist => [qw(@pal)],);
+ say qq(},);
+}
+
+say 'xcolor => [', join(', ', map {"'$_'"} @names), '],';
+say '}';