{"id":15148709,"url":"https://github.com/letoram/durden","last_synced_at":"2025-06-30T06:34:06.512Z","repository":{"id":32169091,"uuid":"35742338","full_name":"letoram/durden","owner":"letoram","description":"Desktop Environment for Arcan","archived":false,"fork":false,"pushed_at":"2025-02-18T22:37:08.000Z","size":13944,"stargazers_count":259,"open_issues_count":6,"forks_count":16,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-06-29T00:58:54.954Z","etag":null,"topics":["desktop-environment","freebsd","linux","openbsd","tiling-window-manager","window-manager"],"latest_commit_sha":null,"homepage":"http://durden.arcan-fe.com","language":"Lua","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/letoram.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null}},"created_at":"2015-05-16T22:17:56.000Z","updated_at":"2025-05-19T14:58:17.000Z","dependencies_parsed_at":"2023-02-11T22:46:34.164Z","dependency_job_id":"da14f271-dbd9-41f0-a9e4-9cea5ef47caf","html_url":"https://github.com/letoram/durden","commit_stats":{"total_commits":1343,"total_committers":7,"mean_commits":"191.85714285714286","dds":"0.42889054355919587","last_synced_commit":"1f85b27842c913b70bda42582bebe8be55b46b87"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/letoram/durden","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letoram%2Fdurden","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letoram%2Fdurden/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letoram%2Fdurden/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letoram%2Fdurden/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/letoram","download_url":"https://codeload.github.com/letoram/durden/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/letoram%2Fdurden/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262724228,"owners_count":23354204,"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":["desktop-environment","freebsd","linux","openbsd","tiling-window-manager","window-manager"],"created_at":"2024-09-26T13:21:55.667Z","updated_at":"2025-06-30T06:34:06.481Z","avatar_url":"https://github.com/letoram.png","language":"Lua","readme":"About\n=====\nDurden is a free (3-clause BSD) desktop environment for Arcan, thus it requires\na working arcan installation, optionally set-up with compatible launch targets\netc. See the [Arcan](http://github.com/letoram/arcan) repository and wiki for\nthose details.\n\nFor detailed feature and use descriptions, please see the\n[Durden-Web](http://durden.arcan-fe.com). The individual markdown pages are\nalso accessible in the gh-pages branch of the durden repository.\n\nAuthors and Contact\n=====\nDevelopment is discussed on the IRC channel #arcan on the Freenode network\n(chat.freenode.org)\n\n2015-2019, Björn Ståhl\n\nLicensing\n=====\nDurden is Licensed in the 3-clause BSD format that can be found in the\nlicensing file.\n\nThe included terminal font, Hack-Bold is (c) Chris Simpkins\nand licensed under the Apache-2.0 license.\n\nThe included UI font, IBM/Plex, is provided free via the SIL OpenFont License 1.1.\n\nThe included cursors, phinger, are provided free (cc-by-sa 4.0)\nhttps://github.com/phisch/phinger-cursors\n\nThe included fallback font, Emoji-One, is provided free (cc-by 4.0 attribution)\nby http://emojione.com\n\nHacking\n=====\nSee the HACKING.md file for information on where/how to extend and modify.\n\nInstallation\n============\nDurden requires a working installation of [arcan](https://github.com/letoram/arcan)\nso please refer to that project for low level details, which also may cover\nsystem keymap (the facilities provided in durden are higher level overrides).\n\nThe arcan documentation also covers specifics on how to get X, wayland and\nother clients to work.\n\nOther than that, you need to link or copy the durden subdirectory of this\nrepository to were arcan looks for applications, or use an absolute path,\nlike:\n\n    arcan $HOME/durden/durden\n\nSee also the starting section below, as well as the configuration sections\nfurther below.\n\nStarting\n=====\ndistr/durden is a support script that can be run to try and automatically\nset everything up and start. It also takes care of relaunch/recover if the\nprogram terminated abnormally.\n\nIf you have a system that uses the \"XDG\" set of directories, the script will\nbuild the directory tree in XDG\\_DATA\\_HOME/arcan, otherwise it will use\n$HOME/.arcan. To help debug issues, you can create a 'logs' folder in that\ndirectory and both engine output, Lua crash dumps and frameserver execution\nwill be stored there.\n\nConfiguration (runtime)\n=======================\nMost changes, from visuals to window management behavior and input device\nactions, can be done from within durden and the UI itself using the menu HUD.\nBy default, this is accessed from META1+G for (global) and META1+T for\ncurrent window (target).\n\nAll actions in durden are mapped into a huge virtual filesystem tree.\nKeybindings, UI buttons etc. are all simply paths within this filesystem.\n\nThese are covered in much more detail on the webpage, but the ones you might\nwant to take extra note of is:\n\n    /global/input/bind/custom\n\t\t/global/system/shutdown/yes\n\t\t/global/open/terminal\n\t\t/global/input/keyboard/maps/bind_sym\n\t\t/global/input/keyboard/maps/bind_utf8\n\nAnother thing to note is that at startup, after a crash or keyboard plug event,\na fallback helper is activated. This triggers after a number of keypresses\nthat does not activate a valid keybinding. It will then query for re-binding\nkey functions, (meta keys, global menu, menu navigation) as a means for\nrecovering from a broken or unknown keyboard.\n\nYou can also reach most paths with a mouse by right- clicking on the active\nworkspace indicator on the statusbar.\n\nConfiguration (manual)\n=======================\nThere are four ways of configuring durden without using the UI:\n\n1. The arcan\\_db tool\n\n(See the manpage for more uses of this tool.)\n\nThis works offline (without durden running) and only after first successful run.\nAll current settings are stored in a database. This can be viewed, and changed,\nlike this:\n\n     arcan_db show_appl durden\n\t\t arcan_db add_appl_kv durden my_key\n\nOr clear all settings and revert to defaults on the next run:\n\n     arcan_db drop_appl durden\n\nThis is also used to control which programs (targets) and sets of arguments\n(configuration) durden is allowed to run. This restriction is a safety/security\nmeasure. Something like:\n\n    arcan_db add_target test BINARY /usr/bin/test arg1\n\t\tarcan_db add_config test default arg2 arg3\n\nWould be added to /global/open/target/test\n\n2. Files\n\nThe default settings used on an empty database is found in:\n\n    durden/config.lua\n\nYou can also control what is being run at startup in:\n\n    durden/autorun.lua\n\nThe first time durden is run, the following script will be run:\n\n    durden/firstrun.lua\n\nAdvanced input device configuration is in durden/devmaps for the various\ncategories of devices.\n\n3. Controls\n\nEverything can be accessed and controlled (while running) using a domain socket.\nThis is enabled through the (global/settings/system/control=name) path.\n\nIf enabled, it will appear in durden/ipc/name. You can use the socat tool to\ninteract with it and control everything as if using input in the UI directly.\n\nThe commands accepted by this socket is any of (ls, readdir, eval, read, write, exec)\nto navigate the menu tree, as well as a 'monitor' command which lets you monitor\nsubsystem activity.\n\nThere is also a 'MONITOR' command that lets you monitor one or several subsystems.\n\nThere is also a tool in arcan that can be built and run, arcan\\_cfgfs, which\nallows the control socket to be mounted and treated like a filesystem.\n\nTroubleshooting\n====\nThere are many moving parts that can go wrong, the display server aspects when\nit comes to managing GPUs, displays, clients and input devices - as well as\nclient behaviors, the window management policies and the features themselves.\n\nOn top of this, there are a number of special cases, like VT switching, crash-\nrecovery, display hot-plug, soft-reset and 'suspend-exec until program return'\nscenarios that all massage these different subsystems in ways that are hard to\ntest automatically and for every configuration.\n\nIf durden itself crashes, the recovery can be so fast that you won't notice,\nbut the notification widget (if enabled) on the HUD will likely provide you\nwith a crash log.\n\nIf you suspect a client of behaving badly, you can start it with the environment\nARCAN\\_SHMIF\\_DEBUG=1 to get a trace of what goes on, and there are multiple\ntools in the arcan source repository for live-inspecting the state of clients.\n\nYou can also ask a client to provide a debug view for you, if it supports that\nfeature, by going to /target/video/advanced/debug\\_window - calling it multiple\ntimes may provide multiple levels of debug output.\n\nThen there are logging facilities for all the frameservers, durden itself (if\nrun through the launcher script) and .lua snapshots on soft-crashes. These are\nall enabled by creating a 'logs' directory inside your .arcan folder (on non-xdg\nsystems, that would be $HOME/.arcan) and restart durden.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletoram%2Fdurden","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fletoram%2Fdurden","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fletoram%2Fdurden/lists"}