271af3d474
* enhancement: update version printing format as mentioned in #253, version numbers can be confusing if you don't know or realize you're running SwayFX instead of standard sway. to fix this issue, I've updated the way we display versions, replacing "sway version X" to "swayfx version X", suffixed by the sway upstream version which swayfx is based upon. while not immediately displaying we come from swayfx in swaymsg/swaynag/swaybar, we do display we're based off a specific upstream sway version. note: this requires updating `meson.build` (currently `meson.build:181`) each time we rebase into a new sway version. Closes: Issue #253 Signed-off-by: Mazunki Hoksaas <rolferen@gmail.com> * reduce linelength --------- Signed-off-by: Mazunki Hoksaas <rolferen@gmail.com>
105 lines
2.3 KiB
C
105 lines
2.3 KiB
C
#define _POSIX_C_SOURCE 200809L
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <stdbool.h>
|
|
#include <getopt.h>
|
|
#include "swaybar/bar.h"
|
|
#include "ipc-client.h"
|
|
#include "log.h"
|
|
|
|
static struct swaybar swaybar;
|
|
|
|
void sig_handler(int signal) {
|
|
swaybar.running = false;
|
|
}
|
|
|
|
int main(int argc, char **argv) {
|
|
char *socket_path = NULL;
|
|
bool debug = false;
|
|
|
|
static const struct option long_options[] = {
|
|
{"help", no_argument, NULL, 'h'},
|
|
{"version", no_argument, NULL, 'v'},
|
|
{"socket", required_argument, NULL, 's'},
|
|
{"bar_id", required_argument, NULL, 'b'},
|
|
{"debug", no_argument, NULL, 'd'},
|
|
{0, 0, 0, 0}
|
|
};
|
|
|
|
const char *usage =
|
|
"Usage: swaybar [options...]\n"
|
|
"\n"
|
|
" -h, --help Show help message and quit.\n"
|
|
" -v, --version Show the version number and quit.\n"
|
|
" -s, --socket <socket> Connect to sway via socket.\n"
|
|
" -b, --bar_id <id> Bar ID for which to get the configuration.\n"
|
|
" -d, --debug Enable debugging.\n"
|
|
"\n"
|
|
" PLEASE NOTE that swaybar will be automatically started by sway as\n"
|
|
" soon as there is a 'bar' configuration block in your config file.\n"
|
|
" You should never need to start it manually.\n";
|
|
|
|
int c;
|
|
while (1) {
|
|
int option_index = 0;
|
|
c = getopt_long(argc, argv, "hvs:b:d", long_options, &option_index);
|
|
if (c == -1) {
|
|
break;
|
|
}
|
|
switch (c) {
|
|
case 's': // Socket
|
|
socket_path = strdup(optarg);
|
|
break;
|
|
case 'b': // Type
|
|
swaybar.id = strdup(optarg);
|
|
break;
|
|
case 'v':
|
|
printf("swaybar version " SWAY_VERSION " (based on sway " SWAY_ORIGINAL_VERSION ")\n");
|
|
exit(EXIT_SUCCESS);
|
|
break;
|
|
case 'd': // Debug
|
|
debug = true;
|
|
break;
|
|
default:
|
|
fprintf(stderr, "%s", usage);
|
|
exit(EXIT_FAILURE);
|
|
}
|
|
}
|
|
|
|
if (debug) {
|
|
sway_log_init(SWAY_DEBUG, NULL);
|
|
} else {
|
|
sway_log_init(SWAY_INFO, NULL);
|
|
}
|
|
|
|
if (!swaybar.id) {
|
|
sway_log(SWAY_ERROR, "No bar_id passed. "
|
|
"Provide --bar_id or let sway start swaybar");
|
|
return 1;
|
|
}
|
|
|
|
if (!socket_path) {
|
|
socket_path = get_socketpath();
|
|
if (!socket_path) {
|
|
sway_log(SWAY_ERROR, "Unable to retrieve socket path");
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
if (!bar_setup(&swaybar, socket_path)) {
|
|
free(socket_path);
|
|
return 1;
|
|
}
|
|
|
|
free(socket_path);
|
|
|
|
signal(SIGINT, sig_handler);
|
|
signal(SIGTERM, sig_handler);
|
|
|
|
swaybar.running = true;
|
|
bar_run(&swaybar);
|
|
bar_teardown(&swaybar);
|
|
return 0;
|
|
}
|