+ram_used(const char *null)
+{
+ long free, total, buffers, cached, used;
+ FILE *fp;
+
+ if (!(fp = fopen("/proc/meminfo", "r"))) {
+ fprintf(stderr, "Error opening meminfo file.\n");
+ return smprintf(unknowntext);
+ }
+
+ fscanf(fp, "MemTotal: %ld kB\n", &total);
+ fscanf(fp, "MemFree: %ld kB\n", &free);
+ fscanf(fp, "MemAvailable: %ld kB\nBuffers: %ld kB\n", &buffers, &buffers);
+ fscanf(fp, "Cached: %ld kB\n", &cached);
+
+ fclose(fp);
+ used = total - free - buffers - cached;
+ return smprintf("%f", (float)used / 1024 / 1024);
+}
+
+char *
+run_command(const char* command)
+{
+ int good;
+ FILE *fp;
+ char buffer[64];
+
+ if (!(fp = popen(command, "r"))) {
+ fprintf(stderr, "Could not get command output for: %s.\n", command);
+ return smprintf(unknowntext);
+ }
+
+ fgets(buffer, sizeof(buffer) - 1, fp);
+ pclose(fp);
+ for (int i = 0 ; i != sizeof(buffer); i++) {
+ if (buffer[i] == '\0') {
+ good = 1;
+ break;
+ }
+ }
+ if (good)
+ buffer[strlen(buffer) - 1] = '\0';
+ return smprintf("%s", buffer);
+}
+
+char *
+temp(const char *file)
+{
+ int temperature;
+ FILE *fp;
+
+ if (!(fp = fopen(file, "r"))) {
+ fprintf(stderr, "Could not open temperature file.\n");
+ return smprintf(unknowntext);
+ }
+
+ fscanf(fp, "%d", &temperature);
+ fclose(fp);
+ return smprintf("%d°C", temperature / 1000);
+}
+
+char *
+uptime(const char *null)
+{
+ struct sysinfo info;
+ int hours = 0;
+ int minutes = 0;
+
+ sysinfo(&info);
+ hours = info.uptime / 3600;
+ minutes = (info.uptime - hours * 3600 ) / 60;
+
+ return smprintf("%dh %dm", hours, minutes);
+}
+
+char *
+username(const char *null)
+{
+ register struct passwd *pw;
+ register uid_t uid;
+
+ uid = geteuid();
+ pw = getpwuid(uid);
+
+ if (pw)
+ return smprintf("%s", pw->pw_name);
+ else {
+ fprintf(stderr, "Could not get username.\n");
+ return smprintf(unknowntext);
+ }
+
+ return smprintf(unknowntext);
+}
+
+char *
+uid(const char *null)
+{
+ register uid_t uid;
+
+ uid = geteuid();
+
+ if (uid)
+ return smprintf("%d", uid);
+ else {
+ fprintf(stderr, "Could not get uid.\n");
+ return smprintf(unknowntext);
+ }
+
+ return smprintf(unknowntext);
+}
+
+
+char *
+vol_perc(const char *soundcard)