mirror of https://github.com/hyprwm/Hypr.git
Added icons to the status bar
This commit is contained in:
parent
acb177bf4d
commit
2d82458260
|
@ -19,12 +19,16 @@ Bar {
|
||||||
height=20
|
height=20
|
||||||
monitor=0
|
monitor=0
|
||||||
enabled=1
|
enabled=1
|
||||||
|
mod_pad_in=8
|
||||||
|
|
||||||
|
font.main=Noto Sans
|
||||||
|
font.secondary=Noto Sans
|
||||||
|
|
||||||
col.bg=0xff111111
|
col.bg=0xff111111
|
||||||
col.high=0xffff3333
|
col.high=0xffff3333
|
||||||
|
|
||||||
module=left,0xff8000ff,0xffffffff,1,workspaces
|
module=left,X,0xff8000ff,0xffffffff,1,workspaces
|
||||||
module=right,0xffffffff,0xff00ff33,1000,$date +%a,\ %b\ %Y\ \ %I:%M\ %p$
|
module=right,X,0xffffffff,0xff00ff33,1000,$date +%a,\ %b\ %Y\ \ %I:%M\ %p$
|
||||||
}
|
}
|
||||||
|
|
||||||
# colors
|
# colors
|
||||||
|
|
|
@ -210,8 +210,8 @@ void CStatusBar::destroy() {
|
||||||
m_pCairo = nullptr;
|
m_pCairo = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CStatusBar::getTextWidth(std::string text) {
|
int CStatusBar::getTextWidth(std::string text, std::string font) {
|
||||||
cairo_select_font_face(m_pCairo, "Noto Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
|
cairo_select_font_face(m_pCairo, font.c_str(), CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
|
||||||
cairo_set_font_size(m_pCairo, 12);
|
cairo_set_font_size(m_pCairo, 12);
|
||||||
|
|
||||||
cairo_text_extents_t textextents;
|
cairo_text_extents_t textextents;
|
||||||
|
@ -220,8 +220,8 @@ int CStatusBar::getTextWidth(std::string text) {
|
||||||
return textextents.width + 1 /* pad */;
|
return textextents.width + 1 /* pad */;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CStatusBar::drawText(Vector2D pos, std::string text, uint32_t color) {
|
void CStatusBar::drawText(Vector2D pos, std::string text, uint32_t color, std::string font) {
|
||||||
cairo_select_font_face(m_pCairo, "Noto Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
|
cairo_select_font_face(m_pCairo, font.c_str(), CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
|
||||||
cairo_set_font_size(m_pCairo, 12);
|
cairo_set_font_size(m_pCairo, 12);
|
||||||
cairo_set_source_rgba(m_pCairo, RED(color), GREEN(color), BLUE(color), ALPHA(color));
|
cairo_set_source_rgba(m_pCairo, RED(color), GREEN(color), BLUE(color), ALPHA(color));
|
||||||
cairo_move_to(m_pCairo, pos.x, pos.y);
|
cairo_move_to(m_pCairo, pos.x, pos.y);
|
||||||
|
@ -311,8 +311,8 @@ int CStatusBar::drawWorkspacesModule(SBarModule* mod, int off) {
|
||||||
|
|
||||||
drawCairoRectangle(Vector2D(off + m_vecSize.y * drawnWorkspaces, 0), Vector2D(m_vecSize.y, m_vecSize.y), WORKSPACE == MOUSEWORKSPACEID ? ConfigManager::getInt("bar:col.high") : ConfigManager::getInt("bar:col.bg"));
|
drawCairoRectangle(Vector2D(off + m_vecSize.y * drawnWorkspaces, 0), Vector2D(m_vecSize.y, m_vecSize.y), WORKSPACE == MOUSEWORKSPACEID ? ConfigManager::getInt("bar:col.high") : ConfigManager::getInt("bar:col.bg"));
|
||||||
|
|
||||||
drawText(Vector2D(off + m_vecSize.y * drawnWorkspaces + m_vecSize.y / 2.f - getTextWidth(workspaceName) / 2.f, getTextHalfY()),
|
drawText(Vector2D(off + m_vecSize.y * drawnWorkspaces + m_vecSize.y / 2.f - getTextWidth(workspaceName, ConfigManager::getString("bar:font.main")) / 2.f, getTextHalfY()),
|
||||||
workspaceName, WORKSPACE == MOUSEWORKSPACEID ? 0xFF111111 : 0xFFFFFFFF);
|
workspaceName, WORKSPACE == MOUSEWORKSPACEID ? 0xFF111111 : 0xFFFFFFFF, ConfigManager::getString("bar:font.main"));
|
||||||
|
|
||||||
drawnWorkspaces++;
|
drawnWorkspaces++;
|
||||||
}
|
}
|
||||||
|
@ -325,7 +325,7 @@ int CStatusBar::drawModule(SBarModule* mod, int off) {
|
||||||
if (mod->isPad)
|
if (mod->isPad)
|
||||||
return mod->pad;
|
return mod->pad;
|
||||||
|
|
||||||
const int PAD = 4;
|
const int PAD = ConfigManager::getInt("bar:mod_pad_in");
|
||||||
|
|
||||||
// check if we need to update
|
// check if we need to update
|
||||||
if (std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - mod->updateLast).count() > mod->updateEveryMs) {
|
if (std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now() - mod->updateLast).count() > mod->updateEveryMs) {
|
||||||
|
@ -337,7 +337,8 @@ int CStatusBar::drawModule(SBarModule* mod, int off) {
|
||||||
|
|
||||||
// We have the value, draw the module!
|
// We have the value, draw the module!
|
||||||
|
|
||||||
const auto MODULEWIDTH = getTextWidth(mod->valueCalculated) + PAD;
|
const auto MODULEWIDTH = getTextWidth(mod->valueCalculated, ConfigManager::getString("bar:font.main")) + PAD;
|
||||||
|
const auto ICONWIDTH = getTextWidth(mod->icon, ConfigManager::getString("bar:font.secondary"));
|
||||||
|
|
||||||
if (!MODULEWIDTH || mod->valueCalculated == "")
|
if (!MODULEWIDTH || mod->valueCalculated == "")
|
||||||
return 0; // empty module
|
return 0; // empty module
|
||||||
|
@ -348,16 +349,17 @@ int CStatusBar::drawModule(SBarModule* mod, int off) {
|
||||||
position = Vector2D(off, 0);
|
position = Vector2D(off, 0);
|
||||||
break;
|
break;
|
||||||
case RIGHT:
|
case RIGHT:
|
||||||
position = Vector2D(m_vecSize.x - off - MODULEWIDTH, 0);
|
position = Vector2D(m_vecSize.x - off - MODULEWIDTH - ICONWIDTH, 0);
|
||||||
break;
|
break;
|
||||||
case CENTER:
|
case CENTER:
|
||||||
position = Vector2D(m_vecSize.x / 2.f - MODULEWIDTH / 2.f, 0);
|
position = Vector2D(m_vecSize.x / 2.f - (MODULEWIDTH + ICONWIDTH) / 2.f, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
drawCairoRectangle(position, Vector2D(MODULEWIDTH, m_vecSize.y), mod->bgcolor);
|
drawCairoRectangle(position, Vector2D(MODULEWIDTH + ICONWIDTH, m_vecSize.y), mod->bgcolor);
|
||||||
|
|
||||||
drawText(position + Vector2D(PAD / 2, getTextHalfY()), mod->valueCalculated, mod->color);
|
drawText(position + Vector2D(PAD / 2, getTextHalfY()), mod->icon, mod->color, ConfigManager::getString("bar:font.secondary"));
|
||||||
|
drawText(position + Vector2D(PAD / 2 + ICONWIDTH, getTextHalfY()), mod->valueCalculated, mod->color, ConfigManager::getString("bar:font.main"));
|
||||||
|
|
||||||
return MODULEWIDTH;
|
return MODULEWIDTH + ICONWIDTH;
|
||||||
}
|
}
|
|
@ -21,6 +21,7 @@ enum ModuleAlignment {
|
||||||
struct SBarModule {
|
struct SBarModule {
|
||||||
ModuleAlignment alignment;
|
ModuleAlignment alignment;
|
||||||
std::string value;
|
std::string value;
|
||||||
|
std::string icon;
|
||||||
std::string valueCalculated = "";
|
std::string valueCalculated = "";
|
||||||
uint64_t color;
|
uint64_t color;
|
||||||
uint64_t bgcolor;
|
uint64_t bgcolor;
|
||||||
|
@ -67,9 +68,9 @@ private:
|
||||||
cairo_surface_t* m_pCairoSurface = nullptr;
|
cairo_surface_t* m_pCairoSurface = nullptr;
|
||||||
cairo_t* m_pCairo = nullptr;
|
cairo_t* m_pCairo = nullptr;
|
||||||
|
|
||||||
void drawText(Vector2D, std::string, uint32_t);
|
void drawText(Vector2D, std::string, uint32_t, std::string);
|
||||||
void drawCairoRectangle(Vector2D, Vector2D, uint32_t);
|
void drawCairoRectangle(Vector2D, Vector2D, uint32_t);
|
||||||
int getTextWidth(std::string);
|
int getTextWidth(std::string, std::string);
|
||||||
int drawModule(SBarModule*, int);
|
int drawModule(SBarModule*, int);
|
||||||
int drawWorkspacesModule(SBarModule*, int);
|
int drawWorkspacesModule(SBarModule*, int);
|
||||||
int getTextHalfY();
|
int getTextHalfY();
|
||||||
|
|
|
@ -22,15 +22,16 @@ void ConfigManager::init() {
|
||||||
configValues["bar:height"].intValue = 15;
|
configValues["bar:height"].intValue = 15;
|
||||||
configValues["bar:col.bg"].intValue = 0xFF111111;
|
configValues["bar:col.bg"].intValue = 0xFF111111;
|
||||||
configValues["bar:col.high"].intValue = 0xFFFF3333;
|
configValues["bar:col.high"].intValue = 0xFFFF3333;
|
||||||
|
configValues["bar:font.main"].strValue = "Noto Sans";
|
||||||
|
configValues["bar:font.secondary"].strValue = "Noto Sans";
|
||||||
|
configValues["bar:mod_pad_in"].intValue = 4;
|
||||||
|
|
||||||
configValues["status_command"].strValue = "date +%I:%M\\ %p"; // Time
|
configValues["status_command"].strValue = "date +%I:%M\\ %p"; // Time // Deprecated
|
||||||
|
|
||||||
|
|
||||||
// Set Colors ARGB
|
// Set Colors ARGB
|
||||||
configValues["col.active_border"].intValue = 0x77FF3333;
|
configValues["col.active_border"].intValue = 0x77FF3333;
|
||||||
configValues["col.inactive_border"].intValue = 0x77222222;
|
configValues["col.inactive_border"].intValue = 0x77222222;
|
||||||
|
|
||||||
|
|
||||||
// animations
|
// animations
|
||||||
configValues["anim.speed"].floatValue = 1;
|
configValues["anim.speed"].floatValue = 1;
|
||||||
configValues["anim.enabled"].intValue = 1;
|
configValues["anim.enabled"].intValue = 1;
|
||||||
|
@ -163,6 +164,9 @@ void parseModule(const std::string& COMMANDC, const std::string& VALUE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto ICON = valueCopy.substr(0, valueCopy.find_first_of(","));
|
||||||
|
valueCopy = valueCopy.substr(valueCopy.find_first_of(",") + 1);
|
||||||
|
|
||||||
const auto COL1 = valueCopy.substr(0, valueCopy.find_first_of(","));
|
const auto COL1 = valueCopy.substr(0, valueCopy.find_first_of(","));
|
||||||
valueCopy = valueCopy.substr(valueCopy.find_first_of(",") + 1);
|
valueCopy = valueCopy.substr(valueCopy.find_first_of(",") + 1);
|
||||||
|
|
||||||
|
@ -193,6 +197,8 @@ void parseModule(const std::string& COMMANDC, const std::string& VALUE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.icon = ICON;
|
||||||
|
|
||||||
module.value = COMMAND;
|
module.value = COMMAND;
|
||||||
|
|
||||||
g_pWindowManager->statusBar->modules.push_back(module);
|
g_pWindowManager->statusBar->modules.push_back(module);
|
||||||
|
@ -292,7 +298,7 @@ void ConfigManager::loadConfigLoadVars() {
|
||||||
|
|
||||||
const char* const ENVHOME = getenv("HOME");
|
const char* const ENVHOME = getenv("HOME");
|
||||||
|
|
||||||
const std::string CONFIGPATH = ENVHOME + (std::string) "/.config/hypr/hypr.conf";
|
const std::string CONFIGPATH = ENVHOME + (ISDEBUG ? (std::string) "/.config/hypr/hyprd.conf" : (std::string) "/.config/hypr/hypr.conf");
|
||||||
|
|
||||||
std::ifstream ifs;
|
std::ifstream ifs;
|
||||||
ifs.open(CONFIGPATH.c_str());
|
ifs.open(CONFIGPATH.c_str());
|
||||||
|
@ -364,7 +370,7 @@ void ConfigManager::applyKeybindsToX() {
|
||||||
void ConfigManager::tick() {
|
void ConfigManager::tick() {
|
||||||
const char* const ENVHOME = getenv("HOME");
|
const char* const ENVHOME = getenv("HOME");
|
||||||
|
|
||||||
const std::string CONFIGPATH = ENVHOME + (std::string)"/.config/hypr/hypr.conf";
|
const std::string CONFIGPATH = ENVHOME + (ISDEBUG ? (std::string) "/.config/hypr/hyprd.conf" : (std::string) "/.config/hypr/hypr.conf");
|
||||||
|
|
||||||
struct stat fileStat;
|
struct stat fileStat;
|
||||||
int err = stat(CONFIGPATH.c_str(), &fileStat);
|
int err = stat(CONFIGPATH.c_str(), &fileStat);
|
||||||
|
|
Loading…
Reference in New Issue