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]
This commit is contained in:
Simon Tatham
2013-06-08 16:50:28 +00:00
parent 5dda5cf1d0
commit 122800cce1

51
desktop.pl Executable file
View File

@ -0,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";
}