Add configurations to status
This commit is contained in:
parent
204a422f2d
commit
038c2f721f
12
README.md
12
README.md
@ -45,6 +45,10 @@ Comfortable, seamless, and fast 3-finger (and 4-finger) touchpad swipe gestures
|
|||||||
```
|
```
|
||||||
comfortable-swipe restart
|
comfortable-swipe restart
|
||||||
```
|
```
|
||||||
|
6. You can check the status of your application by running
|
||||||
|
```
|
||||||
|
comfortable-swipe status
|
||||||
|
```
|
||||||
|
|
||||||
## Configurations
|
## Configurations
|
||||||
Comfortable swipe makes use of keyboard shortcuts for configurations. The configuration file is located at `/usr/local/share/comfortable-swipe/comfortable-swipe.conf`. Make sure to run `comfortable-swipe restart` after making changes.
|
Comfortable swipe makes use of keyboard shortcuts for configurations. The configuration file is located at `/usr/local/share/comfortable-swipe/comfortable-swipe.conf`. Make sure to run `comfortable-swipe restart` after making changes.
|
||||||
@ -80,7 +84,13 @@ Refer to https://www.linux.org/threads/xdotool-keyboard.10528/ for a complete li
|
|||||||
|
|
||||||
## Debugging
|
## Debugging
|
||||||
|
|
||||||
You can check your touchpad driver by running `comfortable-swipe debug`. This is an alias of `libinput debug-events`. This logs all gestures you make on your touchpad, along with other input-based events that can be captured by libinput.
|
You can check your touchpad driver by running
|
||||||
|
|
||||||
|
```bash
|
||||||
|
comfortable-swipe debug
|
||||||
|
```
|
||||||
|
|
||||||
|
This is an alias of `libinput debug-events`. This logs all gestures you make on your touchpad, along with other input-based events that can be captured by libinput.
|
||||||
|
|
||||||
A working swipe gesture will show the following:
|
A working swipe gesture will show the following:
|
||||||
|
|
||||||
|
|||||||
@ -30,7 +30,7 @@ namespace comfortable_swipe::service
|
|||||||
void help()
|
void help()
|
||||||
{
|
{
|
||||||
using comfortable_swipe::util::conf_filename;
|
using comfortable_swipe::util::conf_filename;
|
||||||
std::puts("comfortable-swipe [start|stop|restart|autostart|buffer|help|debug]");
|
std::puts("comfortable-swipe [start|stop|restart|autostart|buffer|help|debug|status]");
|
||||||
std::puts("");
|
std::puts("");
|
||||||
std::puts("start - starts 3/4-finger gesture service");
|
std::puts("start - starts 3/4-finger gesture service");
|
||||||
std::puts("stop - stops 3/4-finger gesture service");
|
std::puts("stop - stops 3/4-finger gesture service");
|
||||||
|
|||||||
@ -26,6 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include <array> // std::array
|
#include <array> // std::array
|
||||||
#include <cstdlib> // std::atoi
|
#include <cstdlib> // std::atoi
|
||||||
#include <cstdio> // FILE, std::feof, std::fgets, std::printf
|
#include <cstdio> // FILE, std::feof, std::fgets, std::printf
|
||||||
|
#include <regex> // std::cmatch, std::regex, std::regex_match
|
||||||
|
|
||||||
namespace comfortable_swipe::service
|
namespace comfortable_swipe::service
|
||||||
{
|
{
|
||||||
@ -52,6 +53,44 @@ namespace comfortable_swipe::service
|
|||||||
// print status
|
// print status
|
||||||
std::printf("program is %s\n", running ? "ON" : "OFF");
|
std::printf("program is %s\n", running ? "ON" : "OFF");
|
||||||
std::printf("autostart is %s\n", autostart_on ? "ON" : "OFF");
|
std::printf("autostart is %s\n", autostart_on ? "ON" : "OFF");
|
||||||
|
std::printf("config file at %s\n", comfortable_swipe::util::conf_filename());
|
||||||
|
|
||||||
|
// check status of configuration file
|
||||||
|
try
|
||||||
|
{
|
||||||
|
auto config = comfortable_swipe::util::read_config_file(comfortable_swipe::util::conf_filename());
|
||||||
|
|
||||||
|
// print keys and values of config file
|
||||||
|
std::printf("\nConfigurations:\n");
|
||||||
|
|
||||||
|
// print threshold
|
||||||
|
if (config.count("threshold") > 0)
|
||||||
|
{
|
||||||
|
auto & threshold = config["threshold"];
|
||||||
|
|
||||||
|
// check if regex pattern matches threshold
|
||||||
|
std::cmatch matches;
|
||||||
|
bool ok = (std::regex_match(threshold.data(), matches, std::regex("^\\d+(?:\\.\\d+)??$")) != 0);
|
||||||
|
|
||||||
|
// print status of threshold
|
||||||
|
std::printf(" %9s is %s (%s)\n", "threshold", ok ? "OK" : "INVALID", threshold.data());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
std::printf(" %9s is OFF\n", "threshold");
|
||||||
|
|
||||||
|
// print swipe commands
|
||||||
|
for (auto &command : comfortable_swipe::gesture::swipe_gesture::command_map)
|
||||||
|
{
|
||||||
|
if (config.count(command) > 0)
|
||||||
|
std::printf(" %9s is OK (%s)\n", command, config[command].data());
|
||||||
|
else
|
||||||
|
std::printf(" %9s is OFF\n", command);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (const std::runtime_error& e)
|
||||||
|
{
|
||||||
|
std::printf("config error: %s\n", e.what());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,9 +22,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#include <map> // std::map
|
#include <map> // std::map
|
||||||
#include <string> // std::string
|
#include <string> // std::string
|
||||||
#include <fstream> // std::ifstream
|
#include <fstream> // std::ifstream
|
||||||
#include <iostream> // std::cerr, std::endl, std::getline
|
#include <sstream> // std::ostringstream
|
||||||
|
#include <iostream> // std::endl, std::getline
|
||||||
#include <cstdlib> // exit
|
#include <cstdlib> // exit
|
||||||
#include <cctype> // std::isspace
|
#include <cctype> // std::isspace
|
||||||
|
#include <stdexcept> // std::runtime_error
|
||||||
|
|
||||||
namespace comfortable_swipe::util
|
namespace comfortable_swipe::util
|
||||||
{
|
{
|
||||||
@ -41,8 +43,7 @@ namespace comfortable_swipe::util
|
|||||||
|
|
||||||
if (!fin.is_open())
|
if (!fin.is_open())
|
||||||
{
|
{
|
||||||
std::cerr << "file \"" << filename << "\" does not exist!" << std::endl;
|
throw std::runtime_error("config file does not exist");
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string line, token[2];
|
static std::string line, token[2];
|
||||||
@ -65,9 +66,10 @@ namespace comfortable_swipe::util
|
|||||||
{
|
{
|
||||||
if (++equal_flag > 1)
|
if (++equal_flag > 1)
|
||||||
{
|
{
|
||||||
std::cerr << "error in conf file " << filename << std::endl;
|
std::ostringstream stream;
|
||||||
std::cerr << "multiple equal signs in line " << line_number << std::endl;
|
stream << "error in conf file " << filename << std::endl;
|
||||||
exit(1);
|
stream << "multiple equal signs in line " << line_number << std::endl;
|
||||||
|
throw std::runtime_error(stream.str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!std::isspace(line[i]))
|
else if (!std::isspace(line[i]))
|
||||||
@ -84,9 +86,10 @@ namespace comfortable_swipe::util
|
|||||||
// no equal sign found in non-empty line
|
// no equal sign found in non-empty line
|
||||||
if (equal_flag == 0)
|
if (equal_flag == 0)
|
||||||
{
|
{
|
||||||
std::cerr << "error in conf file: " << filename << std::endl;
|
std::ostringstream stream;
|
||||||
std::cerr << "equal sign expected in line " << line_number << std::endl;
|
stream << "error in conf file: " << filename << std::endl;
|
||||||
exit(1);
|
stream << "equal sign expected in line " << line_number << std::endl;
|
||||||
|
throw std::runtime_error(stream.str());
|
||||||
}
|
}
|
||||||
|
|
||||||
// equal sign found, add to tokens
|
// equal sign found, add to tokens
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user