summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorawy <awy@awy.one>2025-08-18 19:17:30 +0300
committerawy <awy@awy.one>2025-08-18 19:17:30 +0300
commitb3526d31b40dbdf37ea4b314c8e9aa94d39b7f8c (patch)
treef262a162e13d28f8915d09d9406f5c08f9729841 /src
init
Diffstat (limited to 'src')
-rw-r--r--src/stclock.c26
-rw-r--r--src/stmemory.c46
-rw-r--r--src/stmusic.c98
3 files changed, 170 insertions, 0 deletions
diff --git a/src/stclock.c b/src/stclock.c
new file mode 100644
index 0000000..00353d5
--- /dev/null
+++ b/src/stclock.c
@@ -0,0 +1,26 @@
+/* Copyright (C) 2025 awy <awy@awy.one>
+
+ stclock is free software: you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation,
+ either version 3 of the License, or (at your option) any later version.
+
+ stclock is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with stclock. If not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <time.h>
+#include <stdio.h>
+
+int main(void)
+{
+ time_t t = time(NULL);
+ struct tm *tm = localtime(&t);
+ printf("%02d:%02d", tm->tm_hour, tm->tm_min);
+ return 0;
+}
diff --git a/src/stmemory.c b/src/stmemory.c
new file mode 100644
index 0000000..baf2c4b
--- /dev/null
+++ b/src/stmemory.c
@@ -0,0 +1,46 @@
+/* Copyright (C) 2025 awy <awy@awy.one>
+
+ stmemory is free software: you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation,
+ either version 3 of the License, or (at your option) any later version.
+
+ stmemory is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with stmemory. If not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <stdio.h>
+
+// TODO: Memory hogs on left click using signals
+
+int main(void)
+{
+ FILE *meminfo;
+ char buff[100];
+ long memtotal, memavail = 0;
+
+ meminfo = fopen("/proc/meminfo", "r");
+
+ if (meminfo == NULL) {
+ puts("Error opening file");
+ return 1;
+ }
+
+ fgets(buff, sizeof(buff), meminfo);
+ sscanf(buff + 9, "%ld", &memtotal);
+
+ fgets(buff, sizeof(buff), meminfo);
+ fgets(buff, sizeof(buff), meminfo);
+ sscanf(buff + 13, "%ld", &memavail);
+
+ printf("%ldMB", (memtotal - memavail) / 1024 );
+
+ fclose(meminfo);
+
+ return 0;
+}
diff --git a/src/stmusic.c b/src/stmusic.c
new file mode 100644
index 0000000..64a7939
--- /dev/null
+++ b/src/stmusic.c
@@ -0,0 +1,98 @@
+/* Copyright (C) 2025 awy <awy@awy.one>
+
+ stmusic is free software: you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation,
+ either version 3 of the License, or (at your option) any later version.
+
+ stmusic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public
+ License along with stmusic. If not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <mpd/client.h>
+#include <stdio.h>
+
+int main(void)
+{
+ struct mpd_connection *conn;
+ struct mpd_status *status;
+ struct mpd_song *song;
+
+ // Connect to MPD (default: localhost:6600)
+ conn = mpd_connection_new(NULL, 0, 30000);
+ if (mpd_connection_get_error(conn) != MPD_ERROR_SUCCESS) {
+ fprintf(stderr, "MPD connection error: %s\n",
+ mpd_connection_get_error_message(conn));
+ return 1;
+ }
+
+ // Get MPD status
+ status = mpd_run_status(conn);
+ if (!status) {
+ fprintf(stderr, "Failed to get status: %s\n",
+ mpd_connection_get_error_message(conn));
+ mpd_connection_free(conn);
+ return 1;
+ }
+
+ enum mpd_state st = mpd_status_get_state(status);
+
+ // Don't print anything if mpd is stopped
+ if (st == MPD_STATE_STOP) {
+ return 0;
+ }
+
+ if (st == MPD_STATE_PAUSE) { printf(" "); };
+
+ // Get current song
+ song = mpd_run_current_song(conn);
+
+ if (song) {
+ const char *artist = mpd_song_get_tag(song, MPD_TAG_ARTIST, 0);
+ const char *title = mpd_song_get_tag(song, MPD_TAG_TITLE, 0);
+ printf("%s - %s",
+ artist ? artist : "unknown",
+ title ? title : "unknown");
+ mpd_song_free(song);
+ }
+
+ if (mpd_status_get_repeat(status)) { printf(" "); };
+ if (mpd_status_get_random(status)) { printf(" "); };
+
+ enum mpd_consume_state consumest = mpd_status_get_consume_state(status);
+ switch (consumest) {
+ case MPD_CONSUME_ONESHOT:
+ printf(" 󰮯 󰇊");
+ break;
+ case MPD_CONSUME_ON:
+ printf(" 󰮯");
+ break;
+ case MPD_CONSUME_UNKNOWN:
+ break;
+ case MPD_CONSUME_OFF:
+ break;
+ }
+
+ enum mpd_single_state singlest = mpd_status_get_single_state(status);
+ switch (singlest) {
+ case MPD_SINGLE_ONESHOT:
+ printf(" 󰇊");
+ break;
+ case MPD_SINGLE_ON:
+ printf(" 󰎤");
+ break;
+ case MPD_CONSUME_UNKNOWN:
+ break;
+ case MPD_CONSUME_OFF:
+ break;
+ }
+
+ mpd_status_free(status);
+ mpd_connection_free(conn);
+ return 0;
+}