{"id":13437403,"url":"https://github.com/jcs/sdorfehs","last_synced_at":"2025-12-27T04:57:41.111Z","repository":{"id":41827805,"uuid":"203914335","full_name":"jcs/sdorfehs","owner":"jcs","description":"A tiling window manager","archived":false,"fork":false,"pushed_at":"2024-09-10T15:49:37.000Z","size":2000,"stargazers_count":296,"open_issues_count":4,"forks_count":11,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-17T01:46:46.474Z","etag":null,"topics":["tiling-window-manager","x11-wm"],"latest_commit_sha":null,"homepage":"https://github.com/jcs/sdorfehs/wiki","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jcs.png","metadata":{"files":{"readme":"README.md","changelog":"history.c","contributing":null,"funding":null,"license":"COPYING","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":"2019-08-23T03:08:44.000Z","updated_at":"2025-03-08T22:17:43.000Z","dependencies_parsed_at":"2024-07-14T21:24:25.654Z","dependency_job_id":"c7068b31-e207-4594-864e-144d40e11a06","html_url":"https://github.com/jcs/sdorfehs","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcs%2Fsdorfehs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcs%2Fsdorfehs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcs%2Fsdorfehs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcs%2Fsdorfehs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcs","download_url":"https://codeload.github.com/jcs/sdorfehs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244371007,"owners_count":20442321,"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":["tiling-window-manager","x11-wm"],"created_at":"2024-07-31T03:00:56.689Z","updated_at":"2025-12-27T04:57:41.103Z","avatar_url":"https://github.com/jcs.png","language":"C","funding_links":[],"categories":["C","Packages"],"sub_categories":["window-managers"],"readme":"## sdorfehs\n\u003cimg src=\"https://jcs.org/images/sdorfehs-300.jpg\" align=\"right\"\u003e\n\n#### (pronounced \"starfish\")\n\nsdorfehs is a tiling window manager descended from\n[ratpoison](https://www.nongnu.org/ratpoison/)\n(which itself is modeled after\n[GNU Screen](https://www.gnu.org/software/screen/)).\n\nsdorfehs divides the screen into one or more frames, each only displaying\none window at a time but can cycle through all available windows (those\nwhich are not being shown in another frame).\n\nLike Screen, sdorfehs primarily uses prefixed/modal key bindings for most\nactions.\nsdorfehs's command mode is entered with a configurable keystroke\n(`Control+a` by default) which then allows a number of bindings accessible\nwith just a single keystroke or any other combination.\nFor example, to cycle through available windows in a frame, press\n`Control+a` then `n`.\n\n### License\n\nsdorfehs retains ratpoison's GPL2 license.\n\n### Compiling\n\nRun `make` to compile, and `make install` to install to `/usr/local` by\ndefault.\n\n### Wiki\n\nThe\n[sdorfehs Wiki](https://github.com/jcs/sdorfehs/wiki)\nhas tips and tricks, and information on troubleshooting problems.\n\n## Features\n\nsdorfehs retains most of ratpoison's features while adding some more modern\ntouches.\n\n![Screenshot](https://jcs.org/images/sdorfehs-20190826.png)\n\n### EWMH\n\nsdorfehs strives to be a bit more\n[EWMH](https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html)\ncompliant, supporting Atoms such as `_NET_ACTIVE_WINDOW` for compositors\nto dim unfocused windows, and `_NET_WM_STATE_FULLSCREEN` to allow full-screen\nprograms like VLC and Firefox to take over the entire screen when requested\n(though still allowing the standard key bindings to switch windows or kill\nthe program).\n\n### Virtual Screens\n\nsdorfehs adds virtual screens which each have their own frame configuration\nand set of windows.\nWindows can be moved between virtual screens with `vmove`.\nBy default, virtual screens can be selected (via the `vselect` command)\nwith `Control+a, F1` through `Control+a, F12`.\n\n### Bar\n\nsdorfehs has a bar window which displays status messages or the output of\ncertain commands.\nBy default, this bar is made sticky with the `barsticky` setting which\nforces the bar to be permanently affixed to the top or bottom (configurable\nwith the `bargravity` setting) of every virtual screen displaying the\ncurrently-focused window's title on the left side.\n\nWhen the bar is sticky, it also enables a mechanism to display arbitrary\ntext on the right side, similar to bar programs for other window managers like\ni3bar, dzen2, etc.\nsdorfehs creates a\n[named pipe](https://en.wikipedia.org/wiki/Named_pipe)\nat `~/.config/sdorfehs/bar` and any text input into the pipe shows up on\nthe bar, making it easy to integrate with standard utilities which can just\necho into the pipe.\nFor an extremely simple example, a shell script can just echo the output of\n`date` into the pipe once a second.\n\n    while true; do\n      date \u003e ~/.config/sdorfehs/bar\n      sleep 1\n    done\n\nBar input supports some markup commands from dzen2 in the format\n`^command(details)` which affect the text following the command until the\ncommand is reset with `^command()`.\nCurrently supported commands:\n\n- `^ca(btn,cmd,btn2,cmd2)`: execute `cmd` when mouse button `btn` is clicked on\nthis area of text, or `cmd2` if button `btn2` is clicked.\nClosing the area of clickable text can be done with `^ca()`.\n\n- `^fg(color)`: color the text following until the next `^fg()` command.\nA line of text such as `hello ^fg(green)world^fg()!` will color `hello` with\nthe default foreground color (`set fgcolor`), then `world` in green, and the\nexclamation point with the default color.\nColors can be specified as their common name (`blue`) or as a hex code\n(`#0000ff`).\n\n- `^fn(font)`: change the font of the following text.\nFonts must be specified in Xft format like `set font` such as\n`^fn(noto emoji:size=13)`.\nResetting to the default font can be done with `^fn()`.\n\n### Gaps\n\nsdorfehs enables a configurable gap (with `set gap`) between frames by\ndefault to look a bit nicer on larger displays.\n\n### Secure Remote Control\n\nsdorfehs's `-c` command line option uses a more secure IPC mechanism\nthan Ratpoison for sending commands to a running sdorfehs process,\nsuch as a script controlling sdorfehs to restore a particular layout.\n\nRatpoison's IPC only requires that a process create a new X11 window\nand set an Atom on it, which the parent Ratpoison process reads and\nexecutes the value of that Atom.\nAn unprivileged application that only has an X11 connection (say a\nsandboxed Firefox child process) could set the `RP_COMMAND_REQUEST`\nAtom property on its existing window with a value of `0exec\nsomething` to cause Ratpoison to read it and execute that shell\ncommand as the user id running Ratpoison.\n\nsdorfehs's IPC mechanism switches to a Unix socket in the\n`~/.config/sdorfehs` directory which ensures the requesting process\nhas the ability to make socket connections and can write to that\npath.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcs%2Fsdorfehs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcs%2Fsdorfehs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcs%2Fsdorfehs/lists"}