Added -w cmdline option

This commit is contained in:
Bert 2011-01-27 16:15:43 +01:00
parent e8a503bcbb
commit 17e2a795bb
5 changed files with 46 additions and 10 deletions

View File

@ -28,8 +28,10 @@ check and change them, so that they fit your needs.
Usage
-----
sxiv has no useful command line options yet, but they will be added in the next
releases. Right now, it simply displays all files given on the command line.
sxiv supports the following command-line options:
-w WIDTHxHEIGHT set window width to WIDTH and height to HEIGHT
(if HEIGHT is omitted, height is also set to WIDTH)
Use the following keys to control sxiv:

View File

@ -29,7 +29,7 @@ options_t _options;
const options_t *options = (const options_t*) &_options;
void print_usage() {
printf("usage: sxiv [-hv] FILES...\n");
printf("usage: sxiv [-hv] [-w WIDTH[xHEIGHT]] FILES...\n");
}
void print_version() {
@ -38,9 +38,13 @@ void print_version() {
}
void parse_options(int argc, char **argv) {
unsigned short w, h;
int opt;
while ((opt = getopt(argc, argv, "hv")) != -1) {
_options.winw = w = 0;
_options.winh = h = 0;
while ((opt = getopt(argc, argv, "hvw:")) != -1) {
switch (opt) {
case '?':
print_usage();
@ -51,9 +55,26 @@ void parse_options(int argc, char **argv) {
case 'v':
print_version();
exit(0);
case 'w':
if (!sscanf(optarg, "%hux%hu", &w, &h)) {
fprintf(stderr, "sxiv: invalid argument for option -w: %s\n",
optarg);
exit(1);
} else {
_options.winw = (int) w;
_options.winh = (int) h;
}
break;
}
}
if (!_options.winw) {
_options.winw = WIN_WIDTH;
_options.winh = WIN_HEIGHT;
} else if (!_options.winh) {
_options.winh = _options.winw;
}
_options.filenames = (const char**) argv + optind;
_options.filecnt = argc - optind;
}

View File

@ -22,6 +22,8 @@
typedef struct options_s {
const char **filenames;
int filecnt;
int winw;
int winh;
} options_t;
extern const options_t *options;

14
sxiv.1
View File

@ -4,6 +4,10 @@ sxiv \- Simple (or small or suckless) X Image Viewer
.SH SYNOPSIS
.B sxiv
.RB [ \-hv ]
[
.B \-w
.IB WIDTH x HEIGHT
]
.IR FILE ...
.SH DESCRIPTION
sxiv is a simple image viewer for X. It only has the most basic features
@ -18,6 +22,16 @@ Print brief usage information to standard output and exit.
.TP
.B \-v
Print version information to standard output and exit.
.TP
.BI "\-w " WIDTH x HEIGHT
Set window width to
.I WIDTH
and height to
.IR HEIGHT .
If
.I HEIGHT
is omitted, height is also set to
.IR WIDTH .
.SH KEYBOARD COMMANDS
.SS General
.TP

View File

@ -23,6 +23,7 @@
#include <X11/Xutil.h>
#include "sxiv.h"
#include "options.h"
#include "window.h"
GC bgc;
@ -53,12 +54,8 @@ void win_open(win_t *win) {
win->bgcol = bgcol.pixel;
win->pm = 0;
win->w = WIN_WIDTH;
win->h = WIN_HEIGHT;
if (win->w > e->scrw)
win->w = e->scrw;
if (win->h > e->scrh)
win->h = e->scrh;
win->w = MIN(options->winw, e->scrw);
win->h = MIN(options->winh, e->scrh);
win->x = (e->scrw - win->w) / 2;
win->y = (e->scrh - win->h) / 2;