alpha
Login
or
Join now
robinwobin.dev
/
cdl
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
This repository has no description
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
meow: styling & formatting
author
robin
date
1 week ago
(Jul 15, 2026, 6:36 PM +0200)
commit
92d0b254
92d0b2541ca01998b35bcb2fc8f538498d8222f8
parent
e3262837
e326283703789b7ca9c99974849a9c3d75652f2c
change-id
prqzqxxt
prqzqxxtkolvzuuozzpqkqunoozxqklv
+77
-43
3 changed files
Expand all
Collapse all
Unified
Split
src
ansi.zig
ascii.txt
main.zig
+3
src/ansi.zig
View file
Reviewed
···
34
34
white,
35
35
default,
36
36
37
37
+
pub fn int(n: u8) Color {
38
38
+
return @enumFromInt(n);
39
39
+
}
37
40
pub fn foreground(self: Color) u8 {
38
41
return @intFromEnum(self) + 30;
39
42
}
+4
-4
src/ascii.txt
View file
Reviewed
···
1
1
-
へ ♡ ╱|、
2
2
-
૮ - ՛) (` - 7
3
3
-
/ ⁻ ៸| |、⁻〵
4
4
-
乀(ˍ, ل ل じしˍ,)ノ
1
1
+
2
2
+
∩__∩
3
3
+
(„• ֊ •„)
4
4
+
U U
+70
-39
src/main.zig
View file
Reviewed
···
2
2
3
3
const cdl = @import("cdl");
4
4
5
5
+
const ansi = @import("ansi.zig");
6
6
+
5
7
const ascii_raw = @embedFile("ascii.txt");
6
8
const ascii = blk: {
7
9
var ar: []const []const u8 = &.{};
···
9
11
while (it.next()) |line| if (line.len != 0) {
10
12
ar = ar ++ .{line};
11
13
};
12
12
-
break :blk ar;
13
13
-
};
14
14
-
15
15
-
const cols = blk: {
16
16
-
var ar: []const u8 = &.{};
17
17
-
for (0..8) |i| {
18
18
-
if (i != 0) ar = ar ++ " ";
19
19
-
ar = ar ++ "●";
20
20
-
}
21
14
break :blk ar;
22
15
};
23
16
···
43
36
const nosname = try cdl.info.osname();
44
37
45
38
try term.writeascii();
46
46
-
if (nuser) |v|
47
47
-
try term.writefmtn(
48
48
-
\\ host {s}@{s}
49
49
-
, .{ v, hostname })
50
50
-
else
51
51
-
try term.writefmtn(
52
52
-
\\ host {s}
53
53
-
, .{hostname});
54
54
-
if (nosname) |v|
39
39
+
try term.writekeyn(" host ", .green);
40
40
+
try ansi.fg(term.writer, .cyan);
41
41
+
if (nuser) |v| {
42
42
+
try term.writefmtn("{s}", .{v});
43
43
+
try ansi.fg_bright(term.writer, .black);
44
44
+
try term.writer.writeByte('@');
45
45
+
try ansi.fg(term.writer, .cyan);
46
46
+
try term.writefmtn("{s}", .{hostname});
47
47
+
} else try term.writefmtn("{s}", .{hostname});
48
48
+
try ansi.style(term.writer, .reset);
49
49
+
if (nosname) |v| {
50
50
+
try ansi.fg(term.writer, .white);
55
51
try term.writefmtn(
56
52
\\ ({s})
57
53
, .{v});
54
54
+
try ansi.style(term.writer, .reset);
55
55
+
}
58
56
try term.writer.writeByte('\n');
59
57
try term.writer.flush();
60
58
59
59
+
try term.writeascii();
60
60
+
try term.writekeyn(" ├ ", .yellow);
61
61
if (nshell) |shell|
62
62
-
if (cdl.info.terminal()) |v|
63
63
-
try term.writefmt(
64
64
-
\\ ├ {s} + {s}
65
65
-
, .{ v, shell })
66
66
-
else
67
67
-
try term.writefmt(
68
68
-
\\ ├ {s}
69
69
-
, .{shell});
62
62
+
if (cdl.info.terminal()) |v| {
63
63
+
try term.writefmtn("{s}", .{v});
64
64
+
try ansi.fg_bright(term.writer, .black);
65
65
+
try term.writer.writeAll(" + ");
66
66
+
try ansi.style(term.writer, .reset);
67
67
+
try term.writefmtn("{s}", .{shell});
68
68
+
} else try term.writefmtn("{s}", .{shell});
69
69
+
try term.writer.writeByte('\n');
70
70
+
try term.writer.flush();
70
71
71
71
-
if (cdl.info.desktop()) |desktop|
72
72
-
if (cdl.info.session()) |v|
73
73
-
try term.writefmt(
74
74
-
\\ ├ {s} ({s})
75
75
-
, .{ desktop, v })
76
76
-
else
77
77
-
try term.writefmt(
78
78
-
\\ ├ {s}
79
79
-
, .{desktop});
72
72
+
try term.writeascii();
73
73
+
try term.writekeyn(" ├ ", .blue);
74
74
+
if (cdl.info.desktop()) |desktop| {
75
75
+
try term.writefmtn("{s}", .{desktop});
76
76
+
if (cdl.info.session()) |v| {
77
77
+
try ansi.fg(term.writer, .white);
78
78
+
try term.writefmtn(" ({s})", .{v});
79
79
+
try ansi.style(term.writer, .reset);
80
80
+
}
81
81
+
}
82
82
+
try term.writer.writeByte('\n');
83
83
+
try term.writer.flush();
80
84
85
85
+
try term.writeascii();
86
86
+
try term.writekeyn(" ├ ", .magenta);
81
87
if (cdl.info.editor()) |v|
82
82
-
try term.writefmt(
83
83
-
\\ ├ {s}
84
84
-
, .{v});
88
88
+
try term.writefmtn("{s}", .{v});
89
89
+
try term.writer.writeByte('\n');
90
90
+
try term.writer.flush();
85
91
86
86
-
try term.write(" └ " ++ cols);
92
92
+
var cols_buf: [0x100]u8 = undefined;
93
93
+
const cols = blk: {
94
94
+
var w: std.Io.Writer = .fixed(&cols_buf);
95
95
+
for (0..8) |i| {
96
96
+
if (i != 0) try w.writeByte(' ');
97
97
+
try ansi.fg(&w, .int(@intCast(i)));
98
98
+
try w.writeAll("●");
99
99
+
}
100
100
+
break :blk w.buffered();
101
101
+
};
102
102
+
103
103
+
try term.writeascii();
104
104
+
try term.writekeyn(" └ ", .cyan);
105
105
+
try term.writefmtn("{s}", .{cols});
106
106
+
try term.writer.writeByte('\n');
107
107
+
try term.writer.flush();
87
108
88
109
try term.writer.flush();
89
110
}
···
132
153
defer cdl.gpa.free(buf);
133
154
try writer.writeAll(buf);
134
155
}
156
156
+
pub fn writekeyn(buf: []const u8, c: ansi.Color) !void {
157
157
+
try ansi.fg(term.writer, c);
158
158
+
try ansi.style(term.writer, .bold);
159
159
+
try term.writer.writeAll(buf);
160
160
+
try ansi.style(term.writer, .reset);
161
161
+
}
135
162
136
163
var i: usize = 0;
137
164
pub fn writeascii() !void {
165
165
+
try ansi.fg(writer, .white);
166
166
+
138
167
defer i += 1;
139
168
140
169
const n = blk: {
···
146
175
break :blk longest - len;
147
176
};
148
177
for (0..n + base_padding) |_| try writer.writeByte(' ');
178
178
+
179
179
+
try ansi.style(writer, .reset);
149
180
}
150
181
};