{"id":13625996,"url":"https://github.com/mafredri/phoenix-config","last_synced_at":"2025-04-30T14:42:00.754Z","repository":{"id":49065630,"uuid":"58766496","full_name":"mafredri/phoenix-config","owner":"mafredri","description":"My personal Phoenix (kasper/phoenix) configuration, written in TypeScript","archived":false,"fork":false,"pushed_at":"2022-12-10T16:10:52.000Z","size":645,"stargazers_count":40,"open_issues_count":0,"forks_count":16,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T17:05:21.468Z","etag":null,"topics":["javascript","macos","phoenix","phoenix-configuration","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mafredri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-13T19:18:04.000Z","updated_at":"2024-09-23T10:44:39.000Z","dependencies_parsed_at":"2023-01-26T03:45:31.355Z","dependency_job_id":null,"html_url":"https://github.com/mafredri/phoenix-config","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mafredri%2Fphoenix-config","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mafredri%2Fphoenix-config/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mafredri%2Fphoenix-config/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mafredri%2Fphoenix-config/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mafredri","download_url":"https://codeload.github.com/mafredri/phoenix-config/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251722826,"owners_count":21633023,"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":["javascript","macos","phoenix","phoenix-configuration","typescript"],"created_at":"2024-08-01T21:02:07.409Z","updated_at":"2025-04-30T14:42:00.691Z","avatar_url":"https://github.com/mafredri.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# Phoenix configuration\n\nThis is my personal [Phoenix](https://github.com/kasper/phoenix) configuration, written in TypeScript. I also created [typings](https://github.com/mafredri/phoenix-typings) for it, feel free to use them.\n\n## Key bindings\n\nThe definition of `hyper` and `hyperShift` can be found in [src/config.ts](src/config.ts).\n\n### Basic bindings\n\n* `hyper + Left` (Left half of screen)\n* `hyper + Right` (Right half of screen)\n* `hyper + Up` (Top half of screen height, keeps current width)\n* `hyper + Down` (Bottom half of screen height, keeps current width)\n* `hyper + Return` (Toggle maximize, remembers unmaximized position)\n* `hyper + Tab` (Jump to next screen whilst keeping relative size and placement)\n* `hyper + Delete` (Minimize focused window)\n* `hyperShift + Left` (Move window to left edge of screen)\n* `hyperShift + Right` (Move window to right edge of screen)\n* `hyperShift + Up` (Move window to top edge of screen)\n* `hyperShift + Down` (Move window to bottom edge of screen)\n* `hyperShift + Return` (Toggle window fullscreen, i.e. separate space)\n* `hyperShift + Space` (Move window to center of screen)\n* `hyperShift + Tab` (Jump to next screen whilst maintaining current window size)\n\nUse combos of the key bindings to further place the windows:\n\n* `hyper + Left` + `hyper + Down` (Bottom left corner of screen)\n* `hyper + Enter` + `hyper + Up` (Top half of screen, full width)\n\nI've optimized the key bindings for my common use-case, showing two windows on one screen and moving windows between screens.\n\n### Misc bindings\n\n* `hyper + c` (Start coffee timer, defaults to 8 minutes)\n* ~~`hyper + +` (Increase monitor brightness using external script)~~ - Use [MonitorControl](https://github.com/MonitorControl/MonitorControl) instead\n* ~~`hyper + -` (Decrease monitor brightness using external script)~~ - Use [MonitorControl](https://github.com/MonitorControl/MonitorControl) instead\n* `hyper + Space` (Experimental: search for windows, tab to cycle, enter to switch, esc to cancel)\n* `§` (Show or hide the last used Terminal window)\n* `Cmd + §` (Cycle between Terminal windows)\n* `Cmd + Escape` (Cycle between windows of current application, including minimized and windows on a different screen)\n* `Cmd + Shift + Escape` (Same as `Cmd + Escape` except in reverse order)\n* `Cmd + h` (Hides the focused app or all visible apps if held down)\n\n## Misc features\n\n* Switch between Karabiner-Elements profiles when screens change\n* ~~Refresh screen brightness info when screens change (using `ddcctl`)~~ - Use [MonitorControl](https://github.com/MonitorControl/MonitorControl) instead\n* Support disabling / re-enabling all current keybindings via [src/key.ts](src/key.ts) (used by scanner)\n\n## Building\n\n```\ngit clone https://github.com/mafredri/phoenix-config.git\ncd phoenix-config\nyarn install\nyarn run build\n```\n\nThe TypeScript compiler and Webpack will produce `out/phoenix.js` that can be used as Phoenix configuration. \n\nFor development, `yarn start` will run Webpack in watch-mode.\n\n## Debugging\n\nIn a terminal, run:\n\n```console\n$ log stream --process Phoenix\n```\n\nAnything logged via logger (`import log from './logger';`) will show up as human friendly output in the terminal. `Phoenix.log` can also be used, but it only supports strings, much of the heavy lifting is already done by logger to create a similar experience to `console.log` in the browser.\n\nYou can also read about [Attaching to Web Inspector for Debugging](https://github.com/kasper/phoenix/wiki/Attaching-to-Web-Inspector-for-Debugging) in the Phoenix wiki. This gives access to true `console.log` and ability to use `debugger` statements in your code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmafredri%2Fphoenix-config","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmafredri%2Fphoenix-config","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmafredri%2Fphoenix-config/lists"}