Skip to content

Commit

Permalink
fix Alexays#3490: expand menu file before opening it
Browse files Browse the repository at this point in the history
  • Loading branch information
yangyingchao committed Aug 1, 2024
1 parent 003dd3a commit ecf158b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 2 deletions.
3 changes: 3 additions & 0 deletions include/config.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ class Config {
static std::optional<std::string> findConfigPath(
const std::vector<std::string> &names, const std::vector<std::string> &dirs = CONFIG_DIRS);

static std::optional<std::string> tryExpandPath(const std::string &base,
const std::string &filename);

Config() = default;

void load(const std::string &config);
Expand Down
12 changes: 11 additions & 1 deletion src/ALabel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
#include <iostream>
#include <util/command.hpp>

#include "config.hpp"

namespace waybar {

ALabel::ALabel(const Json::Value& config, const std::string& name, const std::string& id,
Expand Down Expand Up @@ -61,6 +63,14 @@ ALabel::ALabel(const Json::Value& config, const std::string& name, const std::st
try {
// Check that the file exists
std::string menuFile = config_["menu-file"].asString();

// there might be "~" or "$HOME" in original path, try to expand it.
auto result = Config::tryExpandPath(menuFile, "");
if (!result.has_value()) {
throw std::runtime_error("Failed to expand file: " + menuFile);
}

menuFile = result.value();
// Read the menu descriptor file
std::ifstream file(menuFile);
if (!file.is_open()) {
Expand Down Expand Up @@ -170,7 +180,7 @@ bool waybar::ALabel::handleToggle(GdkEventButton* const& e) {
return AModule::handleToggle(e);
}

void ALabel::handleGtkMenuEvent(GtkMenuItem* menuitem, gpointer data) {
void ALabel::handleGtkMenuEvent(GtkMenuItem* /*menuitem*/, gpointer data) {
waybar::util::command::res res = waybar::util::command::exec((char*)data, "GtkMenu");
}

Expand Down
3 changes: 2 additions & 1 deletion src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ const std::vector<std::string> Config::CONFIG_DIRS = {

const char *Config::CONFIG_PATH_ENV = "WAYBAR_CONFIG_DIR";

std::optional<std::string> tryExpandPath(const std::string &base, const std::string &filename) {
std::optional<std::string> Config::tryExpandPath(const std::string &base,
const std::string &filename) {
fs::path path;

if (!filename.empty()) {
Expand Down

0 comments on commit ecf158b

Please sign in to comment.