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

Richard W.M. Jones rjones at redhat.com
Tue Apr 19 21:49:11 UTC 2011


On Tue, Apr 19, 2011 at 10:47:33PM +0100, Richard W.M. Jones wrote:
> 
> This further improves and simplifies the patch.

This time, with the patch.

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 a1dd3d6d22fcc51215f97440aeabb3932eaae4f6 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 1/2] Add operating system icon in the Details->Overview pane.

---
 pixmaps/os_archlinux.png       |  Bin 0 -> 907 bytes
 pixmaps/os_debian.png          |  Bin 0 -> 1269 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 -> 1561 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 -> 1859 bytes
 pixmaps/os_ubuntu.png          |  Bin 0 -> 2088 bytes
 pixmaps/os_unknown.png         |  Bin 0 -> 191 bytes
 pixmaps/os_windows_generic.png |  Bin 0 -> 2134 bytes
 src/virtManager/config.py      |   20 +++++++
 src/virtManager/details.py     |   28 +++++++---
 src/virtManager/domain.py      |   37 +++++++++++++
 src/vmm-details.glade          |  114 +++++++++++++++++++++++-----------------
 17 files changed, 142 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..d2a6737ca6cfafacfffab2db12dc27cdeb59a058
GIT binary patch
literal 1269
zcmV<R1Pc3!P)<h;3K|Lk000e1NJLTq001BW0012b1^@s6%bsqB00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipV_
z6$3OAb>0vF00ebOL_t(Y$JLcxj9g_I$AAAbGv`cqTZpNNKwE*P*qzx5!3v4S7(g3B
zZFkRE!3({>8xudcB0)-oq>U2%iWgoMNVu>hV%nL7N{xv^FdAc_YTG?$8#G!VSV{{v
zblW*+XV0IDSxMX7ZD(s!<NxMO-uHRl=a=W>eMO%-7;R!*zMCvcBAd?%HX={i`V;bL
zpbXHThw|220Een$tnKc);JsoI%4*4%9C(LN)drp8J-auKIngLu_x5w=c>!MFHdaK-
z>3U|hr00#-%IbNUF5-9CuOoHAH`!V*fiXh=#{O}mXg at kxPZ;X7E-nLU7=KLCUSJs@
z>^G2}XymPJ=h{vVZVJlj+INJvS`xM-ZE57KA1ri#FmI~sac>RdLBu}WSIp-4!A8+u
z)yP}hvijH at zmrqfl+B{`-7*MP%a)Lhzn_J10x-cn7X~<3-$bL+CLI{5g0_GLC63v?
zt|I^FKX#4I+y?t3+ezzV40m=NHo6m8>eb_MfN0gp3j?g{?B+myW1w#3R*Q#aAG6hH
z7VX!H8GKgCqxkG{Eg7RZ3)U=Jzqa)YgKYgKjgqx%Uf(kZpnC4cM13>Eo#)CdjJL`Z
z4uUm<MScQcU3a_}C>o`ik5i(hSs34Kv|jQn%#_anrzWEjs0NhNd{g3!*zba-`s#s-
zDrC{v6&4#nZ`F$O#L4==SvJjloGko8D0{aR>;XSu^mC+v$#8RhD1VmjR29jmjo!2L
zA$6zU?t9+TFn%<P5~pGEi3QH1G)(?D5sp^oZQ^L8XIC8!(l9=fhVjb)IS=(W1(H_U
zoN5-WeQB7?GrRhf at Hd8w@tHYrQG%%i0D*+SLhAt{9_tSPF!IsaW}5H(4#fWbwJ*<w
z>z1fnn%>)7v8WoJ0yr?ZxlaHS$U0BWyv${={Ko00=K at qUpqiXTF+#|yOa3Lm$ETj_
z6F`&}rxpw^y+}}g>w}tyF<BTdorS-CsMDsAx3Re&xjdfF>|E4K2%HjpWI-qU_n=3z
zD7gwCC at UD<2ryK%Cwh%IdX>ahTdS|<Y8DGHVLSw|cgg4HYmk+~8;pOOhNG+2c6ZV&
zT7NhrBVUK$Z^oa!a%uPY3buPuzhN3B*UJ8<rJI|1>o0rx8n^UbQ?go2W4g^mZS=zm
zg1az31%8G2tL)W=&qy4x`AV~B|0|6Wnt7}L?|32{W4PEw8pTIt-YE%g87_9cHwUtw
z(CoCxqGSUmKt3+%$WW*C2Eb%JW~kHVqLoGQ53?|F8YK(jPe#cZS&NsXwWN~PHZCg8
zyd^jkCCr$Q3Li#HJ)4g#{Wh;5wsKjOM#=ZGC~+1hBLJ^**Cme;EEv2pO5k!E_Hm1!
z0OW(qxa>-!<eDr>I%yO?-y5;y@?_wH?-{*m`_r;+&%)$MtLJm6%5gz}H}iLB7VUk=
zD}hnqX8<>_hkx+Z%U_Z#jPFmQ`0rVm+;`^w#lq;n=#6`18V-0VoE~^-&CHIH|Ao>@
f!sL>>`M=fs$b9IiZ7(~x00000NkvXXu0mjf+EQYe

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..2d5ce73c0f27bc2d36eb39ca8212056288ce18a7
GIT binary patch
literal 1561
zcmV+!2Il#RP)<h;3K|Lk000e1NJLTq000{R001Be1^@s6<7ops00001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipV_
z6&DB+v~|J&00o&zL_t(Y$E}uMY+Lme$3N%ZYbSQ>*mV*VQYXcY8z^WY?WBpd>oyHd
z8c{@P5u1p%s#71fYT9^V6A=<<Y|v>BbgIxM%24Uc9vDar*tF2WNTTL}WX%@Qv~(Gk
zyCo|%jT6U-?b!F8J@{VFK>tFHbo7&s&hLDG=g;q)12;wy;D^8rPyyye<d?uE)|r}s
zG at u@fi1zpQYakF<0(Pw@*nYrqxds at E#Z*KTICCun#tne=0wN+(FDw)as4Bp1z!%pG
zEH*ee$bka~07xd296x at Xp`jssKA)#ExGrFcL_!mZ1iN?d#<F}o`Q%d^J$jTqd-l-X
z-R-G$tP5B^pI^Cf at e(7i{)(S{Ply|TWNP9he|}?(NF?g1t*lpp{QSrxU)J(Cs#Bfn
zOrZ8;OfQb~X<fmbT^G+fn#q3au2HNYpqCKeO=Pn|%=kO)5eS8w71(GP#)d1|Fs~PE
zxg?+4lo%L at aZZY*G9O-CArvZecI9DS9m~+w8JC`(9xIhfjRLcuHH<Gzp8ALW?wKFx
z at UOS&$rrz^=VxbBRdsA^OaTprLJCZMR-i9!- at aXK+t&BrPwB|$m at Y0Ysj8~uI9jPx
zbl0w3TKD0f__RPh!0Pbuu&Sz~s%qP|ew+>+I^-3J<Mz$%p9bu$a5${#bXpz9(L$l1
z`FvhI(E0g!ot&K1>FMcOzjQ&*-)Mn60Q}_O!Gk(5Fd#mk55q99EDOV^7P5$7nkMOV
zns7MG%*+gyWoe~Si2%0%f4DA}EX$fpCX-q$7Hj$WIC(P1adcv0LR(r|G!luZVHggO
z1G=u~pWWHk*4Dar?_O<aXz-ftCrCt4RYZiozCL<;dnuJl1cN~V!oZ$udS#mCPXV2p
zn)-+*o|jjmef##Qh-fev^l~?QEzd%MK;SX&we^(AWUk(6Iyz8Q%H^^r>IVE*1N%jO
z)n-f2tqOc3gtl#8eLxxprfCug1aLhAXuBfV-mh|Q{J8=l-=cVV@#u27tIDeK4=!ej
z#WvtL4#{Lv4AWl*=4#5v_W%FlJBNwtsZdtm?bY0<U-v!ubzNRwuH|H5Vd1j5s+3io
ziDrHN(LikqH26jT@@(g#=4b at 4o*jh!KZaZu-_|?X9f@&Br9F!6*Kl)>Jb2d$;_(iq
zr{ATktBYtfdfD)$X5XV at B}bweLVn1v!Lf(YyT6c)RL+=PV4thSXYqukk=7^}7U<0i
zB8UM-nt|_U7=9<n$lE8_v17+&!#F-VMtAlrL|fs%De(Crep?)9!Lf6{H$R{Hrt#c&
zsuvu`03!};1Th4WYMZk=c>Ngzi&c&sIr0e*?~i3KU0`tm8k>Z~9YNw-La4L at 7KXLq
z0sGXgFV#HDp71S4+injbCQw%p2;yY;+dmt*<KAf+8~imOuW-i4$NABB at 8jhsGHlwq
z8HiQWrs|p!1re_rt>!2paI~6Q#j9IEQE6gZ*L%G7!Vtw$g+ie~u~_8v>C^Q0_p@{7
zPMXNj92FpdQZ<8AP1&|xDXcCWwgB_~yJ^p5%eK!tZTcGh_!|6(6-3wo+JNXPYJi at 7
zS_6UKNLy=&TrNkcRH{XwvlSc#$RikF6m%`WBr|8$-u%;e?x{zAt0yf$UimAfm)~T|
zLtk_5-+D{&8}atyws==A*qOM{7z$Ni_wN)eEU}6f{*}oT=G`W{<o?yol?vPblhP=f
z#<XDWJo5S*Jpagx92Qsw8l`TJkGN+O5b4{<rX9D_vvVu=M4ITG`+$+hU*hQtIcD7f
zDS!opfTqo at +&pwIkF`Weu9cY^KE>f<CwUtvxQ|+_U!@yepdb)%`<dZR-D2GoUUgYq
zy(ahcxw^K?xc63EUXv?qT$X!!!_^!0mAXBHI`8W5s0&u90|(%LK at Q{~%cprs00000
LNkvXXu0mjf5Qg&v

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..96837861296c7c5b586516dbf05f59e4221a06c4
GIT binary patch
literal 1859
zcmV-J2fX-+P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipV_
z6$u(OOgmKo00zTJL_t(o!>yNVj8#_^$A4>|b6?EB+?io!=m0II1xzY+cuY#Aw1u`*
z5_~jDB5i^ijY|9?;v at BA#S)GEV3bA at 8=G2VN@~QB#2P7|Y+}&iF+)ieL~shz&@eC$
zn0xOzXaD_h&xJd~oq<Gma&q at MXP@=|@3sDGt$mF<9}WnBHsC>EIWQjxfpOqG&=33r
zh=GLv)5rk}f$stXfNpb*0j~fL15N)c_#)tWU~(FWp8<UO^EZL at Kz=3wo8fr~Yyy4+
z++TZmpEKqfRDe-IS)$2|4l}Y={pbUUQ;Ae(y8`?W_$lzgoe;<ZUjlZg at dnUSnZUkN
z2<djlxWsuc#sx)#b~DBWe@{Fa#9t!u$0*S>j5mO91LtOQc?j%C<5+X42Q*O3OYH at f
z+p1U6UQpat(ABnr28($;R|vJxnO<zl=-pyo-L7F+4glTtfWb5Z9|!gVE$Iga*oU04
zBOmhRiHHtoyzj+3UX%qzXSA5n>5R?UfRAMyoz7 at B<ITv|JW#XsVW1f}3`C6tce0U~
zw&w!9-<sDw&NSc9QfJx_I=wI_qoLNkuC^64)>hDX>XDJwyv`K!TI6gdfj*O_^$ic?
zfStf+8|mY#`H+tWj*Z!X3dZg^89tc}SQ$E+4b1EY0#xrq;2Q9D?Cb5-Jn<m#Dsa6<
zU;*%YssRBu-;4!;Q337`9FJxK+MKaIbaXk#JZBWlaArutY^t6EGm6gmWjSdi`gv(a
z{MDtdcoxX#fv at BO`)4uF>DD|aTk?Frkm1LZF+Z4$m=xsG-2zCevYiHwsw+CoSQXro
zXtmFG0%4Hu`X!)qea7)>bB;o~tH6vA!5^Z8w<6C^N-=|pxSA4awkmsPRs~Io2*V5#
z!Jrodi3o3os1}NOz at G!4Gc7nQcE)G2A%Rs_B&qvDGX`VNb>Q7Z{3%L!xg7JGa>Ct#
zV|m~p^^9?Y2cv>hiTHXxWNF~I;Kit>gyK>FJPv#g(3oV+W~>QaHMVK4JeCP~G8<6F
zn2?Bpa at v93OT@a2qr(}#P74xT5mXS{^C3 at U98Y8%?<C?sz7_?10DKB~60j057<*cs
zu{<zxX2^_+M5l8+oekKW4d`~pJTnSZtKvsO$9;jD0&XT+ov|`>Oh}Xj-OjPl8Hb{T
zi8T9a1lH9kO{A$a3EUev+EWrfE$S_1tP35V&IWAA2CNDlcR8cgs><g^2&x{8Q;}L~
zqhQACm4qu*C*;Eh)sRuai<7b5o{ViP at a(*hmM}vZh$SXcql=tzj|=cAP@{CDE at QH0
zobqC#nk524mxi)Ys at T}dRq?f*--w<oE{K0sitwPhW at OSViBqq{bp@!Ap&Iyv;FVI$
zrJF(=1NdU2-fm{`!Gj0miR;&sza2Xk-IdG5_kzBcH4PN=-nSQ2O3Uw+wET|L=IQ;F
z^nKi3(7%d#ZO;YDPQ at 7vfn)W%u5+1XG8x}gD7ZB}J;BQd4kVdOrt-}lUvn>=J`=78
zoi=9!dpLAF5IUOEtWlje5?~<lyirN`T{+?3UenKM$7_9Hyw)&!dU`6mckeFu_Vz|g
zmoBXg4-Y4je3B$SNfLizU?A%1>WTmbpbRJnS^`>UXd`HYp$9-Mpgj0+=9AOst*@^y
z2!h}j#bWUbOO`B&y1TnWz=no~;w at XYST2`~4j(?8Yi at 3?c}Ev6T=0AL?C~c~oUpF0
zF0Ed at +LuZtJALMiJ^IKa9655t=L-ei8ycdouP at g~U+H{)wVq4sln(E`y!T#`q9}?l
zUAk0GlEkO)YOiiPN~MzT>FFuYa&G)JQ0)|wnt<N|Pt_PolGVw2`u&ZR9UbM+p+hWQ
zyqHR*!b1-|L=XfT85yCyy*;Vxu+_FL)oiQ=&WGvEHQ)u{F-bWyy9LZ<Nbo3%7#SI1
z- at bip+qR9hYu5^}{{H?5$TT%IX~l{a>g??FbLY-=V`F31-`~IY;>C+6fi);?os#mB
zp05kVZGGKfiI=3|;o*4MvSm?QTU)$q*RDuXBq>SP9G7(WEmbQ0?U1y8y1_dnQseBm
zZrxhx?d^^F`ugI_moF!E+Bz at k@fz;_{rjg9Nasr={l0E at cc!{@?cTk6CpT@{R6cw5
zY&4DFc}Y*#G*FM(h(x!fpEq*v?Fbw_dNe+F?p#tIBJcfiNgHPbpMk_2 at BK59hUyIY
zS;8>ob=~}D^)a6jynaEQCY<+vzNBwSx-g6Q8jaT^t&)_T4culUa`S*82LzJVn%O7P
xWA!qiBR$lPrGL+l18)Hbfl(l-v(d0y{ugCWDIP~n;j91v002ovPDHLkV1g=ib9?{*

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..9994770f78ce666db4a7af0b6cd91f1bdfe98a08
GIT binary patch
literal 191
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?Aq{l3DTv4xo@^iEBiObAE1a
zYF-J0b5UwyNotBhd1gt5g1e`0KzJjcI8c$4r;B4q#NoFG85x1RCWZg&^E at 0t%=c^p
X3Ji?XzlUE3au_^a{an^LB{Ts5!c{P{

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..d5aed27 100644
--- a/src/virtManager/config.py
+++ b/src/virtManager/config.py
@@ -151,6 +151,19 @@ class vmmConfig(object):
             libvirt.VIR_DOMAIN_NOSTATE: gtk.gdk.pixbuf_new_from_file_at_size(self.get_icon_dir() + "/state_running.png", 32, 32),
             }
 
+        os_icons = [ "archlinux", "debian", "fedora", "freebsd",
+                     "gentoo", "linuxmint", "linux_generic",
+                     "mandriva", "pardus", "red_hat", "ubuntu",
+                     "unknown", "windows_generic" ]
+        self.os_icons_small = dict()
+        self.os_icons_large = dict()
+        for name in os_icons:
+            self.os_icons_small[name] = gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_" + name + ".png", 16, 16)
+        for name in os_icons:
+            self.os_icons_large[name] = gtk.gdk.pixbuf_new_from_file_at_size(
+                self.get_icon_dir() + "/os_" + name + ".png", 32, 32)
+
 
     # General app wide helpers (gconf agnostic)
 
@@ -204,6 +217,13 @@ class vmmConfig(object):
     def remove_notifier(self, h):
         self.conf.notify_remove(h)
 
+    # Inspection icons.
+    def get_os_icon(self, name, large=True):
+        if large:
+            return self.os_icons_large[name]
+        else:
+            return self.os_icons_small[name]
+
     # 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..9566aba 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_os_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..7cb8e55 100644
--- a/src/virtManager/domain.py
+++ b/src/virtManager/domain.py
@@ -995,6 +995,43 @@ 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_os_icon(self, large=True):
+        if (self.inspection_type and self.inspection_type == "linux" and
+            self.inspection_distro):
+            if self.inspection_distro == "archlinux":
+                return self.config.get_os_icon("archlinux", large)
+            elif self.inspection_distro == "debian":
+                return self.config.get_os_icon("debian", large)
+            elif self.inspection_distro == "fedora":
+                return self.config.get_os_icon("fedora", large)
+            elif self.inspection_distro == "gentoo":
+                return self.config.get_os_icon("gentoo", large)
+            elif self.inspection_distro == "linuxmint":
+                return self.config.get_os_icon("linuxmint", large)
+            elif self.inspection_distro == "mandriva":
+                return self.config.get_os_icon("mandriva", large)
+            elif self.inspection_distro == "pardus":
+                return self.config.get_os_icon("pardus", large)
+            elif self.inspection_distro == "rhel":
+                return self.config.get_os_icon("red_hat", large)
+            elif self.inspection_distro == "ubuntu":
+                return self.config.get_os_icon("ubuntu", large)
+            else:
+                return self.config.get_os_icon("linux_generic", large)
+        elif self.inspection_type and 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_icon("windows_generic", large)
+        elif self.inspection_type and self.inspection_type == "freebsd":
+            return self.config.get_os_icon("freebsd", large)
+
+        # unknown or inspection hasn't finished yet
+        return self.config.get_os_icon("unknown", large)
+
 
 ########################
 # 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