Roster is a modern HTTP client application for GNOME, similar to Postman, built with GTK 4 and libadwaita. Features: - Send HTTP requests (GET, POST, PUT, DELETE) - Configure custom headers with add/remove functionality - Request body editor for POST/PUT/DELETE requests - View response headers and bodies in separate tabs - Track request history with JSON persistence - Load previous requests from history with confirmation dialog - Beautiful GNOME-native UI with libadwaita components - HTTPie backend for reliable HTTP communication Technical implementation: - Python 3 with GTK 4 and libadwaita 1 - Meson build system with Flatpak support - Custom widgets (HeaderRow, HistoryItem) with GObject signals - Background threading for non-blocking HTTP requests - AdwTabView for modern tabbed interface - History persistence to ~/.config/roster/history.json - Comprehensive error handling and user feedback
48 lines
1.1 KiB
Meson
48 lines
1.1 KiB
Meson
pkgdatadir = get_option('prefix') / get_option('datadir') / meson.project_name()
|
|
moduledir = pkgdatadir / 'roster'
|
|
gnome = import('gnome')
|
|
|
|
gnome.compile_resources('roster',
|
|
'roster.gresource.xml',
|
|
gresource_bundle: true,
|
|
install: true,
|
|
install_dir: pkgdatadir,
|
|
)
|
|
|
|
python = import('python')
|
|
|
|
conf = configuration_data()
|
|
conf.set('PYTHON', python.find_installation('python3').full_path())
|
|
conf.set('VERSION', meson.project_version())
|
|
conf.set('localedir', get_option('prefix') / get_option('localedir'))
|
|
conf.set('pkgdatadir', pkgdatadir)
|
|
|
|
configure_file(
|
|
input: 'roster.in',
|
|
output: 'roster',
|
|
configuration: conf,
|
|
install: true,
|
|
install_dir: get_option('bindir'),
|
|
install_mode: 'rwxr-xr-x'
|
|
)
|
|
|
|
roster_sources = [
|
|
'__init__.py',
|
|
'main.py',
|
|
'window.py',
|
|
'models.py',
|
|
'http_client.py',
|
|
'history_manager.py',
|
|
]
|
|
|
|
install_data(roster_sources, install_dir: moduledir)
|
|
|
|
# Install widgets submodule
|
|
widgets_sources = [
|
|
'widgets/__init__.py',
|
|
'widgets/header_row.py',
|
|
'widgets/history_item.py',
|
|
]
|
|
|
|
install_data(widgets_sources, install_dir: moduledir / 'widgets')
|