added a status command

This commit is contained in:
vaxerski 2021-11-24 19:17:13 +01:00
parent c8553387bb
commit a7f53b5dfa
4 changed files with 29 additions and 6 deletions

View File

@ -13,6 +13,9 @@ max_fps=60
col.active_border=0x77ff3333
col.inactive_border=0x77222222
# status command
status_command=date +%a,\ %b\ %Y\ \ %I:%M\ %p
# animations
anim.enabled=1
anim.speed=8

View File

@ -169,12 +169,15 @@ void CStatusBar::draw() {
drawnWorkspaces++;
}
// Draw time to the right
std::string TIME = exec("date +%I:%M\\ %p");
TIME = TIME.substr(0, TIME.length() - 1);
xcb_image_text_8(g_pWindowManager->DisplayConnection, TIME.length(), m_iPixmap,
m_mContexts["BASETEXT"].GContext, m_vecSize.x - getTextWidth(TIME, m_mContexts["BASETEXT"].Font), (m_vecSize.y - (m_vecSize.y - 10) / 2),
TIME.c_str());
// Draw STATUS to the right
std::string STATUS = exec(m_szStatusCommand.c_str());
STATUS = STATUS.substr(0, (STATUS.length() > 0 ? STATUS.length() - 1 : 9999999));
if (STATUS != "") {
xcb_image_text_8(g_pWindowManager->DisplayConnection, STATUS.length(), m_iPixmap,
m_mContexts["BASETEXT"].GContext, m_vecSize.x - getTextWidth(STATUS, m_mContexts["BASETEXT"].Font), (m_vecSize.y - (m_vecSize.y - 10) / 2),
STATUS.c_str());
}
xcb_flush(g_pWindowManager->DisplayConnection);

View File

@ -15,6 +15,7 @@ public:
EXPOSED_MEMBER(WindowID, xcb_window_t, i);
EXPOSED_MEMBER(MonitorID, int, i);
EXPOSED_MEMBER(StatusCommand, std::string, sz); // TODO: make the bar better
void draw();
void setup(int MonitorID);

View File

@ -19,6 +19,8 @@ void ConfigManager::init() {
configValues["bar_monitor"].intValue = 0;
configValues["bar_height"].intValue = 15;
configValues["status_command"].strValue = "date +%I:%M\\ %p"; // Time
// Set Colors ARGB
configValues["col.active_border"].intValue = 0x77FF3333;
@ -72,6 +74,14 @@ void handleBind(const std::string& command, const std::string& value) {
KeybindManager::keybinds.push_back(Keybind(mod, KEY, COMMAND, dispatcher));
}
void handleRawExec(const std::string& command, const std::string& args) {
exec(args.c_str());
}
void handleStatusCommand(const std::string& command, const std::string& args) {
g_pWindowManager->statusBar.setStatusCommand(args);
}
void parseLine(std::string& line) {
// first check if its not a comment
const auto COMMENTSTART = line.find_first_of('#');
@ -95,6 +105,12 @@ void parseLine(std::string& line) {
if (COMMAND == "bind") {
handleBind(COMMAND, VALUE);
return;
} else if (COMMAND == "exec") {
handleRawExec(COMMAND, VALUE);
return;
} else if (COMMAND == "status_command") {
handleStatusCommand(COMMAND, VALUE);
return;
}
if (ConfigManager::configValues.find(COMMAND) == ConfigManager::configValues.end())