Skip to content

ahsand97/orcsome3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orcsome3 is a port from python2 to python3 and rework of orcsome, which is a scripting extension for NETWM compliant window managers.

Features

  • Written on python3. It means very hackable.
  • Optimization, cpu and memory efficiency are top goals (cffi is used for xlib bindings).
  • Extensive use of python3 syntax to provide easy and expressive eDSL in configuration script.
  • Supports NETWM standards.
  • Very thin wrapper around X. You can use existing xlib background.

Installation

Before installing orcsome3 it is necessary to have the build dependencies installed:

orcsome3 uses the following libraries:

  • libev: Full-featured and high-performance event loop
  • X11
  • Xss: X11 Screen Saver extension client library
  • Xext: Misc X Extension Library
  • gd: GD graphics library
  • MagickWand: C API for ImageMagick

To install them:

Debian/Ubuntu

sudo apt install libev-dev libx11-dev libxss-dev libxext-dev libgd-dev

It is necessary to install ImageMagick7 from source:

sudo apt remove -y imagemagick imagemagick-6-common
sudo apt build-dep -y imagemagick
wget https://imagemagick.org/archive/ImageMagick.tar.gz
mkdir -p ./ImageMagick7
tar xvzf ImageMagick.tar.gz --directory ./ImageMagick7 --strip-components=1
cd ImageMagick7
./configure
make
sudo make install
sudo ldconfig /usr/local/lib

Arch Linux

sudo pacman -S libev libx11 libxss libxext imagemagick

After installing the build dependencies, orcsome3 can be installed:

From PyPI

python3 -m pip install orcsome3

From source

git clone --depth=1 git://github.com/ahsand97/orcsome3.git
cd orcsome3
python3 -m pip install .

orcsome3 installs an executable script "orcsome3" located in ~/.local/bin/orcsome3 at a user level or in /usr/bin/orcsome3 if it was installed as root


Quick start

Some of the functionalities offered are:

  • To bind global hot keys
  • To hide the title bar when a window is maximized
  • To change the icon of a window

Edit ~/.config/orcsome3/rc.py:

from orcsome3.orcsome import get_wm
from orcsome3.orcsome.wm import WM
from pathlib import Path

wm: WM = get_wm()

# Global hotkey
@wm.on_key(keydef="Control + b")
def on_pressed_hotkey() -> None:
    print("Control + b was pressed")

# Change window icon
@wm.on_manage(name="easyeffects", cls="easyeffects")
def on_create_easyeffects() -> None:
    path_imagen: Path = Path("/my/other/icon/icon.svg")
    wm.event_window.set_window_icon(icon=path_imagen)

# Hide title bar when a window is maximized
@wm.on_property_change(properties=["_NET_WM_STATE"])
def window_state_changed() -> None:
    if wm.event_window.maximized_horz and wm.event_window.maximized_vert:
        if wm.event_window.decorated:
            wm.set_window_state(window=wm.event_window, decorate=False)
    else:
        if not wm.event_window.decorated:
            wm.set_window_state(window=wm.event_window, decorate=True)

And start orcsome3. That's all.