2003-01-09 17:46:10 +00:00
|
|
|
// FbCommands.hh for Fluxbox
|
2006-02-16 06:53:05 +00:00
|
|
|
// Copyright (c) 2003 - 2006 Henrik Kinnunen (fluxgen at fluxbox dot org)
|
2003-01-09 17:46:10 +00:00
|
|
|
//
|
|
|
|
// Permission is hereby granted, free of charge, to any person obtaining a
|
|
|
|
// copy of this software and associated documentation files (the "Software"),
|
|
|
|
// to deal in the Software without restriction, including without limitation
|
|
|
|
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
|
|
// and/or sell copies of the Software, and to permit persons to whom the
|
|
|
|
// Software is furnished to do so, subject to the following conditions:
|
|
|
|
//
|
|
|
|
// The above copyright notice and this permission notice shall be included in
|
|
|
|
// all copies or substantial portions of the Software.
|
|
|
|
//
|
|
|
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
|
|
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
|
|
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
|
|
// DEALINGS IN THE SOFTWARE.
|
|
|
|
|
|
|
|
// \file contains basic commands to restart, reconfigure, execute command and exit fluxbox
|
|
|
|
|
|
|
|
#ifndef FBCOMMANDS_HH
|
|
|
|
#define FBCOMMANDS_HH
|
|
|
|
|
2007-12-30 15:32:53 +00:00
|
|
|
#include "FbTk/Command.hh"
|
2008-05-11 17:17:21 +00:00
|
|
|
|
|
|
|
#include <memory>
|
2007-12-30 15:32:53 +00:00
|
|
|
|
2007-10-13 21:51:37 +00:00
|
|
|
#include "ClientMenu.hh"
|
|
|
|
#include "ClientPattern.hh"
|
2007-11-12 21:59:43 +00:00
|
|
|
#include "FocusableList.hh"
|
2007-03-21 22:47:56 +00:00
|
|
|
|
2003-01-09 17:46:10 +00:00
|
|
|
namespace FbCommands {
|
|
|
|
|
|
|
|
/// executes a system command
|
2008-01-11 07:41:22 +00:00
|
|
|
class ExecuteCmd: public FbTk::Command<void> {
|
2003-01-09 17:46:10 +00:00
|
|
|
public:
|
2003-06-30 14:59:38 +00:00
|
|
|
ExecuteCmd(const std::string &cmd, int screen_num = -1);
|
2003-01-09 17:46:10 +00:00
|
|
|
void execute();
|
2006-02-12 08:03:47 +00:00
|
|
|
/**
|
|
|
|
* same as execute but returns pid
|
|
|
|
*/
|
|
|
|
int run();
|
2003-01-09 17:46:10 +00:00
|
|
|
private:
|
|
|
|
std::string m_cmd;
|
2003-04-28 00:38:42 +00:00
|
|
|
const int m_screen_num;
|
2003-01-09 17:46:10 +00:00
|
|
|
};
|
|
|
|
|
2004-10-06 11:40:28 +00:00
|
|
|
/// sets environment
|
2008-01-11 07:41:22 +00:00
|
|
|
class ExportCmd : public FbTk::Command<void> {
|
2004-10-06 11:40:28 +00:00
|
|
|
public:
|
|
|
|
ExportCmd(const std::string& name, const std::string& value);
|
|
|
|
void execute();
|
2008-01-11 07:41:22 +00:00
|
|
|
static FbTk::Command<void> *parse(const std::string &command,
|
2007-12-13 05:48:00 +00:00
|
|
|
const std::string &args, bool trusted);
|
2004-10-06 11:40:28 +00:00
|
|
|
private:
|
|
|
|
std::string m_name;
|
|
|
|
std::string m_value;
|
|
|
|
};
|
|
|
|
|
2003-01-09 17:46:10 +00:00
|
|
|
/// exit fluxbox
|
2008-01-11 07:41:22 +00:00
|
|
|
class ExitFluxboxCmd: public FbTk::Command<void> {
|
2003-01-09 17:46:10 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2003-06-22 14:16:25 +00:00
|
|
|
/// saves resources
|
2008-01-11 07:41:22 +00:00
|
|
|
class SaveResources: public FbTk::Command<void> {
|
2003-06-22 14:16:25 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2003-01-09 17:46:10 +00:00
|
|
|
/// restarts fluxbox
|
2008-01-11 07:41:22 +00:00
|
|
|
class RestartFluxboxCmd: public FbTk::Command<void> {
|
2003-01-09 17:46:10 +00:00
|
|
|
public:
|
2003-06-08 13:47:30 +00:00
|
|
|
RestartFluxboxCmd(const std::string &cmd);
|
2003-01-09 17:46:10 +00:00
|
|
|
void execute();
|
2008-06-20 01:58:34 +00:00
|
|
|
static FbTk::Command<void> *parse(const std::string &command,
|
|
|
|
const std::string &args, bool trusted);
|
2003-06-08 13:47:30 +00:00
|
|
|
private:
|
|
|
|
std::string m_cmd;
|
2003-01-09 17:46:10 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
/// reconfigures fluxbox
|
2008-01-11 07:41:22 +00:00
|
|
|
class ReconfigureFluxboxCmd: public FbTk::Command<void> {
|
2003-01-09 17:46:10 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class ReloadStyleCmd: public FbTk::Command<void> {
|
2003-12-03 22:13:21 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class SetStyleCmd: public FbTk::Command<void> {
|
2003-02-15 01:58:06 +00:00
|
|
|
public:
|
2003-04-16 13:33:18 +00:00
|
|
|
explicit SetStyleCmd(const std::string &filename);
|
2003-02-15 01:58:06 +00:00
|
|
|
void execute();
|
|
|
|
private:
|
|
|
|
std::string m_filename;
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class KeyModeCmd: public FbTk::Command<void> {
|
2006-04-12 15:51:37 +00:00
|
|
|
public:
|
|
|
|
explicit KeyModeCmd(const std::string &arguments);
|
|
|
|
void execute();
|
|
|
|
private:
|
|
|
|
std::string m_keymode;
|
|
|
|
std::string m_end_args;
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class HideMenuCmd: public FbTk::Command<void> {
|
2007-02-09 18:13:01 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class ShowClientMenuCmd: public FbTk::Command<void> {
|
2007-10-13 21:51:37 +00:00
|
|
|
public:
|
|
|
|
ShowClientMenuCmd(int option, std::string &pat):
|
2007-11-12 21:59:43 +00:00
|
|
|
m_option(option|FocusableList::LIST_GROUPS), m_pat(pat.c_str()) { }
|
2007-10-13 21:51:37 +00:00
|
|
|
void execute();
|
2008-01-11 07:41:22 +00:00
|
|
|
static FbTk::Command<void> *parse(const std::string &command,
|
2007-12-13 05:48:00 +00:00
|
|
|
const std::string &args, bool trusted);
|
2007-10-13 21:51:37 +00:00
|
|
|
private:
|
|
|
|
const int m_option;
|
|
|
|
const ClientPattern m_pat;
|
|
|
|
std::list<FluxboxWindow *> m_list;
|
2016-08-27 08:05:34 +00:00
|
|
|
std::unique_ptr<ClientMenu> m_menu;
|
2007-10-13 21:51:37 +00:00
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class ShowCustomMenuCmd: public FbTk::Command<void> {
|
2007-03-16 20:44:47 +00:00
|
|
|
public:
|
|
|
|
explicit ShowCustomMenuCmd(const std::string &arguments);
|
|
|
|
void execute();
|
2008-05-13 01:13:56 +00:00
|
|
|
void reload();
|
2007-03-16 20:44:47 +00:00
|
|
|
private:
|
|
|
|
std::string custom_menu_file;
|
2016-08-27 08:05:34 +00:00
|
|
|
std::unique_ptr<FbMenu> m_menu;
|
2007-03-16 20:44:47 +00:00
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class ShowRootMenuCmd: public FbTk::Command<void> {
|
2003-07-01 20:24:19 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class ShowWorkspaceMenuCmd: public FbTk::Command<void> {
|
2003-08-30 11:59:29 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class SetWorkspaceNameCmd: public FbTk::Command<void> {
|
2003-12-19 03:56:51 +00:00
|
|
|
public:
|
|
|
|
SetWorkspaceNameCmd(const std::string &name, int spaceid = -1);
|
|
|
|
void execute();
|
|
|
|
private:
|
|
|
|
std::string m_name;
|
|
|
|
int m_workspace;
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class WorkspaceNameDialogCmd: public FbTk::Command<void> {
|
2003-12-19 03:56:51 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class CommandDialogCmd: public FbTk::Command<void> {
|
2003-08-26 23:52:09 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2003-01-09 17:46:10 +00:00
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class SetResourceValueCmd: public FbTk::Command<void> {
|
2003-12-19 17:22:04 +00:00
|
|
|
public:
|
|
|
|
SetResourceValueCmd(const std::string &resourcename, const std::string &value);
|
|
|
|
void execute();
|
|
|
|
private:
|
|
|
|
const std::string m_resname;
|
|
|
|
const std::string m_value;
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class SetResourceValueDialogCmd: public FbTk::Command<void> {
|
2003-12-19 17:22:04 +00:00
|
|
|
public:
|
|
|
|
void execute();
|
|
|
|
};
|
|
|
|
|
2008-01-11 07:41:22 +00:00
|
|
|
class BindKeyCmd: public FbTk::Command<void> {
|
2003-12-20 17:42:04 +00:00
|
|
|
public:
|
|
|
|
BindKeyCmd(const std::string &keybind);
|
|
|
|
void execute();
|
|
|
|
private:
|
|
|
|
const std::string m_keybind;
|
|
|
|
};
|
|
|
|
|
2004-04-22 21:12:34 +00:00
|
|
|
/// deiconifies iconified windows
|
2008-01-11 07:41:22 +00:00
|
|
|
class DeiconifyCmd: public FbTk::Command<void> {
|
2004-04-22 21:12:34 +00:00
|
|
|
public:
|
|
|
|
enum Mode {
|
|
|
|
LAST,
|
|
|
|
LASTWORKSPACE,
|
|
|
|
ALL,
|
|
|
|
ALLWORKSPACE
|
|
|
|
};
|
|
|
|
|
|
|
|
enum Destination {
|
|
|
|
CURRENT, /// deiconification on current workspace
|
|
|
|
ORIGIN, /// deiconification on origin workspace, change to that ws
|
|
|
|
ORIGINQUIET /// deiconification on origin workspace, dont change ws
|
|
|
|
};
|
|
|
|
|
2005-04-30 10:29:06 +00:00
|
|
|
DeiconifyCmd(Mode mode= LASTWORKSPACE,
|
|
|
|
Destination dest= CURRENT);
|
2004-04-22 21:12:34 +00:00
|
|
|
void execute();
|
2008-01-11 07:41:22 +00:00
|
|
|
static FbTk::Command<void> *parse(const std::string &command,
|
2007-12-13 05:48:00 +00:00
|
|
|
const std::string &args, bool trusted);
|
2004-04-22 21:12:34 +00:00
|
|
|
private:
|
|
|
|
Mode m_mode;
|
|
|
|
Destination m_dest;
|
|
|
|
};
|
|
|
|
|
2013-01-31 08:13:45 +00:00
|
|
|
|
|
|
|
/// test client pattern
|
|
|
|
class ClientPatternTestCmd: public FbTk::Command<void> {
|
|
|
|
public:
|
|
|
|
ClientPatternTestCmd(const std::string& args) : m_args(args) { };
|
|
|
|
void execute();
|
|
|
|
private:
|
|
|
|
std::string m_args;
|
|
|
|
};
|
|
|
|
|
2004-10-21 10:23:58 +00:00
|
|
|
} // end namespace FbCommands
|
|
|
|
|
2003-01-09 17:46:10 +00:00
|
|
|
#endif // FBCOMMANDS_HH
|