From 3bad301bcc8a9a4397204cdd9424183585b887e6 Mon Sep 17 00:00:00 2001 From: Benedikt Willi Date: Fri, 9 Jan 2026 14:31:55 +0100 Subject: [PATCH] Refactor browser chrome to use libadwaita for modern GNOME UI Benefits of libadwaita: - Modern, polished UI following GNOME Human Interface Guidelines - Professional HeaderBar with proper navigation button grouping - Better visual hierarchy and spacing - Consistent with modern GNOME applications - Built on GTK 4, same foundation as before Changes: - Replace Gtk.ApplicationWindow with Adw.ApplicationWindow - Use Gtk.HeaderBar for professional top bar with navigation buttons - Improve address bar presentation (placeholder text, better sizing) - Add CSS classes for consistent styling (linked, suggested-action, toolbar) - Better tooltip support for navigation buttons - Add visual frame around tabs bar - Improved status bar styling with toolbar class - Adw.init() called during window creation UI Improvements: - Navigation buttons (Back/Forward/Reload) now grouped with linked styling - Go button highlighted with suggested-action styling - Address bar uses placeholder text instead of default value - Better spacing and margins throughout - More professional appearance overall All tests passing (23/23 in core modules) --- pyproject.toml | 2 +- src/browser/__pycache__/tab.cpython-313.pyc | Bin 5410 -> 5698 bytes src/browser/chrome.py | 90 ++++++++++++-------- 3 files changed, 57 insertions(+), 35 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2ddb420..4b88839 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ requires-python = ">=3.11" license = {text = "MIT"} authors = [{name = "Bowser", email = "bowser@example.com"}] dependencies = [ - "PyGObject>=3.54.0", # GTK+ bindings for Python + "PyGObject>=3.54.0", # GTK+ bindings for Python (includes Adwaita via GI) "skia-python>=87.9", # Skia 2D graphics library "Jinja2>=3.0", # Template engine for pages ] diff --git a/src/browser/__pycache__/tab.cpython-313.pyc b/src/browser/__pycache__/tab.cpython-313.pyc index ee990ac54d6ae62f9bb4f99976d2debf30b9da15..5469c9c559bda4b88367522c748a1c3eb596e9d3 100644 GIT binary patch delta 2159 zcmah~-ES0C6u)<8c6O&byW4jAvBlDEyB3@Rr9#WfVhe?~B9`(oT>`0Qopz_ohV9OJ zXEtb~Sza`ds6cK=F!7=Iv?z&9N__J{@DBjjq-4@W9(WKFO%b(5U%Y4bqXjigvcEa^ z+;h+Q-SaW~S@*52zQv z15#@G9bk?S@!2{L(@9mGKgr47%U9LSvcsw+S|*{9xM8Zq%&JMvsw-^_(`#%i}96{F_d;zv?pt6$lKseSC1ySHoCxd(61f-V<$4M zm{Z|x|1TmGa~*H2oLhS)Z2kCk5^YqGiGDCV4Osmj$$R`UDoizK-Y zG`XST!G+YLEJfm)f5lz)pJz6)YJhb?#R}(s$T@qS9W=%r-&nF;kBS(>KGrZX(T8?c zvmQe2NZ~SK(~y|tKo}Bd@C+K@+R+S_Jv7XBhUTOx{j8ypo*AOfYIA;dO3#_mY9Ec$ z5xzZ7pbzK#qiQOxB|@eiO6zJOH0OwhWWVJ~>&av)leEO7W{xpgBbK0(6w?uC1pCi^Oz9cRY4@^R zLmI#rl#W35EddCyp!{ibHcdyI;XKw1a1p9L1iHxLfwomM3ODTm8Autc49=kkb-|^& z&hP3v=Ld^*JI)I$0+Rd}qZgugTDps#?&UzZ80b1byxh8J-Ym9mJwN>6;d|jt7Y|-I z_`MXmC)Ka;0Wq>HZ~L0gp| z-IaFzy&^Ine;FZmhi?Ky{sSVq74BkqJ1W);hq>Er zAQ)i=AD}-RytDU_)aHy_9}@{AK<1w6xF^HgIdVgIXsH4Ek>?W}T-+>0 zaejoIp7XG+P*RUisncgBMrAhv7B&GpFgXZIJFathWPj|HwZPXMYk>_I!SanQSJ|Bf zzI)1xQD$Ih49=l@9{-YO<6U~+`v#*j=sSfKn~JYYWkx4wRg#z(y)Ks6z}f$zL=MBo zJ^;8T8D~&sLVxnN<0G`D_B|Y=gT9uWN%h m8zdUDgR~gi>CX)tHvWM2tO{K?@(3|lJ&JpA*RP0y&F3E)O2%aX delta 1901 zcmah~O>7fK6rS;V*Y}YE`N8W=Z&ItB&Mv-@G^P zoA)y_zSsR-GX5eKlMx$V|20`DDRc2wY|d>R?QTUIQ8v5|Wg|NRU`B{UxlU%f=$cL` z3z{-_Gf(?)0Y@pt7o%}lTL(~2y8{zgp6X3~5PTIkIVdRh*^d*Fj*B|Baug?9iDXq@S zN|tR9M_DO{8HNT$EA$#?=-)WYO4l$t0g3PtLivvovclPLF3c%}|D~W+p-W-4dl~T2 zW|mW8Q05^-fn_kbYEw}s$|_cPB+NqP-zhwWb_<AYUE7HAud2RjcZW+TpYm-wdcTcG`xnQ4l z4ASG~3$?npnF1*_qeTf+(hC)cai(fGt|yg@qFpiww1qSPK%Km3u}X+xxq6kDUS#z1 zqA~4OY|9IocDY=!%3h>wxSufDAf9MI^jd^8g8MrFtqiCpZR(J@O^4V$Y&a37S62r~ zP+e+n059i0gY#%Pn23yHdSBW(b7{i-U`s7tbwi`0TR$L`~jIJyeG- z2d~6_|D~?=1qw2cr|X9n&MXvv>{x0$c;WDq_ANJR58DSW?Em)26D9FT+3>Tn;hOnS z+4e~3f1va)jNRFHXUAe-v43&X(m>{sGWI|j`*S%0On*3?ERwHAM(akp(cQ*2z;1aT z7VZv>;Js<#URq=mE$El3o~`xo1{6&TWHMU7ub(iHFOV3$8`?G71dBufxGd`aqN?$46+-N^U#L%{nX03=Lg`ZSX4eHzxaF%J&ubkM7NV^lIZA+yl@H(8s_NDwa#$Jo$wE9r&&G zf(6?)$zhmh06qnm@HDZfw;RNrArqj?0So{P0zhE?NrY2O0Frd2$=$>aFx6sSNY_ht zQP(}motb9O6u)w$i(YI__4rqbJHJWjh0~|)Qq?qu$t0tJ8adl(v}N7;6{#JM