From: Nick Bowler Date: Sun, 1 Jun 2008 01:01:44 +0000 (-0400) Subject: Merge branch 'master' of git://git.draconx.com/fvwmconf X-Git-Url: https://git.draconx.ca/gitweb/fvwmconf.git/commitdiff_plain/1f74c946d08b1f1f83e5ae839e09b0b0c9c0d9aa?hp=36db09fb98485d59de63daee3f8de1fe4b0ec728 Merge branch 'master' of git://git.draconx.com/fvwmconf --- diff --git a/scripts/C/Makefile b/scripts/C/Makefile index 342509f..ee422c6 100644 --- a/scripts/C/Makefile +++ b/scripts/C/Makefile @@ -1,7 +1,7 @@ -CFLAGS = -O2 -Wall -Wextra -Wno-sign-compare +CFLAGS = -O2 -Wall -Wextra -Wno-sign-compare -Wno-missing-field-initializers LDFLAGS = -CC = c89 +CC = c99 LD = $(CC) all: xaspect diff --git a/scripts/C/xaspect.c b/scripts/C/xaspect.c index e10f506..3e07caa 100644 --- a/scripts/C/xaspect.c +++ b/scripts/C/xaspect.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #define MKASPECT(w, h) { (double)w/h, #w ":" #h } @@ -57,17 +58,38 @@ char *testaspect(xcb_screen_t *screen) return best; } +struct options { + char *displayname; + int showdimensions; +} *parseoptions(int argc, char **argv) +{ + static struct options opts = { 0 }; + int i; + + for (i = 1; i < argc; i++) { + if (strcmp(argv[i], "-display") == 0) { + if (++i < argc) { + opts.displayname = argv[i]; + continue; + } + fprintf(stderr, "-display requires an argument\n"); + } else if (strcmp(argv[i], "-dimensions") == 0) { + opts.showdimensions = 1; + } + } + + return &opts; +} + int main(int argc, char **argv) { xcb_connection_t *display; xcb_screen_t *screen; - char *dpynam = NULL; int screen_num; - if (argc > 2 && strcmp(argv[1], "-display") == 0) - dpynam = argv[2]; + struct options *opts = parseoptions(argc, argv); - display = xcb_connect(dpynam, &screen_num); + display = xcb_connect(opts->displayname, &screen_num); if (xcb_connection_has_error(display)) { fprintf(stderr, "Failed to open display.\n"); xcb_disconnect(display); @@ -81,6 +103,10 @@ int main(int argc, char **argv) return EXIT_FAILURE; } + if (opts->showdimensions) { + printf("%" PRIu16 "x%" PRIu16 "-", + screen->width_in_pixels, screen->height_in_pixels); + } printf("%s\n", testaspect(screen)); xcb_disconnect(display); diff --git a/scripts/randombg.pl b/scripts/randombg.pl new file mode 100755 index 0000000..941ebe7 --- /dev/null +++ b/scripts/randombg.pl @@ -0,0 +1,21 @@ +#!/usr/bin/perl + +use strict; + +my $FVWM = (defined $ENV{FVWM_USERDIR}) ? $ENV{FVWM_USERDIR} + : $ENV{HOME}."/.fvwm"; + +die ("usage: randombg.pl ") if (! -d $ARGV[0]); + +open XASPECT, "-|", "$FVWM/scripts/C/xaspect", "-dimensions"; +my $aspect = ; +close XASPECT; +die ("Incompetent use of xaspect") if ($?); + +$aspect =~ s/(^\s*)|(\s*$)//g; + +opendir WALLPAPER, $ARGV[0]; +my @dir = grep(/\Q$aspect\E\.png$/, readdir WALLPAPER); +closedir WALLPAPER; + +print $ARGV[0] . "/" . $dir[int(rand(@dir))] . "\n";