Introduction
Introduction Statistics Contact Development Disclaimer Help
st-anygeometry-0.8.1.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
st-anygeometry-0.8.1.diff (2817B)
---
1 From 6a5a862569912e34febe2dbd5244062013840204 Mon Sep 17 00:00:00 2001
2 From: =?UTF-8?q?Jos=C3=A9=20Miguel=20S=C3=A1nchez=20Garc=C3=ADa?=
3 <[email protected]>
4 Date: Thu, 13 Aug 2020 11:02:01 +0000
5 Subject: [PATCH] add -G to set pixel-based geometry
6
7 ---
8 config.def.h | 13 +++++++++++++
9 x.c | 36 ++++++++++++++++++++++++++++++++----
10 2 files changed, 45 insertions(+), 4 deletions(-)
11
12 diff --git a/config.def.h b/config.def.h
13 index 6f05dce..bea316a 100644
14 --- a/config.def.h
15 +++ b/config.def.h
16 @@ -141,6 +141,12 @@ static unsigned int defaultrcs = 257;
17 */
18 static unsigned int cursorshape = 2;
19
20 +/*
21 + * Whether to use pixel geometry or cell geometry
22 + */
23 +
24 +static Geometry geometry = CellGeometry;
25 +
26 /*
27 * Default columns and rows numbers
28 */
29 @@ -148,6 +154,13 @@ static unsigned int cursorshape = 2;
30 static unsigned int cols = 80;
31 static unsigned int rows = 24;
32
33 +/*
34 + * Default width and height (including borders!)
35 + */
36 +
37 +static unsigned int width = 564;
38 +static unsigned int height = 364;
39 +
40 /*
41 * Default colour and shape of the mouse cursor
42 */
43 diff --git a/x.c b/x.c
44 index 210f184..29e35d0 100644
45 --- a/x.c
46 +++ b/x.c
47 @@ -45,6 +45,11 @@ typedef struct {
48 signed char appcursor; /* application cursor */
49 } Key;
50
51 +typedef enum {
52 + PixelGeometry,
53 + CellGeometry
54 +} Geometry;
55 +
56 /* X modifiers */
57 #define XK_ANY_MOD UINT_MAX
58 #define XK_NO_MOD 0
59 @@ -1096,7 +1101,7 @@ xicdestroy(XIC xim, XPointer client, XPointer call)
60 }
61
62 void
63 -xinit(int cols, int rows)
64 +xinit(int w, int h)
65 {
66 XGCValues gcvalues;
67 Cursor cursor;
68 @@ -1121,8 +1126,16 @@ xinit(int cols, int rows)
69 xloadcols();
70
71 /* adjust fixed window geometry */
72 - win.w = 2 * borderpx + cols * win.cw;
73 - win.h = 2 * borderpx + rows * win.ch;
74 + switch (geometry) {
75 + case CellGeometry:
76 + win.w = 2 * borderpx + w * win.cw;
77 + win.h = 2 * borderpx + h * win.ch;
78 + break;
79 + case PixelGeometry:
80 + win.w = w;
81 + win.h = h;
82 + break;
83 + }
84 if (xw.gm & XNegative)
85 xw.l += DisplayWidth(xw.dpy, xw.scr) - win.w - 2;
86 if (xw.gm & YNegative)
87 @@ -2001,6 +2014,12 @@ main(int argc, char *argv[])
88 case 'g':
89 xw.gm = XParseGeometry(EARGF(usage()),
90 &xw.l, &xw.t, &cols, &rows);
91 + geometry = CellGeometry;
92 + break;
93 + case 'G':
94 + xw.gm = XParseGeometry(EARGF(usage()),
95 + &xw.l, &xw.t, &width, &height);
96 + geometry = PixelGeometry;
97 break;
98 case 'i':
99 xw.isfixed = 1;
100 @@ -2037,10 +2056,19 @@ run:
101
102 setlocale(LC_CTYPE, "");
103 XSetLocaleModifiers("");
104 + switch (geometry) {
105 + case CellGeometry:
106 + xinit(cols, rows);
107 + break;
108 + case PixelGeometry:
109 + xinit(width, height);
110 + cols = (win.w - 2 * borderpx) / win.cw;
111 + rows = (win.h - 2 * borderpx) / win.ch;
112 + break;
113 + }
114 cols = MAX(cols, 1);
115 rows = MAX(rows, 1);
116 tnew(cols, rows);
117 - xinit(cols, rows);
118 xsetenv();
119 selinit();
120 run();
121 --
122 2.28.0
123
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.