summaryrefslogtreecommitdiff
path: root/xnap.c
diff options
context:
space:
mode:
authoruint <abhinav.prsai@gmail.com>2025-12-14 17:59:11 +0000
committeruint <abhinav.prsai@gmail.com>2025-12-14 17:59:11 +0000
commit14f6df4a92102f3bc108e70f4f13084c1f33fcd2 (patch)
tree82c6839a4f3aae25d45812e41561edec2f044c02 /xnap.c
parent6c224626ca8b1f158659483b01300fcec9f5973d (diff)
add boilerplate for arguments
Diffstat (limited to 'xnap.c')
-rw-r--r--xnap.c70
1 files changed, 64 insertions, 6 deletions
diff --git a/xnap.c b/xnap.c
index 97560b7..cfc9264 100644
--- a/xnap.c
+++ b/xnap.c
@@ -1,17 +1,29 @@
#include <stdlib.h>
#include <stdio.h>
+#include <string.h>
-#include <X11/X.h>
#include <X11/cursorfont.h>
-#include <X11/Xlib.h>
#include <X11/keysym.h>
+#include <X11/X.h>
+#include <X11/Xlib.h>
#include <X11/Xutil.h>
+#ifdef XINERAMA
+#include <X11/extensions/Xinerama.h>
+#endif
+
#include "config.h"
#define MIN(x, y) (x < y ? x : y)
#define MAX(x, y) (x > y ? x : y)
+enum mode {
+ MODE_SEL,
+ MODE_FLL,
+ MODE_SCR,
+ MODE_WIN
+};
+
struct pointer_t {
int ret;
@@ -24,19 +36,47 @@ struct pointer_t {
int y1;
};
+void capfull(void);
+void capscr(void);
+void capsel(void);
+void capwin(void);
unsigned char channel(unsigned long px, Mask m);
void compimg(void);
void die(const char* s);
void mkppm(XImage* img);
+void parseargs(int argc, char** argv);
void quit(Bool ex);
void run(void);
void setup(void);
Display* dpy = NULL;
Window root = None;
+XImage* img = NULL;
int scr = -1;
+
+enum mode mode = MODE_SEL;
+int selscr = -1;
struct pointer_t p = {0};
-XImage* img = NULL;
+
+void capfull(void)
+{
+
+}
+
+void capscr(void)
+{
+
+}
+
+void capsel(void)
+{
+
+}
+
+void capwin(void)
+{
+
+}
unsigned char channel(unsigned long px, Mask m)
{
@@ -107,6 +147,26 @@ void mkppm(XImage* img)
fputc(channel(px, img->blue_mask), out);
}
}
+
+ fflush(stdout);
+}
+
+void parseargs(int argc, char** argv)
+{
+ for (int i = 1; i < argc; i++) {
+ if (!strcmp(argv[i], "-f"))
+ mode = MODE_FLL;
+
+ else if (!strcmp(argv[i], "-w"))
+ mode = MODE_WIN;
+
+ else if (!strcmp(argv[i], "-s") && i+1 < argc) {
+ mode = MODE_SCR;
+ selscr = atoi(argv[++i]);
+ }
+ else
+ die("usage: xnap [-f | -w | -s N]");
+ }
}
void quit(Bool ex)
@@ -168,9 +228,7 @@ void setup(void)
int main(int argc, char** argv)
{
- (void) argc;
- (void) argv;
-
+ parseargs(argc, argv);
setup();
run();
quit(True); /* unreachable */