Simple Wayland HotKey Daemon

Related tags

Miscellaneousswhkd
Overview

swhkd

Simple Wayland HotKey Daemon

This project is still very new and I'm making new decisions everyday as to where I should drive this project.

I'm using libevdev which technically makes swhkd display protocol indepdent, but we'll need to put that to the test before claiming anything.

Currently I have only been able to achieve the grabbing of input evdev, I don't know how I will process chains of keybinds, but we'll get to that soon.

Python:

Adressing the elephant in the room, python. Python is good enough for the prototype stage of the project, once I have a clear idea and a working prototype, I will port the project to go or zig.

Comments
  • swhkd doesn't start: Os Error, Function not implemented

    swhkd doesn't start: Os Error, Function not implemented

    Version Information:

    • Distribution Information ( run uname -a ): Linux FrameWork 5.16.11-arch1-1 #1 SMP PREEMPT Thu, 24 Feb 2022 02:18:20 +0000 x86_64 GNU/Linux
    • swhkd version ( swhkd -V ) swhkd 1.0.0

    Describe the bug: I installed from the AUR (swhkd-git), when I try to run start the daemon I get the following error msg:

    $ swhks &
    $ pkexec swhkd -c ~/.config/swhkd/swhkdrc
    [2022-03-02T00:49:56Z WARN  swhkd] Running swhkd as root!
    Error: Os { code: 38, kind: Unsupported, message: "Function not implemented" }
    

    Expected behavior: The daemon to start succefully.

    Actual behavior: Daemon doesn't start and crashes.

    To Reproduce:

    $ paru -S swhkd
    $ swhks &
    $ pkexec swhkd -c ~/.config/swhkd/swhkdrc
    

    I also tried installing straight from the github:

    $ git clone https://github.com/waycrate/swhkd
    $ cd swhkd
    $ git rev-parse HEAD
    3986dd01a31c168e91a3de038911745293dfa574
    $ make setup
    $ make glibc
    $ sudo make install
    

    But the same crash happens.

    Bug 
    opened by loiccoyle 18
  • Re-emit ignored events from grabbed devices to uinput devices

    Re-emit ignored events from grabbed devices to uinput devices

    Ignored events (i.e. events other than key presses for now) are re-emitted to the uinput devices. This allows grabbing mouses and other pointer devices while still allowing the cursors to work.

    In some cases, events are not re-emitted at all when the uinput device handles keys, relative axes and switches. By sending switch events to a separate uinput device just for switches and another one for keys and relative axes, we can re-emit keys, pointer events, and switches events properly.

    Enhancement 
    opened by ajanon 16
  • `pkexec swhkd` turn off the wifi on start

    `pkexec swhkd` turn off the wifi on start

    Version Information:

    • Distribution Information ( run uname -a )

    Debian 5.18.16

    • swhkd version ( swhkd -V )

    swhkd 1.2.1

    Describe the bug: pkexec swhkd turn off the wifi on start. I have to enable it manually after.

    Note

    • It turns off the wifi (not disconnect)
    • Reload config is fine.

    Expected behavior: Don't turn off wifi

    Actual behavior:

    ❯ pkexec swhkd -d -c ~/.config/swhkd/swhkdrc
    [2022-11-28T13:34:22Z TRACE swhkd] Logger initialized.
    [2022-11-28T13:34:22Z TRACE swhkd] Invoking UID: 85819
    [2022-11-28T13:34:22Z TRACE swhkd] Setting process umask.
    [2022-11-28T13:34:22Z ERROR swhkd] XDG_RUNTIME_DIR has not been set.
    [2022-11-28T13:34:22Z TRACE swhkd] Reading /run/swhkd/swhkd_85819.pid file and checking for running instances.
    [2022-11-28T13:34:22Z DEBUG swhkd] Previous PID: 1559337
    [2022-11-28T13:34:23Z WARN  swhkd] Running swhkd as root!
    [2022-11-28T13:34:23Z DEBUG swhkd::perms] Setting initgroups...
    [2022-11-28T13:34:23Z DEBUG swhkd::perms] Setting EGID...
    [2022-11-28T13:34:23Z DEBUG swhkd::perms] Setting EUID...
    [2022-11-28T13:34:23Z DEBUG swhkd] Using config file path: "/home/timgreen/.config/swhkd/swhkdrc"
    [2022-11-28T13:34:23Z DEBUG swhkd::perms] Setting EGID...
    [2022-11-28T13:34:23Z DEBUG swhkd::perms] Setting EUID...
    [2022-11-28T13:34:23Z DEBUG swhkd::perms] Setting initgroups...
    [2022-11-28T13:34:23Z TRACE swhkd] Attempting to find all keyboard file descriptors.
    [2022-11-28T13:34:23Z TRACE swhkd] Other: sof-hda-dsp HDMI/DP,pcm=5
    [2022-11-28T13:34:23Z TRACE swhkd] Other: sof-hda-dsp HDMI/DP,pcm=4
    [2022-11-28T13:34:23Z TRACE swhkd] Other: sof-hda-dsp HDMI/DP,pcm=3
    [2022-11-28T13:34:23Z TRACE swhkd] Other: sof-hda-dsp Headphone
    [2022-11-28T13:34:23Z TRACE swhkd] Other: sof-hda-dsp Mic
    [2022-11-28T13:34:23Z TRACE swhkd] Other: Integrated RGB Camera: Integrat
    [2022-11-28T13:34:23Z TRACE swhkd] Other: ELAN067A:00 04F3:3197 Touchpad
    [2022-11-28T13:34:23Z TRACE swhkd] Other: ELAN067A:00 04F3:3197 Mouse
    [2022-11-28T13:34:23Z TRACE swhkd] Other: Integrated RGB Camera: Integrat
    [2022-11-28T13:34:23Z TRACE swhkd] Other: ThinkPad Extra Buttons
    [2022-11-28T13:34:23Z TRACE swhkd] Other: Wacom Pen and multitouch sensor Finger
    [2022-11-28T13:34:23Z TRACE swhkd] Other: Wacom Pen and multitouch sensor Pen
    [2022-11-28T13:34:23Z TRACE swhkd] Other: TPPS/2 Elan TrackPoint
    [2022-11-28T13:34:23Z TRACE swhkd] Other: Video Bus
    [2022-11-28T13:34:23Z TRACE swhkd] Other: Power Button
    [2022-11-28T13:34:23Z TRACE swhkd] Other: Lid Switch
    [2022-11-28T13:34:24Z TRACE swhkd] Other: PC Speaker
    [2022-11-28T13:34:24Z TRACE swhkd] Other: Sleep Button
    [2022-11-28T13:34:24Z DEBUG swhkd] Keyboard: AT Translated Set 2 keyboard
    [2022-11-28T13:34:24Z DEBUG swhkd] 1 Keyboard device(s) detected.
    [2022-11-28T13:34:24Z ERROR swhkd] XDG_RUNTIME_DIR has not been set.
    [2022-11-28T13:34:37Z DEBUG swhkd] state_modifiers: {
    

    To Reproduce: Just run pkexec swhkd

    Additional information: Anything else you'd like us to know ?

    Happy to grab other logs to happy debugging.

    Bug 
    opened by timgreen 14
  • Add ability to load multiple config

    Add ability to load multiple config

    Example:

    # /home/waycrate/.config/swhkd/swhkdrc
    super + enter
        alarcritty
    super + shift + w
        firefox
    
    # /home/waycrate/.dwm/swhkdrc
    use /home/waycrate/.config/swhkd/swhkdrc
    super + q
        dwmc quit
    

    As you can see in the code, we can anyone of use import include source as the token

    Todo:

    • [x] error checks for each config file imported and report error with the file path
    • [ ] do some clean up
    • [ ] write test functions for testing a config file (read the file and compare the result)
    • [ ] support relative path and ~/ in path
    Enhancement 
    opened by EdenQwQ 13
  • cargo package / crates io?

    cargo package / crates io?

    Describe the bug:

    Can see here a cargo.toml file in the root folder of this repo / the main project repo. However cannot seem to just cargo install ... the software like other rust packages. So is this something planned for the future?

    Have tried the following on the cmdline:

    ⏚ θ127° [id:~/.bin] $ cargo install Swhkd
        Updating crates.io index
    error: could not find `Swhkd` in registry `crates-io` with version `*`
    ⏚ θ127° [id:~/.bin] 101 $ cargo install swhkd
        Updating crates.io index
    error: could not find `swhkd` in registry `crates-io` with version `*`
    ⏚ θ127° [id:~/.bin] 101 $ cargo install swhkd-git
        Updating crates.io index
    error: could not find `swhkd-git` in registry `crates-io` with version `*`
    ⏚ θ127° [id:~/.bin] 101 $ cargo install swhkd-musl-git
        Updating crates.io index
    error: could not find `swhkd-musl-git` in registry `crates-io` with version `*`
    ⏚ θ127° [id:~/.bin] 101 $ cargo install swhkd-bin
        Updating crates.io index
    error: could not find `swhkd-bin` in registry `crates-io` with version `*`
    ⏚ θ127° [id:~/.bin] 101 $ cargo install swhkd-musl-bin
        Updating crates.io index
    error: could not find `swhkd-musl-bin` in registry `crates-io` with version `*`
    ⏚ θ127° [id:~/.bin] 101 $ cargo install swhks
        Updating crates.io index
    error: could not find `swhks` in registry `crates-io` with version `*`
    ⏚ θ127° [id:~/.bin] 101 $ 
    

    Additional information: Anything else you'd like us to know ?

    Bug 
    opened by dreamcat4 11
  • modal feature missing?

    modal feature missing?

    Version Information:

    • linux 5.16.11-arch1-2
    • swhkd 1.1.0

    Describe the bug: sxhkd has the modal feature, e.g. (example from https://github.com/baskerville/sxhkd/blob/master/README.md )

    super + o ; {e,w,m}
    	{gvim,firefox,thunderbird}
    

    swhkd doesn't seem to recognize the semicolor ;. Is this implemented yet?

    Expected behavior: Drop in replacement for sxhkd.

    Actual behavior: semicolon ; causes error.

    To Reproduce: same as above

    super + o ; {e,w,m}
    	{gvim,firefox,thunderbird}
    

    Additional information: Great project! Thank you!

    Enhancement Good first issue 
    opened by tsankuanglee 11
  • fix: patch CVE-2022-27814

    fix: patch CVE-2022-27814

    From what I've seen, std::fs::File::open() doesn't take into account the UID when trying to detect files. To prevent detection of root-owned files in root directories, I've resorted to using the system /bin/cat command for now to open files. It's hacky, but it seems to work.

    opened by angelofallars 8
  • Chords do not work

    Chords do not work

    Version Information:

    • Distribution Information ( run uname -a ) Linux xircon-w6567sz 5.16.16-zen1-1-zen #1 ZEN SMP PREEMPT Mon, 21 Mar 2022 22:59:42 +0000 x86_64 GNU/Linux
    • swhkd version ( swhkd -V ) swhkd 1.1.7

    Describe the bug: Chords not working

    super + n:  {n,p,d,x}
        {variety -n, variety -p, variety -t, variety --pause && notify-send Paused} 
    
    [2022-03-28T13:43:13Z ERROR swhkd] Config Error: Error parsing config file "/etc/swhkd/swhkdrc". Unknown symbol at line 11.
    

    Expected behavior: Should work as it does in sxhkd.

    Actual behavior: See error swhkd does not load.

    Bug 
    opened by xircon 7
  • Add changelog

    Add changelog

    We're currently missing a changelog file. Having a changelog file directly inside the repository would help track changes. This would also make it easier to create new releases as we could just copy and paste what is already available in the changelog file.

    I would suggest using something like Keep a Changelog for this. We can add this file with the latest changes only for now, and try to add previous releases to this file gradually later on.

    We could also enforce updating the changelog on PRs to ensure we do have everything in there.

    This issue is mainly to discuss this and to think about possible solutions.

    Documentation 
    opened by ajanon 6
  • Grab keys so they don't go to a focused application

    Grab keys so they don't go to a focused application

    what i meant is that with sxhkd the keybindings conflict and sxhkd is given the preference (i think that's how you spell it) so if i press alt + a when i'm focused on pcmanfm the keybinding will work on sxhkd but not pcmanfm

    Discord message

    Somehow we should provide an option to swallow keys so that they don't go to a focused application / the tty.

    Enhancement 
    opened by UnsignedArduino 6
  • [fix] raise swhkd privileges right after reading config

    [fix] raise swhkd privileges right after reading config

    As a fix for CVE-2022-27814, root privileges are dropped to the calling user when (re)loading the config file. Privileges were sometimes dropped but never raised again, which caused crashes when sending SIGHUP to swhkd multiple times in a row.

    This now always raises privileges after successfully reading the config file. Fixes #155.

    Bug 
    opened by ajanon 5
  • Release milestones

    Release milestones

    To help plan features and work on long-term goals for the project, we could use GitHub milestones.

    This would be particularly helpful for deprecation or for big features that could then be split into multiple smaller issues to distribute work more easily.

    For now, we could create a 1.3.0 milestone and add some features we would like to implement. Fixes could just be added as needed and as implemented.

    This would help in bringing features to stable releases in a timely manner (see #194).

    Enhancement 
    opened by ajanon 0
  • Stable release process

    Stable release process

    There is currently no formal process for releasing a stable version of swhkd.

    For 1.2.2, I created a separate branch, split from a specific older commit, on which I updated the Cargo.toml and Cargo.lock files. As the 1.2.2 version is a patch release (semver), this made sense to not include larger changes, such as new features.

    This way of doing releases could be extended to all new swhkd releases.

    Process proposal:

    1. Branch off from a commit -- either from the main branch, or from an already existing release branch
    2. (Optional) Cherry-pick commits from other branches, or develop fixes/features as needed
    3. Update changelogs in the main branch and in the new branch
    4. Update the Cargo.toml and Cargo.lock files in the new branch
    5. Make sure tests pass
    6. Tag the Cargo update commit with the release version
    7. Create a release on GitHub

    Ideally, 2, 3 and 4 would be bundled in a PR, which would ensure 5 gets verified.

    Pros:

    • Easy to cherry-pick fixes, security patches, and other updates onto the stable release branches
    • Less version bumps commits on the main branch
    • Clear history showing where releases diverge from the main branch
    • Probably simpler to package, which may increase adoption (especially for non-rolling distros such as Debian, Ubuntu, Suse, etc)

    Cons:

    • This implicitly assumes that we support older releases, which may increase maintenance in the long run
      • This would in turn means we need to discuss how long we should support these older releases
      • And also, what would "support" actually mean for us?
    • (too) many branches for each stable release, which will clutter the GitHub UI (personally, I think it is fine development-wise to have many branches)
    • Divergence from the main branch

    If we go forward with this process (or another), it could be documented either directly inside the repository (PROCESSES.md?) or the GitHub wiki.

    As always, this proposal is debatable, feel free to chip in!

    Documentation Enhancement 
    opened by ajanon 0
  • Git commit format

    Git commit format

    Currently, git commits tend to follow the [subject] title style. Unfortunately, there is no strict guide for this format as the link given in the CONTRIBUTING.md file is not up to date (https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md links to a 404). In addition, this format is not followed closely by contributors or maintainers: see 04e5125, e4a490 and 321c58c for three different commit styles.

    This was mentioned briefly in #181 (comment https://github.com/waycrate/swhkd/issues/181#issuecomment-1357503117) where we discussed adopting Conventional Commits with automation help from the cocogitto project.

    This issue is for discussing adopting Conventional Commits or alternatives.

    We should also discuss if/how to enforce it. Should we add git hooks? GitHub actions checks? Manually, as part of the PR review process?

    Enhancement 
    opened by ajanon 3
  • `swhkd` should grab all devices

    `swhkd` should grab all devices

    This is a continuation of a discussion from #71.

    First, a small summary of how device grabbing was implemented in swhkd as I understand it:

    To avoid grabbing all devices and swallowing their events (mouse cursor movements, for instance), a keyboard detection algorithm was first implemented in 8bbd34c. It checks if a given device is a keyboard by checking for the presence of the Enter key. This was not completely correct, as some users still had their non-keyboard devices grabbed by swhkd (see #131) and this was causing other issues. For some others, some hardware keys were not recognized as keyboards (see #71).

    In answer to these issues, a --device argument was added to swhkd in b53b8c. This allows users to explicitely tell what devices to use. With some configuration from users, this thus solves the issues.

    Ideally, users should not have to worry about what device swhkd should grab - it should do it correctly out of the box.

    In #163, we added support for re-emitting most device events from the grabbed device to the virtual uinput device of swhkd.

    With this improvement, it should not be necessary anymore to avoid grabbing all devices, as swhkd can just re-emit events as needed. Additionally, the --device argument is probably unnecessary and could be deprecated.

    Enhancement Difficulty: low Component: daemon 
    opened by ajanon 3
  • Update Cargo.toml and Cargo.lock to 1.2.2 for 1.2.2 branch

    Update Cargo.toml and Cargo.lock to 1.2.2 for 1.2.2 branch

    Cargo.lock was updated using make release.

    Please note that this PR is to be merged into the 1.2.2 branch. There will be a bit of divergence compared to the current main branch, but this allows us to make a proper fix release.

    1.2.2 contains a number of fixes. Below is a tentative release text for this version based in part on keep a changelog as discussed in #181:

    1.2.2

    Added

    • swhks debug command line option to get verbose logging
    • swhks log command line option to log to a file
    • swhkd-vim installs alongside swhkd in the AUR package

    Changed

    • swhks no longer defaults to a verbose output (see debug flag)
    • swhks logs to a file by default
    • swhks now logs command output by default
    • man pages are now gzipped as part of the build process

    Fixed

    • Incorrect short version flag documentation in swhkd man page.
    • Release key events are no longer shadowed by press events (#159)
    • Sending multiple SIGHUP to swhkd to reload the config file no longer crashes (#155)

    I am not 100% sure that the changelog above is accurate, feel free to discuss it. Notably, I am not sure what 2832de8 is about. @EdenQwQ would you mind explaining it a bit for the changelog? Additionally, a2cdcee is quite large, and I am not sure if I understood all changes.

    opened by ajanon 4
Releases(1.2.1)
  • 1.2.1(Jul 23, 2022)

  • 1.2.0(May 11, 2022)

    Thanks to @uncomfyhalomacro who packaged swhkd from open suse repos, a multitude of security vulnerabilities were discovered by @mgerstner which primarily arose due to my incompetence and lack of careful review of all pull requests. I apologize for this.

    The following CVE's have been fixed in this release:

    CVE-2022-27815
    CVE-2022-27814
    CVE-2022-27819
    CVE-2022-27818
    CVE-2022-27816
    

    Only CVE-2022-27817 remains as it is a genuinely difficult problem to solve for us right now. After a short conversation with Kenny Levinsen ( author of seatd ) we came to the conclusion that it's not possible to get access of a seat without complete control of the session hence any compositor which is launched after swhkd won't work. We can however get the fd's of the devices, release the seat, and then pass it along to evdev but that will require a complete application rewrite.

    @mgerstner did suggest to try systemd context switching with elogind for supporting various inits. As far as I can tell this implementation will have a time complexity of O(2^n) so as the number of seats increase, swhkd will start to lag because there is a considerable amount of cold start to swhkd after which the application runs fine.

    I'd also like to point out that the above solution will NOT be portable. Distributions that decide to not build elogind support into their init systems will not be able to run swhkd and hence it's not a path that I'd fancy even if it were to fix the problem.

    For now CVE-2022-27817 will probably remain stale. For single user ( single seat ) systems swhkd will function just fine.

    Source code(tar.gz)
    Source code(zip)
    glibc-x86_64-1.2.0.zip(1.31 MB)
    musl_libc-x86_64-1.2.0.zip(1.42 MB)
  • 1.1.7(Mar 13, 2022)

    New features

    Include multiple config files by using the include statement.

    # /etc/swhkd/swhkdrc
    include /home/user/.config/swhkd/swhkdrc
    

    @ and ~ prefixes.

    Add @ before a keysym so that the command will run when the key is released. Add ~ before a keysym so that the keysym would be sent to other clients.

    What's Changed

    • Update release.sh by @uncomfyhalomacro in https://github.com/waycrate/swhkd/pull/84
    • refactor: improve daemon / server code by @angelofallars in https://github.com/waycrate/swhkd/pull/85
    • feat: improve logs in daemon/server by @angelofallars in https://github.com/waycrate/swhkd/pull/86
    • Feat: multiple config file loading & '@' '~' prefix by @EdenQwQ in https://github.com/waycrate/swhkd/pull/87

    New Contributors

    • @uncomfyhalomacro made their first contribution in https://github.com/waycrate/swhkd/pull/84

    Full Changelog: https://github.com/waycrate/swhkd/compare/1.1.5...1.1.7

    Source code(tar.gz)
    Source code(zip)
    glibc-x86_64-1.1.7.zip(3.34 MB)
    musl_libc-x86_64-1.1.7.zip(3.34 MB)
  • 1.1.4(Mar 6, 2022)

Owner
Aakash Sen Sharma
@evilbryan590 is a furry
Aakash Sen Sharma
JPMC Virtual Experience

This repository contains the submitted patch files along with raw files of the various tasks assigned by JPMorgan Chase & Co. through its Software Engineering Virtual Experience Program on Forage (fo

Vardhini K 1 Dec 05, 2021
SimplePyBLE - Python bindings for SimpleBLE

The ultimate fully-fledged cross-platform Python BLE library, designed for simplicity and ease of use.

Open Bluetooth Toolbox 27 Aug 28, 2022
CountBoard 是一个基于Tkinter简单的,开源的桌面日程倒计时应用。

CountBoard 是一个基于Tkinter简单的,开源的桌面日程倒计时应用。 基本功能 置顶功能 是否使窗体一直保持在最上面。 简洁模式 简洁模式使窗体更加简洁。 此模式下不可调整大小,请提前在普通模式下调整大小。 设置功能 修改主窗体背景颜色,修改计时模式。 透明设置 调整窗体的透明度。 修改

gaoyongxian 130 Dec 01, 2022
Identify and annotate mutations from genome editing assays.

CRISPR-detector Here we propose our CRISPR-detector to facilitate the CRISPR-edited amplicon and whole genome sequencing data analysis, with functions

hlcas 2 Feb 20, 2022
A novel dual model approach for categorization of unbalanced skin lesion image classes (Presented technical paper 📃)

A novel dual model approach for categorization of unbalanced skin lesion image classes (Presented technical paper 📃)

1 Jan 19, 2022
Project based on pure python with OOP

Object oriented programming review Object oriented programming (OOP) is among the most used programming paradigms (if not the most common) in the indu

Facundo Abrahan Cerimeli 1 May 09, 2022
Urban Big Data Centre Housing Sensor Project

Housing Sensor Project The Urban Big Data Centre is conducting a study of indoor environmental data in Scottish houses. We are using Raspberry Pi devi

Jeremy Singer 2 Dec 13, 2021
fetchmesh is a tool to simplify working with Atlas anchoring mesh measurements

A Python library for working with the RIPE Atlas anchoring mesh. fetchmesh is a tool to simplify working with Atlas anchoring mesh measurements. It ca

2 Aug 30, 2022
Another Provably Rare Gem Miner 💎 (for Raritygems)

Provably Rare Gem Miner Go (for Rarity) Pull Request is strongly welcome as I don't know anything about Golang/Python/Web3. Usage Install Python 3.x i

朱里 6 Apr 22, 2022
Interactivity Lab: Household Pulse Explorable

Interactivity Lab: Household Pulse Explorable Goal: Build an interactive application that incorporates fundamental Streamlit components to offer a cur

1 Feb 10, 2022
XHacks 2021 Startup Track Winner: Be Heard. Educate, Enact, Empower. No voice left behind. (backend)

Be Heard: X Hacks 2021 Submission Educate, Enact, Empower. No voice left behind. Inspiration To say 2020 was an eventful year would be an understateme

3 Jul 14, 2022
Dicionario-git-github - Dictionary created to help train new users of Git and GitHub applications

Dicionário 📕 Dicionário criado com o objetivo de auxiliar no treinamento de nov

Felippe Rafael 1 Feb 07, 2022
Make after-work Mending More flexible In Python

Mending Make after-work Mending More flexible In Python A Lite Package focuses on making project's after-post mending pythonic and flexible. Certainly

2 Jun 15, 2022
Example teacher bot for deployment to Chai app.

Create and share your own chatbot Here is the code for uploading the popular "Ms Harris (Teacher)" chatbot to the Chai app. You can tweak the config t

Chai 1 Jan 10, 2022
A parser of Windows Defender's DetectionHistory forensic artifact, containing substantial info about quarantined files and executables.

A parser of Windows Defender's DetectionHistory forensic artifact, containing substantial info about quarantined files and executables.

Jordan Klepser 101 Oct 30, 2022
Repository voor verhalen over de woningbouw-opgave in Nederland

Analyse plancapaciteit woningen In deze notebook zetten we cijfers op een rij om de woningbouwplannen van Nederlandse gemeenten in kaart te kunnen bre

Follow the Money 10 Jun 30, 2022
Problem statements on System Design and Software Architecture as part of Arpit's System Design Masterclass

Problem statements on System Design and Software Architecture as part of Arpit's System Design Masterclass

Relog 1.1k Jan 04, 2023
Plux - A dynamic code loading framework for building plugable Python distributions

Plux plux is the dynamic code loading framework used in LocalStack. Overview The

LocalStack 65 Dec 20, 2022
Beancount Importers for DKB (Deutsche Kredit Bank) CSV Exports

Beancount DKB Importer beancount-dkb provides an Importer for converting CSV exports of DKB (Deutsche Kreditbank) account summaries to the Beancount f

Siddhant Goel 24 Aug 06, 2022
Toppr Os Auto Class Joiner

Toppr Os Auto Class Joiner Toppr os is a irritating platform to work with especially for students it takes a while and is problematic most of the time

1 Dec 18, 2021