HvC is a powerful utility for managing windows and hotkeys across multiple platforms, with a focus on Linux X11 environments. It allows for complex window management, hotkey configurations, and automated tasks via Lua scripting.
- Global hotkey registration and management
- Window tracking and manipulation
- Lua scripting for complex automation
- Configurable via text files
- Cross-platform support (primarily Linux X11)
/src
- Source code/include
- Header files/config
- Configuration files/log
- Log files/build
- Build directory
- C++17 compatible compiler (GCC 9+ or Clang 10+)
- CMake 3.10+
- X11 development libraries (on Linux)
- Lua 5.3+ development libraries
- X11 libraries: Xlib, Xutil, XTest, XKB, XRandR
- Sol2 Lua binding library
- pthread
We provide a helper script to resolve common build issues:
# Fix common build issues
./fix_build.sh
# Build the project
mkdir -p build && cd build && cmake .. && cmake --build .
Alternatively, you can use the Makefile:
# Fix build issues and build
make rebuild
mkdir -p build
cd build
cmake ..
cmake --build .
HvC uses several configuration files located in the config
directory:
main.cfg
- Main configuration filehotkeys/*.lua
- Lua scripts for hotkey configurations
See the configuration guide for more details.
If you encounter build issues, please refer to the BUILD_ISSUES.md file for common problems and solutions.
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please feel free to submit a Pull Request.
This document outlines the issues fixed to make the HvC project build successfully.
-
DisplayManager Type References
- Fixed
Display*
andWindow
type reference issues inDisplayManager.cpp
andDisplayManager.hpp
- Added proper X11 includes and fixed static member variable definitions
- Fixed
-
MPVController Method Signatures
- Fixed method signatures in
MPVController.cpp
andMPVController.hpp
to match - Updated
Initialize()
to return a bool instead of void - Changed
SendCommand
to accept a vector of strings instead of a single string
- Fixed method signatures in
-
Window Class X11 Integration
- Fixed
Window
class to properly work with X11Window
type - Added proper type casting between
H::Window
,H::wID
, and X11'sWindow
- Defined the
display
variable inWindow.cpp
- Fixed
-
IO Class Implementation
- Created the missing
IO.cpp
file with implementation of all required methods - Added proper destructor for the
IO
class to fix linker errors - Added stub implementations for all interface methods
- Created the missing
The application can now build successfully, but there are still runtime issues:
- The application crashes when handling Ctrl+C signals
- Some hotkey configurations show "Invalid key name" warnings
- Missing configuration file: "Could not open config file: config/config.json"
- All X11 display management is now handled through the
DisplayManager
class - The project is designed to work on Linux with X11 (Wayland support is placeholder)
- The application uses a hotkey system for controlling media playback and window management
To build the project:
mkdir build && cd build
cmake ..
cmake --build .