Code Monkey home page Code Monkey logo

calacuda / auto-desk Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 201 KB

A program that controls linux desktop environments and tiling window managers. It uses unix sockets to handle communication with the client program. Development is currently focused on the BSPWM tiling window manager.

License: MIT License

Rust 25.26% Python 4.33% Shell 0.24% Nix 70.16%
api automation desktop-automation desktop-control linux tiling-window-manager bspwm desktop-environment leftwm qtile

auto-desk's Introduction

desktop-automater


Controls Linux tiling window managers and desktop environments. It uses Unix sockets to handle communication with the client program. Development is currently focused on the tiling window manager Qtile.


overview

Desktop automator designed to allow programmatic control of the desktop environments and general system stuff. It runs as a service in the background and is controlled via a client; the two communicate over a Unix Domain Socket. The project was started as an excuse to experiment with Unix Sockets, but a few additions to the original spec have made it quite useful! As of now it is only compatible with LeftWM, Qtile, and BSPWM as those are the environment I use. However support for more tiling window managers, and (maybe) floating window managers is planned for the future.

advantages

  • configuring of layouts that can be done with ease.
  • consistent API and endpoint makes controlling the system easy.
  • simple programmatic API so you can write your own scripts to control the WM/DE and system.
  • consistent across different WM and DE allowing one script to work across mutipple environments.

layouts

layouts allow for opening apps on specific workspaces, and optionally clearing that workspace. They also allow for running of arbitrary commands and will soon have the ability to tear themselves down.

Supported Window Managers

  • BSPWM (support is old but should still work)
  • Qtile (support is old but should still work)
  • LeftWM (tested and working as intended)

documentation

see spec.md

dependencies

  • systemd
  • loginctl
  • alsa
  • playerctl
  • xbacklight
  • xrandr
  • gtk-launch
  • xdotool

current state

I would describe the current state as good enough for basic usage.

planned features/ideas for the future

(ideas the distant future/things I'm considering adding)

  • 1. write a Mycroft skill to add voice control
  • 2. write a rofi script to search through and select layouts.
  • 3. add a "procedure", feature. it will be a list of command to run and will be able to be acivated from a layout files or by its self.
  • 4. and a keystroke parameter to yaml layout files that will send keystrokes to the window. (for qtile this can use the cmd_simulate_keypress function from the qtile helper python library, for others it can use xdotool)

TODOs

(things planned for the immediate/foreseeable future)

  • change between full screen, tiled, floating, and pseudo_tiled.
  • add simple xrandr/autorandr controls.
  • restructure directories to be more rusty.
  • add pass through for querying BSPWM.
  • add better documentation. (ongoing).
  • make layout configured with yaml.
  • make layout function idempotent (add an option to only open the program if not already open)).
  • give layouts the ability to tear them selves down.
  • write an install.sh file as well as default config files.
  • when launching a program make it use gtk-launch to launch desktop files.
  • make setting of layouts multi-threaded.
  • write a rofi script to select between layouts.
  • add Qtile support.
  • add leftwm support.
  • send logs to client and let the client print them as well.
  • add a commands list to the config file. this will be a list of commands to run when the layout is loaded. these commands should be headless shell commands (commands that do not launch a gui of any sort).
  • deprecate iw dependency
  • add support for Hyprland
    • make hyprland plugin to integrate with Auto-desk
    • add Auto-desk controls for Hyprland

development history and schedule

  • 1. make prototype/proof of concept.
  • 2. rewrite in Rust/Golang. (this was done in Rust)
  • 3. add misc features.
  • 4. write systemd service.
  • 5. add mycroft support. (repo)
  • 6. add python module to be imported from qtile conf.
  • 7. add leftwm support.
  • 8. write rofi layout script. (repo)
  • 9. finish port sensor. <= we are working on this. (everything below this is subject to change)
  • 10. add finishing touches to BSPWM/LeftWM/Qtile support.
    • BSPWM
    • LeftWM
    • Qtile

auto-desk's People

Contributors

calacuda avatar

Watchers

 avatar

auto-desk's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.