123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/usr/bin/perl
- # Make .desktop files for the puzzles.
- #
- # At present, this script is intended for developer usage: if you're
- # working on the puzzles and want to play your bleeding-edge locally
- # modified and compiled versions, run this script and it will create a
- # collection of desktop files in ~/.local/share/applications where
- # XFCE can pick them up and add them to its main menu. (Be sure to run
- # 'xfdesktop --reload' after running this.)
- #
- # (If you don't use XFCE, patches to support other desktop
- # environments are welcome :-)
- use strict;
- use warnings;
- use Cwd 'abs_path';
- die "usage: desktop.pl [<outdir> [<bindir> <icondir>]]\n"
- unless @ARGV == 0 or @ARGV == 1 or @ARGV == 3;
- my ($outdir, $bindir, $icondir) = @ARGV;
- $outdir = $ENV{'HOME'}."/.local/share/applications" unless defined $outdir;
- $bindir = "." unless defined $bindir;
- $icondir = "./icons" unless defined $icondir;
- $bindir = abs_path($bindir);
- $icondir = abs_path($icondir);
- open my $desc, "<", "gamedesc.txt"
- or die "gamedesc.txt: open: $!\n";
- while (<$desc>) {
- chomp;
- my ($id, $win, $displayname, $description, $summary) = split /:/, $_;
- open my $desktop, ">", "$outdir/$id.desktop"
- or die "$outdir/$id.desktop: open: $!\n";
- my $path = "$bindir/$id";
- my $upath = "$bindir/unfinished/$id";
- $path = $upath if ! -f $path && -f $upath;
- print $desktop "[Desktop Entry]\n";
- print $desktop "Version=1.0\n";
- print $desktop "Type=Application\n";
- print $desktop "Name=$displayname\n";
- print $desktop "Comment=$description\n";
- print $desktop "Exec=$path\n";
- print $desktop "Icon=$icondir/$id-48d24.png\n";
- print $desktop "StartupNotify=false\n";
- print $desktop "Categories=Game;\n";
- print $desktop "Terminal=false\n";
- close $desktop
- or die "$outdir/$id.desktop: close: $!\n";
- }
|