line length compliant
7 KiB
Executable file
Extensive code documentation
Some of spmenu's code documented. If you want to hack on the project, this should be useful. Note that these may be renamed in the future to make the codebase easier to understand and make changes to. Also note that this is definitely not a complete list. Contributions that help expand this would be greatly appreciated.
-
Position and width/height variables
-
bh
- Menu height divided by lines gets you
bh
. The name comes from dwm'sbh
meaning 'bar height'. This is the height of each item in the list.
- Menu height divided by lines gets you
-
mh
- Menu height (or height of the window)
- Use
resizeclient()
to resize to this.
-
mw
- Menu width (or width of the window)
- Use
resizeclient()
to resize to this. 2 * borderwidth
is removed frommw
(2* because we have two sides)2 * sp
is removed frommw
(2* because we have two sides)
-
x
- X position, functions like
drw_text
use this. - If you set this in bar drawing functions, you must apply the same
to
buttonpress()
, otherwise clicks will be offset.
- X position, functions like
-
y
- Y position, functions like
drw_text
use this. - If you set this in bar drawing functions, you must apply the same
to
buttonpress()
, otherwise clicks will be offset.
- Y position, functions like
-
ev.x
- NOTE: X11 only
- X position where you clicked. This is used in the
buttonpress()
function to check where you clicked.
-
ev.y
- NOTE: X11 only
- Y position where you clicked. This is used in the
buttonpress()
function to check where you clicked.
-
ex
- Wayland version of
ev.x
(Seelibs/wl/wayland.c
)
- Wayland version of
-
ey
- Wayland version of
ev.y
(Seelibs/wl/wayland.c
)
- Wayland version of
-
w
- Width of something, this is passed to
drw_text()
for example, but you may override this.
- Width of something, this is passed to
-
plw
- This is the width of the powerline arrow. It must be added on in
the
buttonpress()
and draw functions.
- This is the width of the powerline arrow. It must be added on in
the
-
vp
- Vertical padding, this is initially added on in the
create_window()
function.
- Vertical padding, this is initially added on in the
-
sp
- Horizontal padding, this is initially added on in the
create_window()
function.
- Horizontal padding, this is initially added on in the
-
promptw
- Width of the prompt text, this is going to be the same as
TEXTW(prompt)
.
- Width of the prompt text, this is going to be the same as
-
inputw
- Width of the input text.
-
fh
- Font height. Used to calculate the height of the cursor. See
drawcaret()
.
- Font height. Used to calculate the height of the cursor. See
-
menuposition
- Integer the user is meant to configure. If it's set to
0
, spmenu will be put on the bottom of the screen. If it's set to1
it will be put on the top of the screen. If it's2
it will be put in the center of the screen.
- Integer the user is meant to configure. If it's set to
-
wa.width
- NOTE: X11 only
- Window width with Xinerama,
wa
isXWindowAttributes
.
-
wa.height
- NOTE: X11 only
- Window height with Xinerama,
wa
isXWindowAttributes
.
-
state.width
- Wayland
wa.width
.
- Wayland
-
state.height
- Wayland
wa.height
.
- Wayland
-
imageheight
- Image height, This is not the height of the image, it is the height that the image will be scaled to fit.
-
imagewidth
- Image width, This is not the width of the image, it is the width that the image will be scaled to fit.
-
imagegaps
- Image gaps, this is extra space added around the image.
-
imageh
- Usually the same as
imageheight
. This is whatimageheight
is initially set to.
- Usually the same as
-
imagew
- Usually the same as
imagewidth
. This is whatimagewidth
is initially set to.
- Usually the same as
-
imageg
- Usually the same as
imagegaps
. This is whatimagegaps
is initially set to.
- Usually the same as
-
longestedge
- As the name implies, it is the longest (highest value) of
imageheight
andimagewidth
.
- As the name implies, it is the longest (highest value) of
-
numberWidth
- Integer set in some functions, it is simply
TEXTW(numbers)
if the match count isn't hidden.
- Integer set in some functions, it is simply
-
modeWidth
- Integer set in some functions, it is simply
TEXTW(modetext)
if the mode indicator isn't hidden.
- Integer set in some functions, it is simply
-
larrowWidth
- Integer set in some functions, it is simply
TEXTW(leftarrow)
if the left arrow isn't hidden.
- Integer set in some functions, it is simply
-
rarrowWidth
- Integer set in some functions, it is simply
TEXTW(rightarrow)
if the right arrow isn't hidden.
- Integer set in some functions, it is simply
-
powerlinewidth
- Integer set in some functions, it is simply
plw / 2
if powerlines are enabled.
- Integer set in some functions, it is simply
-
curpos
- Cursor/caret position. When text is added to the input, the width of that text is added to this.
-
Cairo functions
Most of these are in libs/libdrw/drw.c
and libs/libdrw/drw.h
-
cairo_set_source_hex(cairo_t* cr, const char *col, int alpha);
- This function converts hex #RRGGBB colors into RGB format and sets the cairo color to the color.
-
Drawable abstraction functions
Most of these are in libs/libdrw/drw.c
and libs/libdrw/drw.h
.
-
drw_create_x11(Display *dpy, int screen, Window win, unsigned int w, unsigned int h, Visual *visual, unsigned int depth, Colormap cmap);
- NOTE: X11 specific.
- This function creates a drawable from
Display *dpy
,Drw
. Think of it as a canvas.
-
drw_create_wl(int protocol);
- NOTE: Wayland specific.
- This function creates a Cairo drawable and
Drw *
that we can then draw rectangles and text on.
-
drw_resize(Drw *drw, unsigned int w, unsigned int h)
- This function resizes the drawable to the dimensions passed as
arguments (
w
,h
).
- This function resizes the drawable to the dimensions passed as
arguments (
-
drw_free(Drw *drw);
- This function will free the drawable from memory. It is usually called in
cleanup functions like
cleanup()
so most of the time you don't need to use this.
- This function will free the drawable from memory. It is usually called in
cleanup functions like
-
Font abstraction functions
Most of these are in libs/libdrw/drw.c
and libs/libdrw/drw.h
.
-
drw_font_create(Drw* drw, char *font[], size_t fontcount);
- This function will return a font Cairo and Pango can use.
-
drw_font_free(Fnt *set);
- This function will free the font from memory.
-
drw_fontset_getwidth_clamp(Drw *drw, const char *text, unsigned int n, Bool markup);
- This function returns the smallest value out of the passed argument
n
and the length of the text drawn. The text is not actually drawn though.
- This function returns the smallest value out of the passed argument
-
drw_font_getwidth(Drw *drw, const char *text, Bool markup);
- This function returns the width of drawn text. The text is not actually drawn though.
-
drw_font_getexts(Fnt *font, const char *text, unsigned int len, unsigned int *w, unsigned int *h, Bool markup);
- This function returns the length of the text with the used font.
-
Cursor abstraction functions
-
drw_cur_create(Drw *drw, int shape);
- This function creates and returns a cursor.
-
drw_cur_free(Drw *drw, Cur *cursor);
- This function will free the cursor from memory.
-
Drawing functions
-
drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled , int invert);
- Draws a simple rectangle. Used in other functions to create more useful shapes, such as a cursor.
-
drw_text(Drw *drw, int x, int y, unsigned int w, unsigned int h, unsigned int lpad, const char *text, int invert, Bool markup);
- Draws text on the drawable using the font created.
const char *text
contains the text itself.
- Draws text on the drawable using the font created.
-
Map functions
-
drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h);
- Maps the drawable. (makes it visible)