[virt-tools-list] [PATCH] Add operating system icon in the Details->Overview pane.

Richard W.M. Jones rjones at redhat.com
Tue Apr 19 15:50:28 UTC 2011


This adds an icon to each Operating System section in the
Details->Overview pane.  If inspection completes while a guest's
Details window is open, then the icon updates itself(!)

Screenshots:

http://oirase.annexia.org/tmp/vmm-with-logo.png
http://oirase.annexia.org/tmp/vmm-with-logo-2.png

The icons are taken from either Wikipedia or the upstream project and
resized to 32 px width by myself.  You may be wondering about the
legality of including these trademarked icons in Fedora packages, and
I was too.  I asked Fedora Legal for a verdict with no reply yet:

http://lists.fedoraproject.org/pipermail/legal/2011-April/001604.html

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org
-------------- next part --------------
>From 813dc420d19287c0280f338488831fe9fcae2fab Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones at redhat.com>
Date: Tue, 19 Apr 2011 13:48:07 +0100
Subject: [PATCH] Add operating system icon in the Details->Overview pane.

---
 pixmaps/os_archlinux.png       |  Bin 0 -> 907 bytes
 pixmaps/os_debian.png          |  Bin 0 -> 491 bytes
 pixmaps/os_fedora.png          |  Bin 0 -> 1992 bytes
 pixmaps/os_freebsd.png         |  Bin 0 -> 2789 bytes
 pixmaps/os_gentoo.png          |  Bin 0 -> 2002 bytes
 pixmaps/os_linux_generic.png   |  Bin 0 -> 1266 bytes
 pixmaps/os_linuxmint.png       |  Bin 0 -> 1734 bytes
 pixmaps/os_mandriva.png        |  Bin 0 -> 1568 bytes
 pixmaps/os_pardus.png          |  Bin 0 -> 1618 bytes
 pixmaps/os_red_hat.png         |  Bin 0 -> 1222 bytes
 pixmaps/os_ubuntu.png          |  Bin 0 -> 2088 bytes
 pixmaps/os_unknown.png         |  Bin 0 -> 326 bytes
 pixmaps/os_windows_generic.png |  Bin 0 -> 2134 bytes
 src/virtManager/config.py      |   57 ++++++++++++++++++++
 src/virtManager/details.py     |   28 +++++++---
 src/virtManager/domain.py      |   38 +++++++++++++
 src/vmm-details.glade          |  114 +++++++++++++++++++++++-----------------
 17 files changed, 180 insertions(+), 57 deletions(-)
 create mode 100644 pixmaps/os_archlinux.png
 create mode 100644 pixmaps/os_debian.png
 create mode 100644 pixmaps/os_fedora.png
 create mode 100644 pixmaps/os_freebsd.png
 create mode 100644 pixmaps/os_gentoo.png
 create mode 100644 pixmaps/os_linux_generic.png
 create mode 100644 pixmaps/os_linuxmint.png
 create mode 100644 pixmaps/os_mandriva.png
 create mode 100644 pixmaps/os_pardus.png
 create mode 100644 pixmaps/os_red_hat.png
 create mode 100644 pixmaps/os_ubuntu.png
 create mode 100644 pixmaps/os_unknown.png
 create mode 100644 pixmaps/os_windows_generic.png

diff --git a/pixmaps/os_archlinux.png b/pixmaps/os_archlinux.png
new file mode 100644
index 0000000000000000000000000000000000000000..87d2fb5336cfc74f0814faff287c0a8710324ea7
GIT binary patch
literal 907
zcmV;619bd}P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L0Jx3-0Jx3;vj}*m00007bV*G`2ipV_
z4HqM<J$_0600Rq2L_t(o!^PH1h#f@~2H>yngs78X7CKfm<RN1;3z=3Ff>GQ at 5FdjY
z#77X_h%H(8K+HnK$Hs-wxX_KR1a}IG5*G??j3A~!98jYWL8es#Q3*03xo+x0rRh7l
zk1-ZB{i>?}od5ji)M1Jd>Uh at uyp9Zf)Bk2f0)A(j^}Q**zZnmOI_{a2h2E3|Jcj}g
zLQ|Fhy#b+)nyM7)xD~gg&wD~0x1W~~WM1Bn+4Q`C-IEwlOsIj4_z1V6pZ56x_hMz7
zP)w?U8*xL+i90Yqt_~*A!1_f0hU{}c-Jcyd8;S|iuZQRH;*e>Zo2qQqoPmM*aR3e8
z#!AM(fQ47rJOo+lZNMvd6Q}W2GNMRVANPbh?ie)`<7(gqT#%k0#de%(&6!0tYGEqI
z at cwcf!DSiUMHYg5ukUeNQ<X=jW+3yT!X+74v5F&CV{fQqu~r(`f!i at N0&4?yp2Vi9
z3<z}`2x%{_ZGrTMfDgpD6N~2(<0u-qIH~=b7HEN`6z>IG*<r{Z*xFR(KVvhHS^Yo)
z&kZhc2>0RPbdN3L`nVJaS7V_#hxao$k;-na^xv`AROJ`h+&l3uE^O`l8_K3Cm$PCv
zvIt-90Ee$}xRovMW4V=@Qsx{ORu_7!v|Cr;@ec4aSZb<rrK2l8)M9r9CvjJ(<NQb(
z$gF(2b>a=iY5bDU&DMO^ntK9Y;wS75b?l8K!cfOuxI6tXI#R7aBxI*r^X709j^kKU
zm1o*w>~-Y*4EAB$5Ww}=GQ at yw9htB(^$)LyI&Mj2eRvjxI?mze4)GmJNAP=1RW7ZP
zy4R)D-Jb-QkH0aO*M)T*`y9+-{};Z+OHEaN+!kt=s++1jk`Aq>LLK+vnN&w+6C1DL
ziBQJ{oGe-=-aLN9pZE-KG*$U&M^iFt^D=l}#AB(6U58ys7olh^{5*O67CvmMvOf;+
zYKDY5UX&WwNAPP?mHW at qK&azRT!q6;RUV%PxT~&YhHS?5_@=4K<y-?t at k6fCX~A2-
hgZJf7$4>_T{{`62C;tZNqD24z002ovPDHLkV1m5^r27B>

literal 0
HcmV?d00001

diff --git a/pixmaps/os_debian.png b/pixmaps/os_debian.png
new file mode 100644
index 0000000000000000000000000000000000000000..5fc39312b550e41399184957becd1142d3c8ca73
GIT binary patch
literal 491
zcmV<H0Tlj;P)<h;3K|Lk000e1NJLTq000>P0015c0{{R3?lMK`0001HP)t-s|Ns90
z0074THh+JAKtMphzrXa)*$@yA at xRUZ-{zm6pVBZ~&LB_OP<7*fn%rQ5>Yuaw at AAtK
zLywP-;Bb!ZufVUbukY{gGcz-AaB$4b%wS+()j(+9-`^l0Am)#!P*6~tkCRvn)-M16
z00Cl4M??UK1szBL000SaNLh0L01FZT01FZU(%pXi00007bV*G`2hsro76mKKD<pUT
z009e0L_t(2&$ZCWa>F1HgyDY}1On~5<UQ~Ik~uhzky1XUPf%a=VH#e^8`Jkq9yp|{
z%rpJi?V&KHau8}`ik(!ZaL-q3Or5}Jn&e%+VJb=hceyl<kV<Z9peq6dD4UQ-2i#kL
zKvAU~fI0^pn7=a8xt6xPrxJk1<ej4}r*sB00j at GtU6gKj=+8fIF8N`#c6ax_)PEA!
zkDq8duAj8Z%6+P}O*`?gnE|dR2#15C0E<_c`gF}@I15ovcGK+owM31}Jm?Ip>sfSt
zcq^+6GTTi~ezhKuEE9Vk#BPhI5LGg(nY_fRT18X_AKx+z@~|vcGl`<>=~p)Kl6fz;
ho7Y*Qc!^$T;Ty~E3;<D&6j%TN002ovPDHLkV1fuT)4l)z

literal 0
HcmV?d00001

diff --git a/pixmaps/os_fedora.png b/pixmaps/os_fedora.png
new file mode 100644
index 0000000000000000000000000000000000000000..0701d078d3a757886c360b1af5e5d5ab81250a15
GIT binary patch
literal 1992
zcmV;(2RHbMP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipV_
z4gxOce_FZ#00&4(L_t(o!=;y7Y*g13hQD<#Gh=&<Z}^5O!NDL*D726?&{!#kmL{ao
zC{<Ib7pf``1(a68yrd7QRH;=|DYc~{`qo5Eq*e)OQA<@762*qLKzd0DwAc+78yg#J
zd>>!ta?W0Tn3>}luwz$UPjlAZv;MW#-v7VO5$3VR<`z2JTLD<VqlK=HRvMdIBES}4
z5AZOs2B-jRAO`dTmw<NQ9bg0q;xsn5peSAKZFyLd`|!}NBly0dtD`Ld2P#E)4mb#`
zVi8kSfP{$r8u&4ArL(=&o3FUM1lI33f{3BBJqvy~Dk4t<FRM~5>76=X;u+B3 at t*ac
zA^Zp!$X1`5gaE96{4nA`=exm%6{`A at i0oe=XdbX_S%g9ku47}_7ASbW(Rd;yzVD-|
z*Ma>a@?K|qtDl>M%yZ_eMf7!$riCib1&@S7JiK`g&pi1lwr^QS>9PU<dIv^1_N#Ne
zbLM at WnVJ;TB!Oo{<W%-Z8k<|N^T7|V5aE}q(j*d8JukSbQd?EVk#Fzig+u#TySj!*
z*bVlS6c_O5Cm!TNpCx0Hv#QA%M~(Rk at Tbc9PxlP>oTsvWJN9tT`E1*xBGRhLUJ;qM
z<ymmwH`G*>@xt>@v+r|T^VX6n58pS4Slk(z;q>48Nw}pVYSf#Zv{2mxoEYx8Fgo0G
zK63|lv>?LQf!7y0 at 2nZ4IF7}EZ|vszZ|)BK6R{b(t_^Ut`!)&`7MJq&<uN+ at rqT)7
z4zcckYI1T|RP_%c@?~Jg$x;n?nI%}t^VqVnfzLm_Dew)AOmg(qKl0|u^GwesutX5c
zrlf8S#nlgBIW8DOK~=q^rp8o#Z;z at z(bduR8>_3M6%n3OrFyaIRTUK0*4MJOz9#Vh
z;`kZf_}w`GmPHGQ7DXtGIHd00AQc-y)c}fHREp(BkTj=%(AeA(wlWHLFvD|MOk|3R
zBGguw1-`4 at cer@vCZ6YG+t!@Gh=2%*@j=x0g8w^(#gZv>Be2cN$m^;c$}OA#5DqyM
z7K8%d==c<|so6CD?==yOmw+6h63fZ0bH4>V$^UD*K<kWRhYCRER at F-anst2E0UlXM
zY%+bDYmH_#Aa5BZy(dqS)gZP_xU?FvonW&UpUQ3MDkn45^4gq^s-Om6m6Q**B^U#q
zr<fcd$F@*~MAE}37-I;z4xxf5k+NFc;tE785Fs at +hM$b1s at aQ(1C-~>Ynlj7;WDg9
zl(Ld2JGZW+rmPU7O2~ECy0Jb;U{zfO-+J~l3=ECq*f!Jg6lX6FF*qf-(eezCpvEwJ
zw+GbZ4MGP9<!Za-go#wt;YKS6N0+hdkq3D3Yad@|>{7M7gfH!RG;eKX$4y>4eU*u+
zI3gBmd}fEbNyWzUs?R1M!Blg at 6s=fCsH6%-a2$(@sQW+P$-3nQL_#(bV&l)oh>!IX
z9~sE#LB2V`xU(z at Yu6Ggtw~=XAn7URKe$OlrBJuL2;W!2VTTn}r4&cgQ*U}E!R@=_
z#N#P!TZql1_-*@j25;SBHa3AbJ&rds5p*o4dIiKG(~?ke1>w at _;EaryU}mU?OV?w(
z)cHOY%Od#3P#i7bt6zMKCw6QGpu6ubKYyd0?%p9>$7UvxqJMarWFiS(0yQR0Ly>!F
zCcuP~eTr19%=i at bJ*NBrLt=6WHHQ8P=)0vDqZCIYG;iM!M46h7({*itD<Agax())^
zww0lN23Qsp*b9z`AeMt$RF(!;B{?-lVtf!puq+!ZBXWL*VtJBl39e%iavfaPS-Ny7
zf^ggdu-p(>b|4_$%s8O)X0CeQJ7C_+;u1{|Vkjr9Y|te|Q*a!MaA=MhzVG83^U+i6
zz9@<+$2vP&N3HaQOU?;|Sh&$LFy_8IJkO`9qJ#}=R|dYZiD at P#XAw)52#%=AZ4qs2
z+<6#FRl)eArpE)CIEBjym)GH^lIaS4Lp+fpS`^`_om<${IQMyQ<K`fDhQ_chYf0dl
z-v at x9&Uf3$P6^_7dkGbnqrO3Gmx9^`Dk{ryW`~)HCumq*!?RCqV^`D0AmWGJclhhY
z>*-M>vKV;QzAvJuvfm$0 at G?0yN__M-;j&snHtcCy$Dw`eNhXpQRb0oWAQHlH?BF;~
zzWop0yLgRIhJK4xuBxr^k^Z0bTz)eFu>Ig$I3l8|iW;BkfvbpRQ(E^ic5SJnFyc}e
zxnGKXV|exW8D4wqESB(5JkJGxv7mC*E6X?S+P$)Q|A4Cg?Jr07ssr?j$Ocu#cnM;C
z|HewiICr^<Pd1d_7x6~l5Jz7*#p$yjV2oJ^JagF)5pDwqP(4-A(3Ff%4|b_)IQu_o
zY;HLO9Lr>x&RB$SD8#0R>e;sWL83)rhR0%D{8tZ`x^9w8dJAfMKr|sHa7>jpV5qAj
z{qghIcTQ#yMF0HLFCdN0Edu-y_+IX0T&S&!tWN+J6po8>qO+rQbbWIRT{&OFxz_aE
a-}7I<Om}h3c#)p~0000<MNUMnLSTYmm$RS%

literal 0
HcmV?d00001

diff --git a/pixmaps/os_freebsd.png b/pixmaps/os_freebsd.png
new file mode 100644
index 0000000000000000000000000000000000000000..fd98ab1f026049706290be557fd6b87c92319754
GIT binary patch
literal 2789
zcmV<B3L5o^P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipV_
z4h9V&bneUm0013yMObu0Z*6U5Zgc=ca%Ew3Wn>_CX>@2HRA^-&M at dak?_?!z000U+
zNkl<ZSi_B%dyHK7RmVT)KIZPu?Cg5qYw!BC&aU5eV;kedZCyJgPJ-e{MQIe$R-se^
zi3CvrZIBRxlokQ0pr9%=qNFqs8auT~lP0bbpbm-Ok0f^OIJVbbuXoq`e$CFzef)lh
zKlW}iF;F<tPotT+y5G-v+;h$q00*$(11=yy0+_j<KeU>f8hqcErluyzWHN4&Bo2V<
zy11 at u!Z5T$Lqpo!+^m-_UE(Hl())Yq_ZUcA0EHZ|e24Gu%v)VPJa>_R*c3!MIy(H;
z*4Df+rYVY|c2zoSYiqk38XCH-we8c>(+yD+<+9nV-`w0xeSN(d9v)^+(8+-|0k_-+
zTbKG?cb~N(P?VIa<M$lr`y1D-{`kl4yu)}mu8+QW?9flXdhy17aIbWCbz0B&JAxos
z`N$)W{KD3)x2<2asBKX$S5pHjAa<runCa{5>pOPz=;=Ls_PhzaKQS>eapA&+8ld}`
zEvp~cwtmwmW}>+M(B2<%teiaeEPPFXjKJo<fmfYuRsQy0-o at Il|GD^=&vN74gJWNR
z<@M(;=Q_t8{?&&*xqJ8SPvrA?@5897f`}>3LLB1+0TKj^j*S=g at 8AEE7x(_lJD+TH
zRz3Rg7k(wzxgiKk5pVzD<9hV9f0seSn at _`+gt^?Wc at _>_hql#OmydsXI~||<yt<3q
zgqAvP1kF*~(pxff=~6`z!KPVqh{nc<$43!_(Kila6GO+npJHsNH*D?R7@!&KK)(+B
z{deT#KR?HXp>aarKk!F!{98_%<H?cw`cu`wcw}_w at F5CMe_M=k)UMb<+tL*owJ~5+
z)QH#+wFzo08prr`bp(srDHn?ze)KVB&b_6QtJBs^cL$Jxi|4iU+5s6j at Crkt<5cDI
zCTwbY512_G0H*(Xa&lkSiWN**WXcOPy#E25?RSY-gDDo#*r0JNwp>7y0=67u!w`)k
zOc)~KP<u-kHJzQTef)RDZD<$b5XMKa0|PSn-S04Xp@&I at HQTn8{%LUVATaBtWjcFJ
z_0(Wv<B96YiOu=XeV&%z`3hPtqEU!=9vF+AO at JAY1WgpMs3eFas93}g*z&Ev!pxL#
zS`3U0p~sIh{Ix%3;JqG(6<xl4hx8Q+hkD^%2SS&*5Ewv>?^k{1v!C6*;VWNt{lLQ(
zrjSg4_zpxN6hpLFK%){G7La%hq6suAkQ5!_Sw(7U8GdO$b)_-n)t4yz-Ba{k?4i#>
zp?$Hey#4n0*Y at rE(-OR`Q2L;vJ<ls$34%fQjyp!P%}s4);1W(<BT`*6S0>Q}OwGV-
z0h|#WQ^XpJwL)lGFpOgXBf at m9mC+yUA%C at xfu1Y$8yLi6-97hm-gWz at a=B?Q4C5q8
zKIlrQYHriUja_RuZfc9KoySpwco{@MOOxp64Rl}>r+fvS7{-i at 6ZQ5nG2~E~2`Q_R
zR8>Js3$kn(hfJRKo@)#hEWH+Lw{2nJ%5K^|wSC$8x87QH`t<2Hf#N)XXN+n6%>DQ8
z3c^{EE9cc;x=PfRp*V}}JBz(|9eMu*dg=t`VjuDKVP?u6Q#MP{T8co?aVWViVRbd8
zql5nT6(pHFGeg64H#Twj=zr>(t`+j=V~_3r^)G&LpNLG(17v{qU%d6!O~v=$!JQqI
zV2z7YmB-#VMRNS7*w_CJId%qyBW%%<#4w|Vm>H6^vBy9JgflagCMPN7aun<9F&j7X
z>eLifVIYmC53>HAht~m1RrQ*a0tCD6xo2Zd6cS!MrEYK)GCo=^V9vcx>3iQLJaC+-
zw at fr?iOWzn5Lru-9#e7RI3_L at i6<sV`umwWcMgqXOl%oDcbuv?$=rM2eQN+e9XeF)
z*tv66q4z4u)i*^Ktibe~BpK|%y!tfJ*%25ACz-n#pa6swo+lL})Br}6B#w!U!B1i)
z&YU5rTflgKfvn7W-Q6qOU*RQxJ_UY9M at MsMWC%U|4yEyHByYb5eLXniW0(X?GB;0e
z1}Im6Bo!x4JKR!hDTE<~#302IiIY&*Y at GT94GStG;P{!07mgP(*Jh|1n<jC4 at x;M(
z1+qdkuDGeVqyXhK=h02k5TF%k0%n1W3e`zMHBe`uwy8lJv<h&&xpe?LTPVa5R8g2w
zYOLUS>FVHvlNVwXQ?XghrowSWBn(gw)TR(+U?7c19gqc9Zd!)px*A4t2-x`|40|qL
z9;sf~&S*T>!jniyVkL=nZeytV(Ax;+9y_3v0swTRUP}esFc1J$Kpt5C<vU1<i5(sp
z9RuQdfasMU|M*<KtBY|77>FT`A&JsYs|1bCM*vC{Cjl0xbG@<_qBK&~=~;DWCk>z8
zpv5Ri&YXGoIuJQ&3c^z-Po5r}p0R${TE;?UC{~hKh+`!Q1-}M at 79p$vD5gS7=Dny8
zHff#Ai!W}gVapRca2BqXEB#}o!*9KD?jsQZuK)DNk>f2p?_ at F(jU$~CkAx^z!m^TW
z6l&T&3elK)5LGmyq+*+`1{V4*x82=E#x^Rn at bZB--T``nWF8;^hX3_PKYFp{uDj^>
zvr>#x;n)&ILKF*8q*N~u8kPu-%z5djH4s%mn6$NKfhA1=t2Z}O>YdhdZ at pal*))Ig
zmrp(iOjH&jz|@gLhYsIxy|b$ye2||NRl_(Hj+H1@;%E-S&%vg(4xNjHTppY%us)~<
znE)DUVc{Z&TQ^s;byJQSKf-BiLtEGJ{pVgjSe%_X;=1lEpl$_#iK3`{@xlf7%TIoD
z=arXVlyGcHY8=6$SOklpbBh_E1hqn2qmXYD>RW`CHet~cp?#S{+j58MoL~||^@3&^
zANWl<Jr#{V at wZR?+2rKpNmZRCUCApgy583}bhW>~<+s1_jdiD<|A7W3kw8-jRjfED
ziXhCYk`p202|-4v&InZ*@Lj=0a9xX2Q^$h)enThg+Uy_v<GyE(A3gFsFfv~zHv^a;
z2#ROVo_*ie)vefd_g$UWj~<6oq**~c1QBo)JOm>`jp_%lJ1&Bk{_k4FZEDo)FMUCV
zY8UhP-v8LY|AoEZbR6fJsz&pIHv?ddNgT(SJ#ys8d2iL~1zYdlwK_X^T?&Ka>MBw#
zLI&^=Vo`Dk9*QS|r{E at vm+`3Du~4hG-7m+>OOrp@^V&0eUwGk3&+{%DV at j2J{|zAB
zjv`><<cSk!4_)gU>U`kA&Fec_GBVgtTnNzw997B+S(J<s+*ok~mtb3~<{nxu;j#_#
z)ZxbQ-~aaao;Z5!__IKdwYGS(mhf{-M5<J^71*$A_wFw}v~<aBo&8s9y`dW!KZ*!!
zLRFPdzH1t%+ruo)5;|`A<iLW7Cx2La{m7xi{{UPRkx^9*|3?k}Z%ZcujlkNKAKS3y
z)_ktJ#hOJ~(K^rfJPEuw%uP;=m{Q+~tI>OB-o17d^a3!R_AC3pI?4av+;pyFnR}bA
rL!=rJ7sa4<7MMyqaH*mv{apJmMsh|z>-Aa900000NkvXXu0mjf;0iiN

literal 0
HcmV?d00001

diff --git a/pixmaps/os_gentoo.png b/pixmaps/os_gentoo.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe1b7da1f054130ac3ffcf27adaa4613f6cca270
GIT binary patch
literal 2002
zcmV;@2QB!CP)<h;3K|Lk000e1NJLTq001BW001Be0ssI2{21+{00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L0309y0309z%@3QN00007bV*G`2ipV_
z4hIn|ZiB)A00&Y at L_t(Y$BkBNZ&cS6-Fu&N at 12M5*kcdIj6I$)9<WJLBHAX1rXr!J
zB5L!Yl^R7=tNw at f7v$HpRX?;zMP5o!8j+Sf3?_g<=4l?r*yHESo%=p}_ro0<13}8s
zd>P$y&faV7z1G<%BCx$g1QB=s8pF&cNx0Kad at li|@&#S$w`_$(M1-(w^Ya$&4zL{q
zM4;P=mzTZ!cZ0PpcI>>ia%sZ8&xVtcy=s5M86I(Rd7W(r0DMlcUVz=XM^SkD*4FBy
z*m4T>i9WYvM==HgL?MI$v_0NfPd3~BfGf>Ot2S=s3pM~fOTg0zvd^7P=i<zkZCR7k
z{gsLXz|0g!5Ol>4F$%C7NF0G5%Em?#_~GCnOdry<S^+>r=vf%Z%sXM*Ti!SSYmJVT
z4@|k*#w;%Y5aA at kAOOD$9Unp;f*7I*f`HrYlsRnF;io^zD{W_V?8c!HdmzFvx-iqK
zj`bfn)Tea at 88V6y(Q-gg*g(oCMwkgw5u32zjzfL(R(EZsef;%OU&#`A0>$GTZ_ck;
zmNj{>Uuy#Cl`X3|00Mv_$Q8sLU?-234cbDjKr65uEcX>Rz5K_Yc9$PThyWl@*I;dR
zWA at wC7hkUJt2)n?s_PjMo}1siz2NN`EFNgOwzgK+sOwP_Ly}0EqDi6MjR?b|uc$^N
z52!M_GypJjYuUGLyE1G8Jlovz-~n!I$?T;?Nf&Qk_0G>$UjO;w#&{))C1qp=V}J;X
zMcePvw=)4iTyHptD1rn4Ns_LtwhP5Rd{PsSVWK>Epd7`J+$-7(n=9wP`TDykG_DJp
zL?Mu3BvB~Ef=)Si{zCfjVU(3nXAQcx(Yn1AR)$OCbtJ_Cgn&D}+nAuWjkwdUHJZ-w
za58uKT6 at FqbmCkwPYOv1F$w`Q5 at BD#@;tdP8<*U)=#qN(-FKBzTbr97o<8%a#mwbW
zF_$mUcJ3$wTFc0Y8mw4RR9RmwqpI#dP~SUT2t#EI2m?cpT0|s5OH;?gI8DYzb+5?F
z%Par*>w8-pp<SF989VsmbbVq%50;UIh;YY0vR at pr@1x&EKY%d6D3mybG=W4!n1n$@
z!hl7R<8Kg(h=?G{jq3~l{@3Yl$0IeQ?CRcX^M&bJv+0zFlp at +~Rwji`2fAGde25~9
zBZ(3*1{1@=N(5LWUtmBU-OEoXd3|m3laD^Vw{R!y#zvQ&e6=z0($QCHlT90Ut2%+M
z2SETq0AYYhjFDlJATY8B8_*6PK8%Yi$=3Rs-nm^w28RZI|HrrQEG%5PIJb2F{#JW!
z$d!RI;N$cG0HJ4}fCx$hvseHGAR^47^E}z4APhhH`07*xzsF6p_4%1g#^jD3Yq+ir
z0 at 8CB5y3d(AiywyAe1D<G!bJ!3>g-!rQU!r4*vPxwX0Vy{pHW6^iH?zFo1~XzPw*9
z?>qF;kYnSM{)HmKjKTnjL_jE7A%X~kWts6Bb-dt%Pp;oxm_K=<IXXJ5clgPoq$WN4
z*}~ZP at cyZyR<!H(9!Oyj)1!z8l at bIXMMS1Hip%T%=?|{2w{HFDQ2E3!jwnSsJBNq@
z?EBHVvx^gx`zD(1w$tHbIU|dpNx?8M_j*@bBqX+DDit$-r}O^%^Oh`Chpkg at 9xIjH
z$99c~K{uZHYH7S)X*7$78K6weh$sLcOi2Q%5yQO-BLN{7`%$Un%X8~z{xdh!x3#C@
zoch&kLzRK-TAhK7qVURh%f*tr|G)s at Q$_?L00L<WX)39~Ol}Gxmxo*dmL9dwo?E<i
z=Wfwzjf at Qa`mN(`$=yEKb5psuu(7oXKYq0=ET&iU?77LB4>^U at fH7!{2m=!I^+A}V
zU(c at 2U0zymEh=suJ~HvfiB}87;tsbx1WBCUyS>(5su8KK2U-adAoZd!BQpqdmOC at p
zjueV;=dL$1ySTd2y0>t(VDs<Z`Q`Lf!?N_YgY{x)X7)V4>!*ViI}DIeh>(;ZVozW_
z3qm%a6qg1tOyu(~*6!YY5cw;&=C4dmRo{N+&B37oA{6Nz+UX80BJFnD>%?&ckq<~f
zgo+T=lQjVB>o*AL+5fIxnQPf<GYlSfHrIdi+vCSxd)cxq?3wA)n$?KtIQGK*`O4n9
zmDBm0CM}8t2 at ntv0GTKON-uu3I&<Msp1Qy-KUsHO_YZ%1YqD8?YA}4t5i}yYCD$$C
zcbC6yP8}H at EEftnrO2d7oN^pTUeH}!YAr3UE9K{DlT)w1&l#V5;pEAm*^a$C-|rpn
zGU at Z|`OAO*+lS?$i9I8extvRAMNt$)f!A$&UfWio1|P+*j+V#jwdv`p>ge$ECfa8P
zFJS}>{NT)IUtFA-Rd&JBuI1ze00jWTBo2g=TCIBU(1Ge$b!24kwzUBMz~MLB9Yyi2
z8#k`aU4C$XF^v;uw)456p*^*FeX_ZKU|^uwSESy{Be3hm{-FV~<~7EMi0}J~$jRjp
k5Q&IzX8`;mS?^x|2jS*!%R5arTL1t607*qoM6N<$f}9J&bN~PV

literal 0
HcmV?d00001

diff --git a/pixmaps/os_linux_generic.png b/pixmaps/os_linux_generic.png
new file mode 100644
index 0000000000000000000000000000000000000000..b5c9d239d8855088ce7f8806a1c11f1d033ac0d7
GIT binary patch
literal 1266
zcmV<O1P%L%P)<h;3K|Lk000e1NJLTq001BW001Be0{{R3M5Kzw00001b5ch_0Itp)
z=>Px%`cO<%MXZDg0s;g?L`3Vv41-bx$)gJ at A_R_V2f2d@(4-BdZ3VQG1~w#+<mBXj
zVhq`{4P`?I#Kgo&Fb46{5u|qtV?}|_ln0Y*P>5d#$BGDaQwJ0j6CD+Z?6eD{ct*2%
z2SG9i(x_3IcMFJMNxFkD-=zt*j0mKpq%tBr(VGe8vp?<34oEOY^wmSPw6j|}1(a+F
z0s_!<Nd)V>3#oW2gM)+~7F at KJRF`1|I3@*^YcclK4FUpAN;(WiGK6YN1`i6#*Q^O>
zR4}T33Lh2GTS9NZg$JW?KagZJ*qjKsqj>AhC=?9 at kYESptO>!33Z-%iDI5ejDh%_)
z3sW`*c2r>3mJPLjFZI0)l$4acodl6(L<|fJP*70x^z`1eT=Lp1t#}G<S`?OY3-Qz{
zf_P-|whXp at 3Nj_XzP-FC9L|DTOVrfV$&Lpc92 at h^3~EM1&y*OXggmr^Aljn|!jlVZ
zMFmVY1naXFoOv?>0{lQM2V6r5hgb#TybN at 7bX;6qqKRB&WMuNvjH;AuYEqn5K4cOM
zwCwEcRy>lOcT8?gW;{GRCK`l|jf}XhmbaT+BpGomEG(?7taef~KrNoNj5R$gv96qG
z%*@Q)-P~+!Ypae&kZf#<Y$WKtUf--jep_0|qD=PUw8plCYf3`?{`@Q+R68g~oSd9|
ze0)+yEUb(KUQRSxMx-<}Gy(!IhF)Y~J_UGA1R@&Ld|L{^oKBi*Oe`F10s^tDj#!d{
zT%LYJ5e(^SOoaB at 6qj-?F(U=ArH_wV1oqlWeOg4PelX&?WC8+k+NvxY6XB+thnr>v
zRXYat%`r+!Op0a%o_+*^ay%*?v|c_ebWS4Sv<iJw1s at g!)~;AqR#cdNG^37Tt%N%C
z?%tw$WJ@%pk7QfIk|&mSY`?XnUP=Uteq at nm3X*bcie_A#a!5HQAoj*A3I+t7Y6rZO
zN1Saf!<r7jtdL$-M5}TI&W;FnQhYQbQ1;d^>c$`>BqXA4Bu6hFwu&H$<}-l+0004W
zQchC<K<3zH00001VoOIv0Eh)0NB{r;32;bRa{vGf6951U69E94oEQKA00(qQO+^RW
z1QQMoGXvo&tN;K3WJyFpR5;6xlP^!hP!z>`HpDWrgc*{hnLt!vx`d at _exwQO9C@N^
zn0aJL0fU$s1~V}Qihh7=A$)-e1P09~z&4o9O!4~Xb(Hlj9Cv$vJ@?)7 at -(d|K-(n<
zh1lK4Xo1~;3*{KNYot;EmKnnI)xe9n2;o|udJ_WsJcF+WX3pKkvNu)(wQhCUJG at c@
zkK_H-s at a64AYe`gr(Yf^*8usGClXQ+ at F-JxR)9~`AoAuxSVjPA>EH*blmV1$KGNMS
z;#wD-{1n?)nizNuiJ%;yfD)S|iXs6$2R!Le1W<_^K{`P=xX;BA=d5kX5k&Vr@&Ec)
zdpMjj20dT%y(@qk%lo%1){RWUqa&w3uJH|ECjdK632}_?wqrPqaS5zapqpnoXs2JK
zM=L9<GR0X27#UzNE-KEP4j$r+ at eu>u*lbbnx9ln7t%K~{?Ad&3|GBHzx2S#+W<@8u
cjI{si2iioZ$vOpgm;e9(07*qoM6N<$f^M`3&;S4c

literal 0
HcmV?d00001

diff --git a/pixmaps/os_linuxmint.png b/pixmaps/os_linuxmint.png
new file mode 100644
index 0000000000000000000000000000000000000000..50ba8e2345701b334956cdc497f7364b479ca019
GIT binary patch
literal 1734
zcmV;%208hOP)<h;3K|Lk000e1NJLTq001BW0015c0ssI2!f1<r00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipV_
z4iF^>S at Yol00u@$L_t(Y$DLMNY at A0G{?3{C_upOHYkOlmjvXg%98yz)8=^{40HstV
zBB3C}1E^eHxQPb at NagZ?grE;xiv+xZ=nE8yQb4U*m4GUhI3jI95s5<}E{<Ktj_o*J
zJL~n{{>z-h!@s*(M at b(#8ja?kf9Bl3a}ND=;b%T|iN>O;aH^uo2C7h1X|Bn6^H3EK
zg(^hJ#i-Y{L`IEa0DzJb2q3aXy$44=i?=$QxWJW*^_A<DnWgHbmFi_L#l{#SC<uTR
z6#%MAL~ntCVUy+Vtk*r%HGa at Nyj=O;<h5T#ww&@U2vD-B0)U8qc;P`OQSyvHAOK7t
z0zl0Tn8~yRQ6OV;z5eil?qdggKj53}XztL^y+3(&=J9f{lJY$wutJjCOqR(S_6&PO
zhG0~k(?}qyBI=wvr%@#JusI{CZ-%RHl+L}l at PnUU`tan+lhwGGGMSGZ_+Fm(MNtF=
zi at Ju?O(Bzg+ICLlKXj!3lY{ATh0t9F6C1X^=@4~iSAYG-xo=gX4QBJc-Jeg(4i#mA
zCPZsnQEe*<s&O1h9I21odj>y!eB{e}vhQ*lCw_VpXAlv?ELNtTyZRjfz3Jftx%Y}g
z!v_F9_s(C&5=|G*{B!x)SnCl~l>xX|;!xNMGbyyg%V%v5fJ$_;60ckKyS+inekAo$
zxT>l%#j_XJPfhGNxxeS#)1|*zG&LB`y&b^bo(YHWm21y5kD&^Q)d3Ff{{9n3hd$Mp
z9tCitI(wn;{7CN5Sl5xX>8!-X+0EC^tUS4imD9_=nAmZ$Cq0-??XjU$|F!yp(^yr9
zI>vYB?i=qv_V<O~ZPQ;N;&yl5_mQ!0x6TGT-gZ3m6~kWg+2Qp}^qnx|om%`+)fI2l
z<_0qR^8N_hjLZkGECm0UtDRl1Uj<;<CXj7WS49-pAKCX!0QI>1{OtE%od0n>-ZJc|
z>XqVaPtSa9v3wE0JMs_b{XGCm;dKBVUf#0hl(hmuAnhVIX2VJf;$0mF0KB^N`}1or
z5Th@%=g7`SMct`|CvHXy%eBjoP5c>zoVW8vFcV1~fMuT*PLdP^ZDB&CojO!u$p<0P
zfMKB=#<k>s;HsAWz?GBxK6f_23P9DWHu9RlDYRXOb`!N(j8p)+b%7eo_JihaD^OJd
zR7Gw at y0&uw1j_B!Q^ocRcOeggZKYztEe6^yq28uZlf~_ at lRE;?wj3a6H$2*5+ioHP
zHTML7$lMBqR-S2Rpd!sO;+#fpQd5%*Cm+9=dJMo??J5LHbYb<>Lg}Ky#T1Ydh_9 at l
zQ%E`3Xt$A7h(cqDA_+pN14x;SDq<HV**l*dadGT%`t`zD5SR at U5vWjGDAeacNTpK7
zB4fHsK><MED(xDuszfeu8WCwFS_hC%k0_*6FI1x~0Q>tM*pc4jTud+wgQRAPkP at k3
zH7;_I3&y*SE1ak+%i1;*MG`o51Q5|yRDdGI*?oQY&)zuypVi5|JqPpIq0b!t>E!%V
ziGY#TV+|YLVkOeF=^E`m+~W@^bR%4>$>uf&P92~MSmTKXYqk0Q?CAT)zVJrjt7qn(
z+SRrH at bJl<xv`H=d^dTpTA5qfn%x!-P*F!jwRrPN<xD7LZh9U718T at -Y%Xm()kN1S
z{}z?8`~ye#epHp7`|lIaOg+9<UTBN#q%skbNyKDSWuY|n>h<3iqa`NZrh#udJ>w^F
zW-PzHIk~_4XjiK5#JykIs4mT|PhD7f>HNxHQZ{YaXro>?_#~?!jy2$<ya`c?iD0Oa
zWz8qPaV%*mk|7i?m8M5JCbC}c at bJmNRVrbz8g51s#1h65Iu|+(8+#372}NU2BcX_s
zI1YQWLk|sq(XwBt&C{QjzkVC`!Z7UAT}K8U?az(^*r+Wpm8KVqmp1Eb^|;)C5j7#z
zs^kPBFq?twJ%<K9*q^-zz~zn8+ZeREBXJ_3o#=gJy!TiG*Q$v_ at 04-27iSO=C#0q~
zPTSiGcfy7ZBkj)Je0sY0 at _5ff1DUZDXAFA@s^6sY1KP?J%r at 4@-myObl!>yLj#x_P
zOMl>EDr34+oHd-nU3!b8ElXOqMjQ~=UCG`}7F7 at _v+=!*LL+QN*h>D~xoc at QfC(R>
cr1j<h0}n;9 at ns2N3jhEB07*qoM6N<$f+ci7w*UYD

literal 0
HcmV?d00001

diff --git a/pixmaps/os_mandriva.png b/pixmaps/os_mandriva.png
new file mode 100644
index 0000000000000000000000000000000000000000..543b32e7117f0f718dd5782f74cec630eada79ed
GIT binary patch
literal 1568
zcmV+*2H*LKP)<h;3K|Lk000e1NJLTq001BW000>X1^@s6P!BAT00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipV_
z4iX3N5737I00p2)L_t(Y$JLg5P*hbM$G_+9U07Z#U?_-FX_A^FS&muSOp}dNI%Q6b
z&&hmbDPoopB8Y^*Qkf_^nrT{^W+bNgDBqTkK`@<a9MUy21fPf?;Ig~tp5L!O+(lq4
zSI23lGjr$uX72gk&-eW9`JMX%?$O{&)~48I%f){>xFiOX$G;56wq6zAE}0f}CtCep
z7!Z9=p{6K!j0SX!2|4jRfG>U3YWKpx#SM>k2+(O2NFpNOYTTV at TNoIhQUm}PGh at 5C
z|F9jm6(3kW2mlb`M_ZW;21^8K4Nu?ID&9+93;-CHvN<{_^NTLN>aG>_ob24vgPofn
zX2+&Z)VL{{b3e*6-|-%pmo){G)7FOg`#G}1jbm>BfMa*u9svp_dA&%vtG~AnvH#Ls
z{M)K0!u+-RC1AxwZXrktu*7o_+pGYpeKwG8n~y3-lwR!$tLkMv(KU6(A_V{&?Xmgs
z-HsP&e%2>+Js_uXM|%dj-GCuMPB*9_1gzkJ18e|nKtQ$i)qn;7S*h=$))|->=2u%B
zfGcMKpyFyFMkjo-xwJBJrUn<7Bm_$#VE79%f(3E7V5u{?aT6{9l86a9p5IiW<u_sb
z=f`OFWs$J}aC<Ebe+ngD<|la~iwc1JZl-SJdhQqsG-T2;9?`t|UYJ;Kk9^#b4l
za<ka`jL85oLy>S2iwYL{9{9Ie7#?5oJHR-#tlhQT^5v0<(eK;mR{zjV1Asci+K)*|
zKhz(&MV0gXqpu{C*M%KnlFUtT_f0dNxEUNouqZ`c4C$UE>#NExtPH$<ZbeY(b<yt7
z(8$%x8Y!@JPFU9o8UVNqF;bD?2t`?4YkYisJl4z`)wur8frA at d=4&7cA~!&WXZ2n~
z1{A>yha!Mj2qFPRf)!C95%;MvqVEe6XKEc3YB^?%?4SXF+u-MvQbt at CJGC}YSXhYE
z)Ktt$nO^nP>0twyC5skt*#sv>GdMs5CL$=9#a~9>;<a at P2X~-DIN}_>KLTaF+qi$p
z(LDz42l#6Hw)MB%sWzJp05C9eTf at yg;9a@;2ROmaf#MwXDBf8&>4S`<(K{331j+`z
z+NZScsSQ@^h(=v=MCr^B112a40sZHbods};TN{{}o{rqCIp`GB at h5Ms|2v#<k-DEK
zyqYp4J9)%j;2?5x%8`}^EZMms6WD-tz}BWRRBS*hWhtk}Ew{=*ZdMk~t?SmyMD8eW
z2B;ZadErfW!UfrNRCe-+y%`x90D!c#v|FD8LV$Il&KpYkl~hJO(t5&ztZ4v%P;>1*
z_N1PeJl~gb;{p=_swoo!5#~x40Ayxn-u at u6=(5;Q3Z><iyu)iow3zTtdOoTO9vG;R
zD^###CIuqEU=#h}?qfeIW6uz=Q0y_`$%-Td`g{^v{pEV42n{ao|Jl*LVE~XkYfjUo
zK&`$AEN`UNc&KLerSy+Jt;~s;vU}w8*+<5mEO8FYXCk2p%(!7fBWJMB|AH5LICt1D
zX)s8bj#c_!9F>?C`f>L3MgXWTh#o4H4EV7&eoMKd^W07mdhzNK%VUbQk{5a!pM+?R
zq3ceMa>-8SE4}qKS&B6#5<+UG0G|vbBqZSVNlCSdGxI0zJ7HQb1pIzG?^hcezi?r~
zlg^a3!;?4Glr9dm<*5f8Zjow`*gl{e72h8wpFLwgT$a6}fB_&Vt-vNDb=ljr>O;i<
zh}!tnO?iW*`5&5oJ#SgCr%WVjE&C)x5%d5v(60*)b`0m)ZG&6~CQqGVw0_yx_g08O
z50)nN#OjYPBX;65Q%gSg*#H16%gfLz9ied-uZg#69Ox+oBQ!w#8EnC>?vdDPQrGR{
z-%eAvd+B$JUQ05;Sutel`hvUe^LBreXWqW1WoMIVn|oWGEqC6H;3dZYV*Cy5(oLIr
S9Vf^D0000<MNUMnLSTYb{nBOt

literal 0
HcmV?d00001

diff --git a/pixmaps/os_pardus.png b/pixmaps/os_pardus.png
new file mode 100644
index 0000000000000000000000000000000000000000..3fc61280886d46d5a011ff2f59ae04602ecb8dd8
GIT binary patch
literal 1618
zcmV-Y2CeytP)<h;3K|Lk000e1NJLTq001BW001Be0ssI2{21+{00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L04^f{04^f|c%?sf00007bV*G`2ipV_
z4j48>J~%f300q)XL_t(Y$F-JeY?S2|$A8bvbe2w~ECn134Yi_{rL-v2i-ESpIL0NC
zCbjsX2t#5dp)OzyN{q%OZM-7Jh+B;zU<_JQu?D5IrPvBnnHC2Wi?kG#;sCV`rOR}-
z_xNF^Gt=$f`{8o(et747o^$@^{Qu8+<|q;2dYX>wY!d+dUuud5i2?NX_U7f~tzW<X
z)TvVwBK7q2w6(RlT&|9e4zJfceouFI_x}C+3kwT(?AW1{iY$qUh<H36z&10%Hq#K^
zU0Yl0^?JLyy6Woc)~;PUKF74Qw6e0Y_V)IxSFc{UaG|)k7%&;t^2Le3=FOYKks|=}
z=FLl)W{^Mckh3|z*DXl18KZ#=dZteyZz-R>j<h0ew13458<;zrq{JAW#iX9wI7>Qm
z<k#%7XKX-SU7d(15jlPO^rA(JE;TKhHC-PrO(|u`KIscc{reQ;f^eXb2UdbaDMl$U
zfUxl;KB=btVCF4prjevr at ko2h+|||9)jD9|!iB)b7ync`1t_I{XdM{#i>HRwPf+p#
zB=O+WXj&{^r2q&bK|X#Fi<$ZNwP{+I4hi|h=^iX8DT#?(Sy_4D$h8AUt_czh$;y(B
zwAswQ5xtJ=+hBlejp)<_r$s50!gCOy-r28|QWjl?{a2k%S5#CK(LmEQ5y{BN0CKYu
zHxy0>yhm9wpYA%O1#zRf&|FB%1drxIYhivGz-v$063q&5I-R3Ljvl12{cADO3efpA
zoz>j67;#S=J^J{YM|gwM($Z*H6 at QR-?%cU$%NCsupA)?fVT2YP5{mgxW~(>R-~t#L
z8Zw*BN~uweCL%>eML=Nz20co}k*<x3KGHyA0S>>9LC=a6D=Zd^8gVeh$))z}*<(zg
z@=XYF_7A>k;=~#BdIpE^1t__nVmk<dAofy{EF>r44=`&Q1<NQbKq(%zv-jI$gM))s
zt2Gifo}z>V<K0<-BOf7x(t!a&Joh#kseE^g%yi101dYA{rsi|-U0(i>#tIUw5Q1PN
zVU^AC<HwgRTQ;@=z+^JrkQj(Gkw5_8jb}jP)-+n$Km$llB6TMAmDpDyKJdl0o)I<r
zf*N(3W at g@g;<s^PhCq1db5`bz at NOh!D(Jx<+Z+sW_7D2I5lBu>o){oMKYz#z`muVF
zK=aQmNRKt}s-?J3#p#^DdzBnGN_8VZN=iyh+W2xB8XD~PuJ*S^$N|vfA11*--vCo%
zUib$vS|CX0MdsPKuavLe#A2p+8(-FszUQMIp=sLr^XCDdGuA$DJjq`Nkrs~c8AaQI
zn-Mp1f(;KLCpcZn!kYnXDdgnjNSqP>qrbl&cxwyNinI{;5y0P!=0e(7l at kMK{WOw6
z)xRma2WjD#&#8Hr8?5Z!y?ass5y{HR0?JG2`i|^d0W=q$8p=!YIZ3|>;EQthzQWN@
zxb{82e1SnvPd&}M$(j#v<;oQ;dasTF2rq2fw8?BXN0XgmrS($|e?aeHdg^&N4{=lf
z0at2yyf9XiUawC|N~*1`9h33c3Zme<cI~p+Y+>iUuOdJ3cRjs_BLL^C at g5^(DuBUY
zuv)Etzdzo6QUDPd92_(njUJCD{8wr+nGAXwE6`m0Rz<;`$VvRo<SzwSvSi8j?c0OF
zpu^$Vwr$&ZjIjV!RaNEX<-uT3MCQzy6IJD%XL)`D1$WZ27qgMeha${$b#*zN&aGRw
zib!8yUwV3aAP|^TgHR}R`SRuPyUk_`1OjW;tT}h?oWtP&9(xcuiMaXwo5;N)B6ho7
zL=GJ~)YQ}zj?mxV|6eE)k$wC2`Fy_4&d!R8itv}^%a`jEb7nDjHq)j6T)cQu)3o8?
z;Tbb#giH7P{o&l>D^TO-xbRc~WMpJ?baX^NHZ(NU)YM$MbSX14bKSaisi~>qCAZt{
z^Z9afb0?kgCbTnW&h+;7PPQ7&G5q3iIL4o!Nh^pi;(r`N|HEc=y~p=|0JC#nPoXT{
Q8vp<R07*qoM6N<$f*no^H2?qr

literal 0
HcmV?d00001

diff --git a/pixmaps/os_red_hat.png b/pixmaps/os_red_hat.png
new file mode 100644
index 0000000000000000000000000000000000000000..8c832dabda7c78d515760a79a5bb383c72aa2e0f
GIT binary patch
literal 1222
zcmV;%1UdVOP)<h;3K|Lk000e1NJLTq001BW0018d0ssI22{c&S00001b5ch_0Itp)
z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RW1QQM#FrRDxfB*mlSV=@dR7l6Q
zmS1R-XB5VN&zElfC(_oorZ8mIme~tism8jov2`vq-C)&auu1R6V5}GI5R0P7E*v<<
z7>YMraj-FZQI(D|&=&t?9mwKBN?U_^F{@URrP1m}W7@{}?jmcOG;OsGAHIv1^PclO
z-#PF3&ilz2!{WGk^JY&^Pk(>^@bK{H=x8h!vn;EqsHmc%V)N$B4Gj%Wr!zY{dkF^2
zBJg-T4Gj&JWw9iRi;MT|+jr;AoyB+-5C{f?J9g|~IVdbF?C9utA_0%bQ(9U&8~Gyo
z1hq-;p<1*_YDV9n at 1@UC6-t$HyWJBL6H5tncXy{2v=sd+`AB=tqOYV^q;*o4RHHPF
zy1Kgi_wT22&Xw5X@$B5Wb82d8)>1FBA(38<0;q*`@S0&Y><3$lhS%$DYHFIEo}RTR
z*+rpHsHUbS5{aa8eTlAvUpV0(utB4tB;x?~i at x+$Y;A2la^y&I{a*$xEiLodfok!#
z2pN7f`~`7CR12K&hZ&ZmN00XR_s?bE at p$U%>*qP;qTc`rL%vwC)YrlX at F!^=wY9ZA
zpHGqn96EF;X<dt&rCri4v__l~z-k`D4!o6N@%#OKeSLsNMn=lZ%Z)MbOM5^wTrJ`c
zs5dkThvE4p1%}`w=D&s8?LK+(WL8g4Px74KF=<`hY#4y^nDd5g=_SJkaEYpgvMCgm
zXoX==JeoQ1-rnBH$w^yYUfz`}SAYUkmlCrEUKZD-FeD%h!_b2q!k!_}C)|dQ!6~jw
zK>*_Mcw=LuEs;pvy?Yl3p!KjOC9D*hpiVMUP?`n<La%2Cyf7130514l8Uw)LaM&I^
zc<}JyL*NmdL&dN at J=hL!Kr?KT%A|4F0Qu=YIVo!kB$7?KapT6USS&WX7sq at 7Ua1|5
z(rf)3Y%y$kvf1}&CN>(4TA2g+j4^Kb38r{ToSo?wo6TmeTD5B4c7A^T at l&VXJ$LrA
z^0hyRzqLH}<H9 at BNX5m)S(TNQ^M-`O;c&TJz_%w(Y}>Z&OhMt=8#fxDj>mir<M5s6
zPMJ#;6&19#wWT^)mX({EJ2*I)9JcXz{MM~ocDo(OL$6AoqOYY+=@+S2`dR8gd!#p|
zY?OK9a^b>-ty{M`ozC|5_CO#IjYb<A8>_3UL!r>@Ouu&RT6J~x+{7*@uq-PlCuil#
zl|Wfp*@6jGRaGr~W!}4YZ};xqot>Sj#zZ3F^Z71byci4yjWMI6qvPY_ at p$~|)vK2;
zUtUn);K73n3oMO9A~88RX^e@*VoA&4!-q53b8~Y;p-><Yu$J3`U0q!@H8tC}Z})gS
zNz2H{NTyqBYilGD@%enq&cGNGjYb23Kyp1cHkNGk0|yRxz20y*9En8ye*eV8L?V$G
z7#MgOfz)!jTrRuazIX55WZg26#s9#uW5;gazCAQFR8ms1n2+_;?BQ_u(xpqMPoG|b
keeSQ~*}>u&<CzQm3);veyFQ7&@Bjb+07*qoM6N<$f>QKQIRF3v

literal 0
HcmV?d00001

diff --git a/pixmaps/os_ubuntu.png b/pixmaps/os_ubuntu.png
new file mode 100644
index 0000000000000000000000000000000000000000..cca0379f4e2152f0f4582cf3601d48ad16bf8cc0
GIT binary patch
literal 2088
zcmV+ at 2-o+CP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px#32;bRa{vGh*8l(w*8xH(n|J^K00(qQO+^RW1QQM(14P$bk^le)x=BPqR9M5M
zmwSv{brr`y-`~A6vya(<%C>B3+0N9`(w3G&79TuPUL~oNhY>VEEvO(-3_^ES(eMx@
zVCYUugAqj(6hvY|0u at DG5^%#yC}2wwXuHG96lhDkd$+qYbMHO=ac8&tqOI|l+{yjj
zIrn!S-*eCT9<iVG(f1ZIW$lKMeSfhanK>i}Xq0GdX0hjaanns(IMAhi{TUSVWV_4B
zeP=#v(llVP%#KHz3$y}hU^h at UvzH|G0Pn;W at 5q(jiUIbl%+s{GeBcHQTt1ViDMjvv
z%>>1nEudq~^c7*}0}Up9tmS5g&<iHJ6?n3xySycFpg^|NyMF`vx;{m2)t0)~g`*Ao
z4rqmB>AJY>!+0|@B_aapIhp;!LfzA{wl|#2h%txscec|~db at s~KUZ)K(!%<Iwm--$
ztkorC#F6mRAXQ}cOJZG<UDMka6bod#_Zs0wUOo at hIHjIw`3sQNA{HhdAAs_xhWq4v
z8dls&<K^p=I_7L7XMzmqGMwEK6brd*cP~Nb%!vl{&z?i}`d0`#^UHvr$e3<*cSb8W
zGc2lM)j_N>FmlPykm@)WfAMm>_Qj;Xyb96{!VH9vzGi0E1(!|pv!%D_>&ye-*E5{#
zjc*Wi=JUY!LG6a2QJ$M6&`S<CcM1N2Q*npR0q0 at 6w-NsPDezMaCy6r6;JlG7Ai=jS
z)$}58cdnFt6 at Fi5o@}X1a7il$=Sw;%@w*P at uwp+A7Lht`1*tQxO!lLb=@W-h>$wAO
z!D+ZDGpIiHbEpi0q><o3M$&hKV&R!=ckh-lN!Z_+Um)o|%;uu8p3BdWI$;Ig!evw+
zyn*!TSK#u;KxH6t&`YCCmT=?4)SkQ@;*j{mUTmm;l>Xu1m_Qes>9;MVt+5Z#*O_;~
zXMr)whrbj5n6pVQ{}BLQzJuD+ze5`zA%1ToL^U*JI{v&<@D`kozi1f%(dMTa`u(NY
zo?YXN5N39f#Qnf_AHYdD;7l_cBWz~4sRh#KT$}7G17H!+#z&KTFTtFx&l9d+hd=LR
z(q~?Un|=h|?Bhr;xtPj>H^5%FRR8 at 9#$f|j9I at Ti1Ji8S5)I=X)v&MvaY*W<OHjHA
zizCA4|3vK{cVKaZGR??OCs(=={50XF$Ep7LdTjT$B*B(kggbaT7RO^?P=dt?v8y=u
z!BuUTY^qEL16XYc*ER=l&WR9(c(Xs3ytTbd`0PDcbr2=lJvIp?NHq|?_5|VUPbEhB
zX}m?tAg+xqekLUAkj%N}p#}+Nn82z-=68INhHw0ah6`__;ahi6z5m(~1EO~}><#;5
zjYR^BiQeoPso35TOCSm-X#mQDoL}GNFhiL}`SVW3wbqNog43uyvKFfj68C)oaWp=w
zC$3b6=+(y<T73psj8*qQs&O*O9DpCkfT$+nubA!GwYTF$HK-1tbR+UJfH6K%C#*O^
ztuslTbP4zw;`cUEefVZ at nemcU0N<QU*bX7gIjT?m3eruuwz<?Ey&3=b6-m?%X-7>{
zu&6d%q$c(QfUt^p_z8GNoq at a*wO|KWJel}*z+A3-E5KWrA?M3>Z=-VeWenbQD&Z>+
z;mu!~G>xfwyd#%FR2?bH6IK+W>>>E`m!f*Egc~0Q&!1qYVVew#>z|<w7}^9N=b?ry
zYC0Iwjnp2wIf+2FmDGt}$IUo0!Per$5KCaOu!2$<Qm0;uYhRS0@&0DwH+#VO<054U
z^#~;fNa~Y#sP5Qa_v8rw^;e?JPbV2&IF{6>zl2(*CI1igV?+HA4&fbk6zOw*oYaj}
z0|rzdxDJcs at j0V9g?l;M-D}#*{|ZYD{wBkX?)+wkYnwyES8qXWbEw>PDQ@}#yg~=I
z^BpV>ak(}$Z5GP5621N;wr3Y{c|G9^_tm`}+Y8L}Yp|6qrE=g8bQNe`)r-ZvEb##1
z3!_?S63T6FQ2FCZG<_a~75v4^afh at +p(APc&SAk0s(-l=r5bUE&L-OW?8hmuNOo_w
zyBq+x=2ZzjYFXX;A#f+~QT;s|DK0?#pG}0%-3wtAs)HjC$t7tNz5NQ3Bfb2G_{W|{
z!$o%@FFgqbwcEj-O(_4Oi8L$d%$Ja^NTeq+F^gk}Yq*2j(6rfgLh?Qg>>z#CRrnp}
zj>zu0_GsdPU3C&I%xpdA!j at 9+hGEJ-Ldk-ah2eU7otdqp&ZWjAB}usDXNZFxM4O)>
zdZUN<gU!SPyNJr`v7rE~Rfyi~!G;Eqq&g7q0zYjj^==sa!Q7E~Lt_V#gs}$2_GxDB
zHl(v;N$1!vDYY1RDZImvM^k1HzO>G4s9#9PtQWXCTPpv-if7Xoy~sgp-kqG=4~J%F
zv5-rdT`lPXVCtwMBK9$q5LOL~gr7ljnDm&;ewHnj9|s7!@?=+)_dOZ)6$|9*+&w53
zJ`a2oI0vgkCdLmaV<}wn<W-aIklDT2Qu)1|R~}ANr9#7+w-0PK3|8jJ*5|pPSZKvK
z3URt&%VnCM)U#0sBwBZY{%*ztVE=3>m0ueT?f*QSPB5yg(1?*Uvu30jN}x#ryD at tg
zu at f{9$L!9n?lpk^u35CK+RFd6f?{F9v;MAG1jShjiUkE-vnF+<zq5V6Xa5(b4}VI5
SMLoIz0000<MNUMnLSTa9V)~o_

literal 0
HcmV?d00001

diff --git a/pixmaps/os_unknown.png b/pixmaps/os_unknown.png
new file mode 100644
index 0000000000000000000000000000000000000000..02518dca46f54775ad439218d4286d01bb1a8d42
GIT binary patch
literal 326
zcmeAS at N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Y)RhkE)4%c
zaKYZ?lYt_f1s;*b3=G`DAk4 at xYmNj^kiEpy*OmP?i!iSwTjj3yW}uK{iEBiObAE1a
zYF-J0b5UwyNotBhd1gt5g1e`0KzJjcI8f0-PZ!6Kh{JEMIC41#inM=>KQATX9iXOk
z(&z at G^#&&8RO4w2ec~h|m>!!42l=cs3hFAK{Q2tJzP#tw&;RUZas1F+vhfg~ddQ80
zzA{;+?c&dSE^cS#i%9Abn>AyRkI?Oy)h|^WU(Izt%Fb%_Qm?pV{{hp~1 at Yw{zXmg?
zmx|9{`pBK9sHbi|OWV##^`1<<F--mZ8Xq=mYZR3S91&_(_)-0iX`hPAuk4G{fR1JG
MboFyt=akR{0J?y3Bme*a

literal 0
HcmV?d00001

diff --git a/pixmaps/os_windows_generic.png b/pixmaps/os_windows_generic.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ae987d55833afb01c86cb2a7e7b19210e94d30d
GIT binary patch
literal 2134
zcmV-c2&wmpP)<h;3K|Lk000e1NJLTq001BW000~a1^@s60K&Z at 00001b5ch_0Itp)
z=>Px#32;bRa{vGh*8l(w*8xH(n|J^K00(qQO+^RW1QQM*4tt|KQUCx4=t)FDR7l6Q
zmurk&RTanoYwvx|xsSQ`_RhUC9Xdm`ZEEEesU5*~h)uLW)z;7kfe5XnQZ!&73MeER
z1@#L-2x6*HzSv?RXlS4TA&M<JSSXzqS|?y1%+SY7r_-6a at AKG?<%fa++aVHgCHuqL
zS=sBi|7$;i|H0giH{!rO=bqMo at RrZx!y0{%;E}slURJNhb08&DAP&sC at 9Dn+z{qWv
zW7f}~`~Lv!yJYUY;fcxRj@<<|iXg~BD1uD;Q29)l>F(TGzH0R??N|MDZ0wqanEBYA
zj}D-JLFtNQw6eudgT1sMl at gFXAbo<61Q3{wqfB=vCdcyW-j at cW52}E8UpjVorrLm1
zK~lOXkSPgdIwZ0k3Ykuc%uGp{E)NcRy!Tjb&M*IR>89WHe=QFH8~%L7Y2z)sdER^c
zZ$0pZ=@r;>@yu*A*_iN!_Je|;piM&M2qH&7njrjB`mtqHlkzin>A80-S~c`i6kFe!
z%x^r`zVT;k`gakXO7VjYedXu(9_wwz?n}j at x3t}sFL~m at m+R943|!Q4E?292Qw1S|
zf`r#DAc_Ra5k!VS9sofM>uBis{2%|VFF)v&CLV9bRkWgrYIT8TT_Frbt5&zcMAgbL
zW*7sURSsU*e&6tI00z{wwQ<R%GAm?|6Yxs{)IpF%0u=-(4Uk8GU?`o&YdhyY_wnnz
z+beNGf&?VhLDXbWLKevQ2FMt&gMcwi8Kyx1696zRfb{5_o)l1d32G<Eb^*~&pge)H
z0Qmp}k$o$7bn|(OMs88BeJ)D{NTEO^05DnCf-yj%fj9vrv4bl3wd1ch1_6vr3$TA-
zTQPw<N2Q5H9whPvDgaa<hys{0MC21dz?7Z!*tJU!Uzka!Iz-|?ATSut8EB^w#|fgC
z5XFG+69kK~T`x9v0Z7gWFtjL*xGjAZ!UkkY615RTpkf6QPz)-<BcDJD3 at f-b`|@p_
zrJ*IhN`o29U~+7sjYi5uNT)Qykl}j--v>9w++d>`j=q!cG=Mn+Ar3C}SCG%+i57bs
z2mL**H_}Ih%T(I3qCJ<3FAOejEK$97KB=JA)v<hNSpDkuKm`E1Q^{?Dz>5*-0KSs&
zJOfXGrDQb6>~;XHGXh+A(?-0yVJ(i;lJ8$DdQ%tlEYQWzu3DDwnpr9rvmIUK?7nl0
z#fJ)=xfz`|T)aNFsIhwY^5I&BvWu1QVWow#8lLbVg at O`3lvGgCKuD%^CN(l~pz$Vv
zsWSq+x?wHOTmNv|^;-U<`>fm&Dz$Z`av79-LZ=55;m}GNR!-?1{-ZCi>8WGG<_FHd
z`qpn;>1m at ONU|V7BqRh$2q8cuAS74_kmvj(NmUI4aMPBcv%Pp{-I&!PP^=U|3W5*>
z0l*``V-`xAzIbGEh`LJz;J1;PG4IMRUhwte46jQHf*^ndKm<rZ(20a;$-}iH=%-q6
z^xgSR1F**3>>Puc$vTE(hOrLDIT-6;*^zOMTeWaEhXV`sk?jv7)$x^KvE<(SAGv3p
zpPBq>E{_Fa61qxNjvw5g-Q|bfe at Zty2PcmXS2N}DDw at +=Myv0BvU_;6_7(?9`1ybe
z`4nar(&#K?(3wx6oKK^@EkHI<faPB=@izZn%$TtaI#!g7KN~bBH&M244{-HlG_pNc
zIsDixBs=;<GS+9}IO+a&b at hKw_&o~LYtbikY=l&joVJLyMU+^Cu|^|O2>b+|BnCiP
zZ^l2&@jotAxpjg8KxLQPw$^fro&=(YLEbpp=TCrI5%^?+R}ZB&eR|PF=kFfa`Oj$q
z$nw?BI3i==v_u>mG-88Pq~R+GB?$zgW~6cb(%IYWz6D#IsR(ir$TdN(3Lz4RK!c<P
zVgn8>5L(`Svbax49DiR0l31^^+Jdx&(-t<iXoLxTB_M?W2r!OO5bjy=;?f>EyYC!p
zMgdMht_5;6kgWi=3bJ)@%fPi9rmF6(BVo_Mp`m>zrv<p_zGptu|H at I%S<5c5WR(F)
zfmjkMg80<g?x3|rN80=$PW3GE^qYZTX0Rc0A;>iVSB0<@a4UwZTX4f-q?H=k++W%|
zK0b~!0<8Vf6PT(**VL;ayg-qY7D+&{j+p|$7eqAa7}_|F6VvL=`umj}T}RpgAOdR;
zN2gS<4RAAttC>@+Y28S(w4*t3v~{L?M*+abyH{h`cOG4AQ|67(PVQ`-Jb3^^mBYUD
z!=ThvmTjel>GqDxqEhZ-ela!qul+nE=bpHXOu_&Y*n(UF)*7y9!A%QSGvJzmZQ5ku
zSYf9!WA$kP0HFV=$FGbIZ7Bk%0vHDnzdP{3wdZB;J%0TU=X|QC^SaqLoFjF2w~MA2
z48Q_TJ8<m4p##4S!3~3Ih(o&$#V1FPz1f%+VC8o=Ve9>CMnG~DZ23%qw{9G40(aaQ
zitlC9J=xn^hfl<T=K=<pEeP6y69<kN+_KD}B at tS@Zqxf;c|AT1pbI#C7f1luzhleW
zF2C;!cK!PGc=VBn^e>)jzR-JidCVs>TP3E`)0WV*K*NF~=aP_ZJrRvzli9iLNMXy<
ze;*qFTpNJOhx(YjV=Gs##MZ4_F>CRS-m0#Fixzi}E-&ZfPYTJhUZd(rRlWA$3+et7
zQ;kr^&0}F0R`5~ViWMu~<vmZp8V~q#0Q9AR`9ZE&{?Gbio?h911G8J;IpX0;5dZ)H
M07*qoM6N<$g7kUp#Q*>R

literal 0
HcmV?d00001

diff --git a/src/virtManager/config.py b/src/virtManager/config.py
index 7f3f85c..942c640 100644
--- a/src/virtManager/config.py
+++ b/src/virtManager/config.py
@@ -151,6 +151,35 @@ class vmmConfig(object):
             libvirt.VIR_DOMAIN_NOSTATE: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 32, 32),
             }
 
+        self.os_icons = {
+            "archlinux": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_archlinux.png", 32, 32),
+            "debian": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_debian.png", 32, 32),
+            "fedora": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_fedora.png", 32, 32),
+            "freebsd": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_freebsd.png", 32, 32),
+            "gentoo": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_gentoo.png", 32, 32),
+            "linuxmint": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_linuxmint.png", 32, 32),
+            "linux_generic": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_linux_generic.png", 32, 32),
+            "mandriva": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_mandriva.png", 32, 32),
+            "pardus": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_pardus.png", 32, 32),
+            "red_hat": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_red_hat.png", 32, 32),
+            "ubuntu": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_ubuntu.png", 32, 32),
+            "unknown": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_unknown.png", 32, 32),
+            "windows_generic": gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_windows_generic.png", 32, 32),
+            }
+
 
     # General app wide helpers (gconf agnostic)
 
@@ -204,6 +233,34 @@ class vmmConfig(object):
     def remove_notifier(self, h):
         self.conf.notify_remove(h)
 
+    # Inspection icons.
+    def get_os_archlinux_icon(self):
+        return self.os_icons["archlinux"]
+    def get_os_debian_icon(self):
+        return self.os_icons["debian"]
+    def get_os_fedora_icon(self):
+        return self.os_icons["fedora"]
+    def get_os_freebsd_icon(self):
+        return self.os_icons["freebsd"]
+    def get_os_gentoo_icon(self):
+        return self.os_icons["gentoo"]
+    def get_os_linuxmint_icon(self):
+        return self.os_icons["linuxmint"]
+    def get_os_linux_generic_icon(self):
+        return self.os_icons["linux_generic"]
+    def get_os_mandriva_icon(self):
+        return self.os_icons["mandriva"]
+    def get_os_pardus_icon(self):
+        return self.os_icons["pardus"]
+    def get_os_red_hat_icon(self):
+        return self.os_icons["red_hat"]
+    def get_os_ubuntu_icon(self):
+        return self.os_icons["ubuntu"]
+    def get_os_unknown_icon(self):
+        return self.os_icons["unknown"]
+    def get_os_windows_generic_icon(self):
+        return self.os_icons["windows_generic"]
+
     # Used for debugging reference leaks, we keep track of all objects
     # come and go so we can do a leak report at app shutdown
     def add_object(self, obj):
diff --git a/src/virtManager/details.py b/src/virtManager/details.py
index 580749f..2ecf6fc 100644
--- a/src/virtManager/details.py
+++ b/src/virtManager/details.py
@@ -437,6 +437,7 @@ class vmmDetails(vmmGObjectUI):
         # Deliberately keep all this after signal connection
         self.vm.connect("status-changed", self.refresh_vm_state)
         self.vm.connect("config-changed", self.refresh_vm_state)
+        self.vm.connect("inspection-changed", self.refresh_overview_inspection)
         self.vm.connect("resources-sampled", self.refresh_resources)
         self.window.get_widget("hw-list").get_selection().connect(
                                                         "changed",
@@ -454,6 +455,7 @@ class vmmDetails(vmmGObjectUI):
 
         self.hw_selected()
         self.refresh_vm_state()
+        self.refresh_overview_inspection()
 
     def cleanup(self):
         self.close()
@@ -494,6 +496,7 @@ class vmmDetails(vmmGObjectUI):
 
         self.emit("details-opened")
         self.refresh_vm_state()
+        self.refresh_overview_inspection()
 
     def close(self, ignore1=None, ignore2=None):
         fs = self.window.get_widget("details-menu-view-fullscreen")
@@ -1172,6 +1175,23 @@ class vmmDetails(vmmGObjectUI):
         # This is safe to refresh, and is dependent on domain state
         self._refresh_runtime_pinning()
 
+    # Details -> Overview -> Operating System
+    def refresh_overview_inspection(self, ignore1=None):
+        vm = self.vm
+
+        s = vm.get_inspection_hostname()
+        if not s or s == "unknown":
+            s = _("unknown")
+        self.window.get_widget("label_inspection_hostname_value").set_text(s)
+
+        s = vm.get_inspection_product_name()
+        if not s or s == "unknown":
+            s = _("unknown")
+        self.window.get_widget("label_inspection_product_name_value").set_text(s)
+
+        self.window.get_widget("image_inspection").set_from_pixbuf(
+            vm.inspection_operating_system_icon())
+
 
     #############################
     # External action listeners #
@@ -2126,14 +2146,6 @@ class vmmDetails(vmmGObjectUI):
         self.window.get_widget("overview-arch").set_text(arch)
         self.window.get_widget("overview-emulator").set_text(emu)
 
-        # Operating System
-        s = self.vm.get_inspection_hostname()
-        if not s: s = _("unknown")
-        self.window.get_widget("label_inspection_hostname_value").set_text(s)
-        s = self.vm.get_inspection_product_name()
-        if not s: s = _("unknown")
-        self.window.get_widget("label_inspection_product_name_value").set_text(s)
-
         # Machine settings
         acpi = self.vm.get_acpi()
         apic = self.vm.get_apic()
diff --git a/src/virtManager/domain.py b/src/virtManager/domain.py
index ada7ca4..df3ab50 100644
--- a/src/virtManager/domain.py
+++ b/src/virtManager/domain.py
@@ -995,6 +995,44 @@ class vmmDomainBase(vmmLibvirtObject):
     def get_inspection_product_name(self):
         return self.inspection_product_name
 
+    # Determine the OS icon to use from the various inspection fields.
+    def inspection_operating_system_icon(self):
+        if (self.inspection_type and self.inspection_type != "unknown" and
+            self.inspection_distro and self.inspection_distro != "unknown"):
+            if self.inspection_type == "linux":
+                if self.inspection_distro == "archlinux":
+                    return self.config.get_os_archlinux_icon()
+                elif self.inspection_distro == "debian":
+                    return self.config.get_os_debian_icon()
+                elif self.inspection_distro == "fedora":
+                    return self.config.get_os_fedora_icon()
+                elif self.inspection_distro == "gentoo":
+                    return self.config.get_os_gentoo_icon()
+                elif self.inspection_distro == "linuxmint":
+                    return self.config.get_os_linuxmint_icon()
+                elif self.inspection_distro == "mandriva":
+                    return self.config.get_os_mandriva_icon()
+                elif self.inspection_distro == "pardus":
+                    return self.config.get_os_pardus_icon()
+                elif self.inspection_distro == "rhel":
+                    return self.config.get_os_red_hat_icon()
+                elif self.inspection_distro == "ubuntu":
+                    return self.config.get_os_ubuntu_icon()
+                else:
+                    return self.config.get_os_linux_generic_icon()
+            elif self.inspection_type == "windows":
+                # XXX It is possible to be very specific about Windows
+                # by mapping the major/minor version and product
+                # variant fields.  However we don't have enough icons
+                # yet.  For more details see:
+                # http://msdn.microsoft.com/en-us/library/ms724832%28v=vs.85%29.aspx
+                return self.config.get_os_windows_generic_icon()
+            elif self.inspection_type == "freebsd":
+                return self.config.get_os_freebsd_icon()
+
+        # unknown or inspection hasn't finished yet
+        return self.config.get_os_unknown_icon()
+
 
 ########################
 # Libvirt domain class #
diff --git a/src/vmm-details.glade b/src/vmm-details.glade
index 1670e34..cdcd931 100644
--- a/src/vmm-details.glade
+++ b/src/vmm-details.glade
@@ -1283,64 +1283,80 @@
                                         <property name="top_padding">3</property>
                                         <property name="left_padding">12</property>
                                         <child>
-                                          <widget class="GtkTable" id="table_inspection">
+                                          <widget class="GtkHBox" id="hbox_inspection">
                                             <property name="visible">True</property>
-                                            <property name="border_width">3</property>
-                                            <property name="n_rows">2</property>
-                                            <property name="n_columns">2</property>
-                                            <property name="column_spacing">6</property>
-                                            <property name="row_spacing">6</property>
-                                            <child>
-                                              <widget class="GtkLabel" id="label_inspection_hostname">
-                                                <property name="visible">True</property>
-                                                <property name="xalign">1</property>
-                                                <property name="label" translatable="yes">Hostname:</property>
-                                              </widget>
-                                              <packing>
-                                                <property name="x_options">GTK_FILL</property>
-                                                <property name="y_options">GTK_FILL</property>
-                                              </packing>
-                                            </child>
-                                            <child>
-                                              <widget class="GtkLabel" id="label_inspection_product_name">
-                                                <property name="visible">True</property>
-                                                <property name="xalign">1</property>
-                                                <property name="label" translatable="yes">Product name:</property>
-                                              </widget>
-                                              <packing>
-                                                <property name="top_attach">1</property>
-                                                <property name="bottom_attach">2</property>
-                                                <property name="x_options">GTK_FILL</property>
-                                                <property name="y_options">GTK_FILL</property>
-                                              </packing>
-                                            </child>
+                                            <property name="spacing">4</property>
                                             <child>
-                                              <widget class="GtkLabel" id="label_inspection_hostname_value">
+                                              <widget class="GtkTable" id="table_inspection">
                                                 <property name="visible">True</property>
-                                                <property name="xalign">0</property>
-                                                <property name="label">hostname</property>
-                                                <property name="selectable">True</property>
+                                                <property name="border_width">3</property>
+                                                <property name="n_rows">2</property>
+                                                <property name="n_columns">2</property>
+                                                <property name="column_spacing">6</property>
+                                                <property name="row_spacing">6</property>
+                                                <child>
+                                                  <widget class="GtkLabel" id="label_inspection_hostname">
+                                                    <property name="visible">True</property>
+                                                    <property name="xalign">1</property>
+                                                    <property name="label" translatable="yes">Hostname:</property>
+                                                  </widget>
+                                                  <packing>
+                                                    <property name="x_options">GTK_FILL</property>
+                                                    <property name="y_options">GTK_FILL</property>
+                                                  </packing>
+                                                </child>
+                                                <child>
+                                                  <widget class="GtkLabel" id="label_inspection_product_name">
+                                                    <property name="visible">True</property>
+                                                    <property name="xalign">1</property>
+                                                    <property name="label" translatable="yes">Product name:</property>
+                                                  </widget>
+                                                  <packing>
+                                                    <property name="top_attach">1</property>
+                                                    <property name="bottom_attach">2</property>
+                                                    <property name="x_options">GTK_FILL</property>
+                                                    <property name="y_options">GTK_FILL</property>
+                                                  </packing>
+                                                </child>
+                                                <child>
+                                                  <widget class="GtkLabel" id="label_inspection_hostname_value">
+                                                    <property name="visible">True</property>
+                                                    <property name="xalign">0</property>
+                                                    <property name="label">hostname</property>
+                                                    <property name="selectable">True</property>
+                                                  </widget>
+                                                  <packing>
+                                                    <property name="left_attach">1</property>
+                                                    <property name="right_attach">2</property>
+                                                    <property name="x_options">GTK_FILL</property>
+                                                    <property name="y_options">GTK_FILL</property>
+                                                  </packing>
+                                                </child>
+                                                <child>
+                                                  <widget class="GtkLabel" id="label_inspection_product_name_value">
+                                                    <property name="visible">True</property>
+                                                    <property name="xalign">0</property>
+                                                    <property name="label">product name</property>
+                                                    <property name="selectable">True</property>
+                                                  </widget>
+                                                  <packing>
+                                                    <property name="left_attach">1</property>
+                                                    <property name="right_attach">2</property>
+                                                    <property name="top_attach">1</property>
+                                                    <property name="x_options">GTK_FILL</property>
+                                                    <property name="y_options">GTK_FILL</property>
+                                                  </packing>
+                                                </child>
                                               </widget>
-                                              <packing>
-                                                <property name="left_attach">1</property>
-                                                <property name="right_attach">2</property>
-                                                <property name="x_options">GTK_FILL</property>
-                                                <property name="y_options">GTK_FILL</property>
-                                              </packing>
                                             </child>
                                             <child>
-                                              <widget class="GtkLabel" id="label_inspection_product_name_value">
+                                              <widget class="GtkImage" id="image_inspection">
                                                 <property name="visible">True</property>
-                                                <property name="xalign">0</property>
-                                                <property name="label">product name</property>
-                                                <property name="selectable">True</property>
+                                                <property name="stock">gtk-stop</property>
                                               </widget>
                                               <packing>
-                                                <property name="left_attach">1</property>
-                                                <property name="right_attach">2</property>
-                                                <property name="top_attach">1</property>
-                                                <property name="x_options">GTK_FILL</property>
-                                                <property name="y_options">GTK_FILL</property>
+                                                <property name="expand">False</property>
+                                                <property name="position">1</property>
                                               </packing>
                                             </child>
                                           </widget>
-- 
1.7.4.4



More information about the virt-tools-list mailing list