{"id":27121975,"url":"https://github.com/halffd/hvc","last_synced_at":"2025-04-07T11:23:52.336Z","repository":{"id":261541408,"uuid":"879196604","full_name":"Halffd/HvC","owner":"Halffd","description":"Hotkey Manager and Window Control System","archived":false,"fork":false,"pushed_at":"2025-04-05T22:26:19.000Z","size":3087,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-05T23:17:59.759Z","etag":null,"topics":["automation","cpp","gtk","hotkey","linux","lua","scripting","window-management","x11"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Halffd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-27T09:09:52.000Z","updated_at":"2025-04-05T22:26:23.000Z","dependencies_parsed_at":"2024-12-05T07:18:29.809Z","dependency_job_id":"52da7bdb-2c80-489f-9f5c-59de023ba70f","html_url":"https://github.com/Halffd/HvC","commit_stats":null,"previous_names":["halffd/hvc"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Halffd%2FHvC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Halffd%2FHvC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Halffd%2FHvC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Halffd%2FHvC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Halffd","download_url":"https://codeload.github.com/Halffd/HvC/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247641427,"owners_count":20971723,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","cpp","gtk","hotkey","linux","lua","scripting","window-management","x11"],"created_at":"2025-04-07T11:23:51.582Z","updated_at":"2025-04-07T11:23:52.327Z","avatar_url":"https://github.com/Halffd.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HvC - Hotkey and Window Controller\n\nHvC 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.\n\n## Features\n\n- Global hotkey registration and management\n- Window tracking and manipulation\n- Lua scripting for complex automation\n- Configurable via text files\n- Cross-platform support (primarily Linux X11)\n\n## Directory Structure\n\n- `/src` - Source code\n- `/include` - Header files\n- `/config` - Configuration files\n- `/log` - Log files\n- `/build` - Build directory\n\n## Building HvC\n\n### Prerequisites\n\n- C++17 compatible compiler (GCC 9+ or Clang 10+)\n- CMake 3.10+\n- X11 development libraries (on Linux)\n- Lua 5.3+ development libraries\n\n### Dependencies\n\n- X11 libraries: Xlib, Xutil, XTest, XKB, XRandR\n- Sol2 Lua binding library\n- pthread\n\n### Quick Build\n\nWe provide a helper script to resolve common build issues:\n\n```bash\n# Fix common build issues\n./fix_build.sh\n\n# Build the project\nmkdir -p build \u0026\u0026 cd build \u0026\u0026 cmake .. \u0026\u0026 cmake --build .\n```\n\nAlternatively, you can use the Makefile:\n\n```bash\n# Fix build issues and build\nmake rebuild\n```\n\n### Manual Build\n\n```bash\nmkdir -p build\ncd build\ncmake ..\ncmake --build .\n```\n\n## Configuration\n\nHvC uses several configuration files located in the `config` directory:\n\n- `main.cfg` - Main configuration file\n- `hotkeys/*.lua` - Lua scripts for hotkey configurations\n\nSee the [configuration guide](config/README.md) for more details.\n\n## Troubleshooting\n\nIf you encounter build issues, please refer to the [BUILD_ISSUES.md](BUILD_ISSUES.md) file for common problems and solutions.\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n# HvC Project Build Fixes\n\nThis document outlines the issues fixed to make the HvC project build successfully.\n\n## Fixed Issues\n\n1. **DisplayManager Type References**\n   - Fixed `Display*` and `Window` type reference issues in `DisplayManager.cpp` and `DisplayManager.hpp`\n   - Added proper X11 includes and fixed static member variable definitions\n\n2. **MPVController Method Signatures**\n   - Fixed method signatures in `MPVController.cpp` and `MPVController.hpp` to match\n   - Updated `Initialize()` to return a bool instead of void\n   - Changed `SendCommand` to accept a vector of strings instead of a single string\n\n3. **Window Class X11 Integration**\n   - Fixed `Window` class to properly work with X11 `Window` type\n   - Added proper type casting between `H::Window`, `H::wID`, and X11's `Window`\n   - Defined the `display` variable in `Window.cpp`\n\n4. **IO Class Implementation**\n   - Created the missing `IO.cpp` file with implementation of all required methods\n   - Added proper destructor for the `IO` class to fix linker errors\n   - Added stub implementations for all interface methods\n\n## Remaining Issues\n\nThe application can now build successfully, but there are still runtime issues:\n\n1. The application crashes when handling Ctrl+C signals\n2. Some hotkey configurations show \"Invalid key name\" warnings\n3. Missing configuration file: \"Could not open config file: config/config.json\"\n\n## Project Structure Notes\n\n- All X11 display management is now handled through the `DisplayManager` class\n- The project is designed to work on Linux with X11 (Wayland support is placeholder)\n- The application uses a hotkey system for controlling media playback and window management\n\n## Building the Project\n\nTo build the project:\n\n```bash\nmkdir build \u0026\u0026 cd build\ncmake ..\ncmake --build .\n``` ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalffd%2Fhvc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhalffd%2Fhvc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhalffd%2Fhvc/lists"}