shithub: puzzles

Download patch

ref: 122800cce146d27469732425b2775572d9fc2e68
parent: 5dda5cf1d039767c632fe5e58ed7b95f5a615c0f
author: Simon Tatham <anakin@pobox.com>
date: Sat Jun 8 12:50:28 EDT 2013

Script to read the new gamedesc.txt and create .desktop files. My
immediate intention is to run this locally so that my XFCE main menu
acquires shortcuts for my locally compiled puzzle binaries, but I
expect the script could probably be adapted for systemwide
distribution use if any distribution hasn't already done this job in
their own way by now.

[originally from svn r9859]

--- /dev/null
+++ b/desktop.pl
@@ -1,0 +1,51 @@
+#!/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.
+#
+# (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) = split /:/, $_;
+
+    open my $desktop, ">", "$outdir/$id.desktop"
+        or die "$outdir/$id.desktop: open: $!\n";
+
+    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=$bindir/$id\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";
+}