LogoPyloid
ApiPyloid

Pyloid

Pyloid is a desktop application framework built on top of PySide6. It simplifies window creation, system tray management, clipboard interaction, RPC communication, file watching, and more. All functions in Pyloid are thread-safe, meaning they can be safely executed from threads other than the main thread.


Initialization

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)

Parameters

Prop

Type

Returns

PyloidThe initialized application instance

Window Management

create_window

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)

window = app.create_window(
    title="Main Window",
    width=1024,
    height=768,
    x=100,
    y=100,
    frame=True,
    context_menu=True,
    dev_tools=True,
    transparent=False,
    zoomable=False,
    IPCs=[],
)

Parameters

Prop

Type

Returns

BrowserWindowThe created browser window instance

get_windows

Returns a dictionary of all browser windows.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
window = app.create_window(title="Your Window Title")

########## Usage ##########

windows = app.get_windows()

print(windows["your-window-id"].get_title()) # "Your Window Title"

Returns

Dict[str, BrowserWindow]Dictionary of all windows.

get_window_by_id

Returns the window with the given ID.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
window = app.create_window(title="Your Window Title")

########## Usage ##########

window_by_id = app.get_window_by_id(window.get_id()) # BrowserWindow instance

# window == window_by_id : same instance
# you can use this to get the window instance by id for multi window application

print(window_by_id.get_title()) # "Your Window Title"

Parameters

Prop

Type

Returns

Optional[BrowserWindow]Window object or None.

show_main_window

Shows and focuses the first window.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
window = app.create_window(title="Your Window Title")

########## Usage ##########

app.show_main_window() # main window is the first window that was created

Returns

None

focus_main_window

Focuses the first window.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
window = app.create_window(title="Your Window Title")

########## Usage ##########

app.focus_main_window() # main window is the first window that was created

Returns

None

show_and_focus_main_window

Shows and focuses the first window.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
window = app.create_window(title="Your Window Title")

########## Usage ##########

app.show_and_focus_main_window() # main window is the first window that was created

Returns

None

close_all_windows

Closes all windows.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)
window = app.create_window(title="Your Window Title")

########## Usage ##########

app.close_all_windows() # close all windows

Returns

None

quit

Quits the application.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.quit() # quit the application

Returns

None

Application Icon

set_icon

Dynamically sets the application's icon.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_icon("icon.png") # set the application icon

Parameters

Prop

Type

Returns

boolTrue if successful.

Tray System

set_tray_icon

Dynamically sets the tray icon.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_tray_icon("icon.png") # set the tray icon

Parameters

Prop

Type

Returns

boolTrue if successful.

set_tray_menu_items

Dynamically sets the tray menu items.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_tray_menu_items([
    {"label": "Open", "callback": lambda: app.show_main_window()},
    {"label": "Quit", "callback": app.quit}
])

Parameters

Prop

Type

Returns

boolTrue if successful.

set_tray_actions

Dynamically sets the actions for tray icon activation.

from pyloid import Pyloid

app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_tray_actions({TrayEvent.DoubleClick: lambda: app.show_main_window()})

Parameters

Prop

Type

Returns

boolTrue if successful.

set_tray_icon_animation

Dynamically sets and starts the animation for the tray icon.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_tray_icon_animation(
    [
        'frame1.png',
        'frame2.png',
        'frame3.png',
    ],
    100,
)

Parameters

Prop

Type

Returns

boolTrue if successful.

set_tray_tooltip

Dynamically sets the tooltip for the tray icon.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_tray_tooltip('Pyloid is running')

Parameters

Prop

Type

Returns

boolTrue if successful.

Notification

show_notification

Displays a notification in the system tray.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.show_notification("Hello", "This is a notification.")

Parameters

Prop

Type

Returns

None

set_notification_callback

Sets the callback function to be called when a notification is clicked.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

def on_notification_click():
    print("Notification clicked")

app.set_notification_callback(on_notification_click)

Parameters

Prop

Type

Returns

boolTrue if successful.

Clipboard

set_clipboard_text

Copies text to the clipboard.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_clipboard_text("Copied text")

Parameters

Prop

Type

Returns

None

get_clipboard_text

You can use this function to retrieve the text currently on the clipboard.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

text = app.get_clipboard_text()

print(text) # "Copied text"

Returns

strClipboard text.

set_clipboard_image

Copies an image to the clipboard.

This function can accept not only image file paths but also byte data or os.PathLike objects.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_clipboard_image("image.png")

Parameters

Prop

Type

Returns

None

get_clipboard_image

You can use this function to retrieve the image currently on the clipboard. The returned image is of QImage type. If there's no image on the clipboard, it returns None.

With the QImage object, you can perform various operations such as image processing, display, saving, etc.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

img = app.get_clipboard_image()

print(img) # QImage object

Returns

Optional[QImage]Clipboard image object or None

Monitor

get_all_monitors

Returns information about all connected monitors.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

monitors = app.get_all_monitors()
for monitor in monitors:
    print(monitor.info())

Returns

List[Monitor]List containing monitor information.

get_primary_monitor

Returns information about the primary monitor.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

primary_monitor = app.get_primary_monitor()
print(primary_monitor.info())

Returns

MonitorPrimary monitor information.

Autostart

set_auto_start

Sets the application to start automatically at system startup. more guide here.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_auto_start(True) # enable auto-start
app.set_auto_start(False) # disable auto-start

# in production, it will return True or False
# in development, it will return None and do nothing

Parameters

Prop

Type

Returns

Union[bool, None]True if enabled, False if disabled, None if unsupported.

is_auto_start

Checks if the application is set to start automatically at system startup. more guide here.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

print(app.is_auto_start()) # True or False

Returns

boolWhether auto-start is active.

File Watcher

watch_file

Adds a file to the watch list.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

result = app.watch_file("path/to/file.txt")

print(result) # True if successful

Parameters

Prop

Type

Returns

boolTrue if successful.

watch_directory

Adds a directory to the watch list.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

result = app.watch_directory("path/to/directory")

Parameters

Prop

Type

Returns

boolTrue if successful.

stop_watching

Removes a file or directory from the watch list.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

result = app.stop_watching("path/to/watch")

Parameters

Prop

Type

Returns

boolTrue if successful.

get_watched_paths

Returns all currently watched paths.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

paths = app.get_watched_paths()

Returns

List[str]Watched paths or files or directories.

get_watched_files

Returns all currently watched files.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

files = app.get_watched_files()

Returns

List[str]Watched file paths.

get_watched_directories

Returns all currently watched directories.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

directories = app.get_watched_directories()

Returns

List[str]Watched directory paths.

remove_all_watched_paths

Removes all paths from the watch list.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.remove_all_watched_paths()

Returns

None

set_file_change_callback

Sets the callback function to be called when a file is changed.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_file_change_callback(lambda path: print(f"File changed: {path}"))

Parameters

Prop

Type

Returns

None

set_directory_change_callback

Sets the callback function to be called when a directory is changed.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.set_directory_change_callback(lambda path: print(f"Directory changed: {path}"))

Parameters

Prop

Type

Returns

None

File Dialogs

open_file_dialog

Opens a dialog to open a file. This functionality is implemented using PySide6's QFileDialog class.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

file_path = app.open_file_dialog(dir="/home/user", filter="Text Files (*.txt);;All Files (*)")
if file_path:
    print("Selected file:", file_path)

Parameters

Prop

Type

Returns

Optional[str]Returns the path of the selected file. Returns None if no file is selected.

save_file_dialog

Opens a dialog to save a file. This functionality is implemented using PySide6's QFileDialog class.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

file_path = app.save_file_dialog(dir="/home/user", filter="Text Files (*.txt);;All Files (*)")
if file_path:
    print("File will be saved to:", file_path)

Parameters

Prop

Type

Returns

Optional[str]Returns the path of the selected file. Returns None if no file is selected.

select_directory_dialog

Opens a dialog to select a directory. This functionality is implemented using PySide6's QFileDialog class.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

directory_path = app.select_directory_dialog(dir="/home/user")
if directory_path:
    print("Selected directory:", directory_path)

Parameters

Prop

Type

Returns

Optional[str]Returns the path of the selected directory. Returns None if no directory is selected.

Platform Dirs

user_data_dir

Returns the user data directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

data_dir = app.user_data_dir()

Returns

strPath to the user data directory.

site_data_dir

Returns the site data directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

data_dir = app.site_data_dir()

Returns

strPath to the site data directory.

user_cache_dir

Returns the user cache directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

cache_dir = app.user_cache_dir()

Returns

strPath to the user cache directory.

user_log_dir

Returns the user log directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

log_dir = app.user_log_dir()

Returns

strPath to the user log directory.

user_documents_dir

Returns the user documents directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

docs_dir = app.user_documents_dir()

Returns

strPath to the user documents directory.

user_downloads_dir

Returns the user downloads directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

downloads_dir = app.user_downloads_dir()

Returns

strPath to the user downloads directory.

user_pictures_dir

Returns the user pictures directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

pictures_dir = app.user_pictures_dir()

Returns

strPath to the user pictures directory.

user_videos_dir

Returns the user videos directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

videos_dir = app.user_videos_dir()

Returns

strPath to the user videos directory.

user_music_dir

Returns the user music directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

music_dir = app.user_music_dir()

Returns

strPath to the user music directory.

user_desktop_dir

Returns the user desktop directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

desktop_dir = app.user_desktop_dir()

Returns

strPath to the user desktop directory.

user_runtime_dir

Returns the user runtime directory path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

runtime_dir = app.user_runtime_dir()

Returns

strPath to the user runtime directory.

Store API

store

Returns a Store instance for the given path.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

store = app.store("settings.json")
store.set("theme", "dark")
print(store.get("theme"))

Parameters

Prop

Type

Returns

StoreStore object supporting .set() and .get().

Run the App

run

Runs the application event loop.

from pyloid import Pyloid
app = Pyloid(app_name="MyApp", single_instance=True)

########## Usage ##########

app.run()

Returns

NoneStarts the application event loop.