Simple Wayland HotKey Daemon

Related tags

Miscellaneous swhkd
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
The next generation Canto RSS daemon

Canto Daemon This is the RSS backend for Canto clients. Canto-curses is the default client at: http://github.com/themoken/canto-curses Requirements De

Jack Miller 155 Dec 28, 2022
Simple but maybe too simple config management through python data classes. We use it for machine learning.

??‍✈️ Coqpit Simple, light-weight and no dependency config handling through python data classes with to/from JSON serialization/deserialization. Curre

coqui 67 Nov 29, 2022
A simple program to recolour simple png icon-like pictures with just one colour + transparent or white background. Resulting images all have transparent background and a new colour.

A simple program to recolour simple png icon-like pictures with just one colour + transparent or white background. Resulting images all have transparent background and a new colour.

Anna Tůmová 0 Jan 30, 2022
A simple but flexible plugin system for Python.

PluginBase PluginBase is a module for Python that enables the development of flexible plugin systems in Python. Step 1: from pluginbase import PluginB

Armin Ronacher 1k Dec 16, 2022
A flexible free and unlimited python tool to translate between different languages in a simple way using multiple translators.

deep-translator Translation for humans A flexible FREE and UNLIMITED tool to translate between different languages in a simple way using multiple tran

Nidhal Baccouri 806 Jan 4, 2023
Pattern Matching for Python 3.7+ in a simple, yet powerful, extensible manner.

Awesome Pattern Matching (apm) for Python pip install awesome-pattern-matching Simple Powerful Extensible Composable Functional Python 3.7+, PyPy3.7+

Julian Fleischer 97 Nov 3, 2022
MiniJVM is simple java virtual machine written by python language, it can load class file from file system and run it.

MiniJVM MiniJVM是一款使用python编写的简易JVM,能够从本地加载class文件并且执行绝大多数指令。 支持的功能 1.从本地磁盘加载class并解析 2.支持绝大多数指令集的执行 3.支持虚拟机内存分区以及对象的创建 4.支持方法的调用和参数传递 5.支持静态代码块的初始化 不支

keguoyu 60 Apr 1, 2022
A simple but flexible plugin system for Python.

PluginBase PluginBase is a module for Python that enables the development of flexible plugin systems in Python. Step 1: from pluginbase import PluginB

Armin Ronacher 935 Feb 20, 2021
Simple yet flexible natural sorting in Python.

natsort Simple yet flexible natural sorting in Python. Source Code: https://github.com/SethMMorton/natsort Downloads: https://pypi.org/project/natsort

Seth Morton 712 Dec 23, 2022
A Python utility belt containing simple tools, a stdlib like feel, and extra batteries. Hashing, Caching, Timing, Progress, and more made easy!

Ubelt is a small library of robust, tested, documented, and simple functions that extend the Python standard library. It has a flat API that all behav

Jon Crall 638 Dec 13, 2022
A community-driven python bot that aims to be as simple as possible to serve humans with their everyday tasks

JARVIS on Messenger Just A Rather Very Intelligent System, now on Messenger! Messenger is now used by 1.2 billion people every month. With the launch

Swapnil Agarwal 1.3k Jan 7, 2023
Simple utlity for sniffing decrypted HTTP/HTTPS traffic on a jailbroken iOS device into an HAR format.

Description iOS devices contain a hidden feature for sniffing decrypted HTTP/HTTPS traffic from all processes using the CFNetwork framework into an HA

null 83 Dec 25, 2022
Simple tooling for marking deprecated functions or classes and re-routing to the new successors' instance.

pyDeprecate Simple tooling for marking deprecated functions or classes and re-routing to the new successors' instance

Jirka Borovec 45 Nov 24, 2022
A simple service that allows you to run commands on the server using text

Server Text A simple flask service that allows you to run commands on the server/computer over sms. Think of it as a shell where you run commands over

MT Devs 49 Nov 9, 2021
Simple python script for AD enumeration

AutoAD - Simple python script for AD enumeration This tool was created on my spare time to help fellow penetration testers in automating the basic enu

Mohammad Arman 28 Jun 21, 2022
Simple Python tool to check if there is an Office 365 instance linked to a domain.

o365chk.py Simple Python script to check if there is an Office365 instance linked to a particular domain.

Steven Harris 37 Jan 2, 2023
A Python simple Dice Simulator just for fun

Dice Simulator ?? A Simple Python Dice Simulator ?? ?? ?? Description: That program make your RPG session more easy and simple. Roll the dice never be

Lauro Brant 17 May 14, 2022
Shell scripts made simple 🐚

zxpy Shell scripts made simple ?? Inspired by Google's zx, but made much simpler and more accessible using Python. Rationale Bash is cool, and it's ex

Tushar Sadhwani 492 Dec 27, 2022
Simple GUI menu for micropython using a rotary encoder and basic display.

Micropython encoder based menu This is a simple menu system written in micropython. It uses a switch, a rotary encoder and an OLED display.

null 80 Jan 7, 2023