{"id":30762743,"url":"https://github.com/cloudwerx-dev/ghostkey","last_synced_at":"2025-09-04T15:47:52.320Z","repository":{"id":309139301,"uuid":"1035279751","full_name":"CLOUDWERX-DEV/ghostkey","owner":"CLOUDWERX-DEV","description":"A clipboard-free text insertion tool for Linux that securely types text directly into the target app (no clipboard involved). For Linux (Debian)","archived":false,"fork":false,"pushed_at":"2025-08-10T03:47:50.000Z","size":703,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-08-10T05:27:32.777Z","etag":null,"topics":["ahk","autohotkey","autokey","clipboard","hotkeys","keyboard","text"],"latest_commit_sha":null,"homepage":"http://cloudwerx.dev","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CLOUDWERX-DEV.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-10T03:42:41.000Z","updated_at":"2025-08-10T03:46:12.000Z","dependencies_parsed_at":"2025-08-10T15:02:55.421Z","dependency_job_id":null,"html_url":"https://github.com/CLOUDWERX-DEV/ghostkey","commit_stats":null,"previous_names":["cloudwerx-dev/ghostkey"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/CLOUDWERX-DEV/ghostkey","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CLOUDWERX-DEV%2Fghostkey","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CLOUDWERX-DEV%2Fghostkey/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CLOUDWERX-DEV%2Fghostkey/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CLOUDWERX-DEV%2Fghostkey/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CLOUDWERX-DEV","download_url":"https://codeload.github.com/CLOUDWERX-DEV/ghostkey/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CLOUDWERX-DEV%2Fghostkey/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273633231,"owners_count":25140773,"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","status":"online","status_checked_at":"2025-09-04T02:00:08.968Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["ahk","autohotkey","autokey","clipboard","hotkeys","keyboard","text"],"created_at":"2025-09-04T15:47:46.758Z","updated_at":"2025-09-04T15:47:52.286Z","avatar_url":"https://github.com/CLOUDWERX-DEV.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GhostKey\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"icon.png\" alt=\"GhostKey Logo\" width=\"200\" /\u003e\n\u003c/p\u003e\n\nA clipboard-free text insertion tool for Linux that securely types text directly into the target app (no clipboard involved).\n\n## Highlights\n\n- Clipboard-free text typing (secure; no clipboard usage)\n- Per-pad hotkeys (global “type current pad” hotkey removed)\n- Rich insert tokens (dates/times, UUID, system info, randoms, Tab/Enter, etc.)\n- Import from text/code files; export pad to a file (.ghk by default)\n- Editor enhancements: optional line numbers, highlight current line, font, and style scheme\n- System tray integration with Show/Hide and Settings…\n- Built-in Help dialog (header button)\n\n## Installation\n\nGhostKey uses GTK via system-provided PyGObject (gi). You must install OS packages and install GhostKey in an environment that can see system packages.\n\n### 1) Install system prerequisites (Debian/Ubuntu/Linux Mint)\n```bash\nsudo apt-get update\nsudo apt-get install \\\n  python3-gi \\\n  gir1.2-gtk-3.0 \\\n  gir1.2-appindicator3-0.1 \\\n  python3-venv \\\n  python3-pip \\\n  pipx \\\n  python3-dev \\\n  gcc\n```\nNotes:\n- python3-gi and gir1.2-gtk-3.0 provide `gi` and GTK bindings\n- gir1.2-appindicator3-0.1 enables the tray icon\n\n### 2) Install options\n\nChoose ONE of the following methods:\n\n- Option A: install.sh (user install via pipx)\n- Option B: .deb package (system-wide install)\n- Option C: pipx from source (manual)\n\n#### Option A: install via install.sh (recommended for users)\nThe script installs GhostKey with pipx (exposing system GTK/gi) and registers the desktop entry/icons for your user.\n```bash\nchmod +x ./install.sh\n./install.sh\n```\nAfter installation, you can launch GhostKey from your desktop menu or by running:\n```bash\nghostkey\n```\n\n#### Option B: install via .deb package (system-wide)\nBuild the .deb (or download a release .deb if provided), then install it:\n```bash\n# Build .deb from source (inside the repo)\ndpkg-buildpackage -us -uc -b\n\n# Install the generated package from the parent directory\nsudo apt-get install ./ghostkey_*_amd64.deb\n```\nThis installs the desktop file to /usr/share/applications and icons to the hicolor theme.\nIf the launcher doesn’t appear immediately, refresh caches:\n```bash\nsudo update-desktop-database /usr/share/applications\nsudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor\nxdg-desktop-menu forceupdate || true\n```\nLaunch from your menu or run:\n```bash\nghostkey\n```\n\n#### Option C: install via pipx from source (manual)\n```bash\npython3 -m pip install --user pipx\npython3 -m pipx ensurepath\n\n# The --system-site-packages flag is REQUIRED so gi/GTK are visible\npipx install --system-site-packages .\n```\nIf you previously installed without the flag, fix it with:\n```bash\npipx uninstall ghostkey\npipx install --system-site-packages .\n```\n\n### Development: Run from source\n`run.sh` creates a venv that shares system packages (for gi), installs deps, and starts the app:\n```bash\nchmod +x ./run.sh\n./run.sh\n```\n\n## Usage\n\n- Create or select a pad on the left.\n- Set a Name, choose a Hotkey, and enter Content.\n- Click Save to persist changes and rebind hotkeys.\n- To type the pad’s content into any app:\n  - Click Run, or\n  - Use the pad’s configured hotkey.\n- Use Import/Export to load or save pad content as files.\n- Click the Help button in the header for a quick guide.\n\n## Pads (Profiles)\n\n- Each pad has: Name, Hotkey, and Content\n- Select a pad in the left panel to edit it\n- Add pads with +; remove with – (you cannot remove the last remaining pad)\n- Sorting by Name or Hotkey helps organize your list\n\n### Per-pad hotkeys\n- Set the Hotkey field on a pad\n- Hotkeys must include a modifier (Ctrl/Alt/Shift/Super)\n- Hotkey changes take effect after clicking Save\n\n## Insert Tokens\n\nUse the Insert dropdown to add tokens that expand at type-time. Examples:\n- Date/time: [[[DATE]]], [[[DATE_US]]], [[[TIME]]], [[[TIME_12H]]], [[[TIME_SECONDS]]], [[[DATETIME]]], [[[DATETIME_US]]], [[[DATETIME_SECONDS]]], [[[ISO8601]]], [[[RFC3339]]], [[[RFC2822]]], [[[YEAR]]], [[[MONTH_NUM]]], [[[MONTH_NAME]]], [[[DAY]]], [[[WEEKDAY]]], [[[ISO_WEEK]]]\n- Epoch: [[[EPOCH]]], [[[EPOCH_MS]]]\n- Identity/system: [[[UUID]]], [[[USERNAME]]], [[[HOSTNAME]]], [[[PUBLIC_HOSTNAME]]]\n- Network: [[[INTERNAL_IP]]], [[[EXTERNAL_IP]]], [[[MAC_ADDR]]]\n- Environment/paths: [[[HOME]]], [[[CWD]]], [[[PATH]]], [[[SHELL]]]\n- Random: [[[RAND_INT]]], [[[RAND_HEX8]]]\n- Control keys: [[[TAB]]], [[[ENTER]]]\n\nTokens are triple-bracketed. They’re replaced just before typing.\n\n## Import / Export\n\n- Import:\n  - Click Import, choose a text/code file (.txt, .md, .csv, .json, .css, .html, .py, .js, .ts, .yml, .yaml, .ini, .conf, .sh, .go, .java, .cpp, .c, .rb, .rs, .toml, .xml, .log, …)\n  - File is read as UTF-8 (errors replaced) and loaded into the current pad\n- Export:\n  - Click Export, choose a path/filename (default extension .ghk)\n  - Current pad content is saved as UTF-8\n\n## Settings\n\nOpen from header (gear) or tray.\n\n- General:\n  - Confirm before deleting a pad\n  - Auto-save changes\n- Editor:\n  - Show line numbers (requires GtkSourceView)\n  - Highlight current line\n  - Font (Pango description, e.g. “Monospace 11”)\n  - Style scheme: Auto, Classic, Oblivion, None\n- Behavior:\n  - Minimize to tray on close\n  - Start minimized to tray\n  - Typing delay (seconds between simulated keystrokes)\n\nSettings are saved to: `~/.config/ghostkey/config.json` and apply without restart. Hotkey changes are applied when you click Save.\n\n## Wayland/Xorg notes\n\n- On Wayland, GhostKey prefers the “uinput” backend for pynput to improve reliability; on Xorg, the default backend is used\n- Some applications restrict simulated input; results can vary by desktop environment and security policy\n\n## Optional dependency: GtkSourceView\n\nIf installed (gir1.2-gtksource-3.0), the editor shows line numbers and supports style schemes. Without it, GhostKey falls back to a plain Gtk TextView. Tip messages will suggest installing GtkSourceView to enable line numbers.\n\n## Troubleshooting\n\n- Verify GTK/gi is importable:\n  ```bash\n  python3 -c \"import gi; from gi.repository import Gtk; print('GTK OK')\"\n  ```\n- If that fails:\n  ```bash\n  sudo apt-get install python3-gi gir1.2-gtk-3.0\n  ```\n- Tray not visible: `sudo apt-get install gir1.2-appindicator3-0.1`\n- Reinstall with system packages visible when using pipx:\n  ```bash\n  pipx uninstall ghostkey\n  pipx install --system-site-packages .\n  ```\n- Hotkey not triggering: ensure you clicked Save after editing the hotkey; avoid conflicts with system/global shortcuts; try another combo\n- Typing goes into GhostKey: the app will try to hide/minimize before typing; ensure your window manager allows it\n\n## Security\n\nGhostKey avoids the clipboard. Text stays in-memory and is typed directly via simulated keystrokes.\n\n## Contributing\n\nIssues and PRs are welcome!\n\n## License\n\nApache-2.0 — see LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudwerx-dev%2Fghostkey","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudwerx-dev%2Fghostkey","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudwerx-dev%2Fghostkey/lists"}