рдХрднреА-рдХрднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ рдпрд╣рд╛рдБ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдЬреЗрдПрд╕ / рдкреАрдПрдЪрдкреА рдФрд░ рдЙрдирдХреЗ рдЬреИрд╕реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдиреНрдп, рдЖрд╕рд╛рди рддрд░реАрдХреЗ рд╣реИрдВ? рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреЛрд░реНрдЯреЗрдмрд▓ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдирд╣реАрдВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдпрд╣ рдЕрд╡рд╕рд░ рдмреНрд░реЙрдбрд╡реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЬреАрдЯреАрдХреЗ 3 рдХреЗ рд▓рд┐рдП рдмреИрдХрдПрдВрдб рдХреА рдЫрд╛рдпрд╛ рдореЗрдВ рд╢реЗрд╖ рд╣реИ, рдЬреЛ рдЙрд╕ рдЬрдЧрд╣ рдкрд░ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЯреНрд░рд╛рдбрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд▓рдЧрддрд╛ рдерд╛ред
рдЬреАрдЯреАрдХреЗ рдмреНрд░реЙрдбрд╡реЗ рдХреНрдпрд╛ рд╣реИ

рдмреНрд░реЙрдбрд╡реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, 2011 рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ
рд╣рдм рдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдкреНрд░рдХрд╛рд╢ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рддрдм рд╕реЗ рдереЛрдбрд╝рд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред
UPD,
рдереИрдВрдХреНрд╕ рдЖрд╡рд╛рд░реНрдб :
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпрд╣ 6.3 X рд╡рд┐рдВрдбреЛ рд╕рд┐рд╕реНрдЯрдо 11 (X11R6.3) рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдФрд░ рдЖрдВрддрд░рд┐рдХ рдХреЛрдб рдирд╛рдо рд╣реИ:
тАЬрдмреНрд░реЙрдбрд╡реЗ рдПрдХреНрд╕ рд╡рд┐рдВрдбреЛ рд╕рд┐рд╕реНрдЯрдо 11 рд░рд┐рд▓реАрдЬрд╝ 6.3 (рдПрдХреНрд╕ 11 рдЖрд░ 6.3) рд╡рд┐рдХрд╛рд╕ рдХреЗ рдкреНрд░рдпрд╛рд╕ рдХрд╛ рдЖрдВрддрд░рд┐рдХ рдХреЛрдб рдирд╛рдо рдерд╛ред X11R6.3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд░реНрд▓реНрдб рд╡рд╛рдЗрдб рд╡реЗрдм рдкрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдЙрди рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдореАрдиреА-рддреЛрдбрд╝рдиреЗ рдХреА рдкрд╣рд▓ рдереАред X11R6.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╡реЗрдм рд╕реЗ рдЬреБрдбрд╝рд╛ рдХреЛрдИ рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдЬ рд╕реНрдереИрддрд┐рдХ HTML рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдорд╛рди рдЯреВрд▓ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рдд, рдПрдХреНрд╕реЗрд╕ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред "
рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд GTK3 рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рдХрд╛ рдПрдХ рдПрдХрд▓ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрдирд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕рд╛рде рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд╛рдо рдХреЛ рдХреНрд▓рд╛рд╕рд┐рдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рдФрд░ рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 3.8+ рдореЗрдВ, рдХрдиреЗрдХреНрд╢рди рдФрд░ рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред
GTK3 рдХрд╛ рдХреНрдпрд╛ рд╕рдВрд╕реНрдХрд░рдг?
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░, рдмреНрд░реЙрдбрд╡реЗ рдХреЛ GTK3 рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 3.8 рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдЗрд╕ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЛ рдХрд╖реНрдЯрдкреНрд░рдж рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓рд╛ред рдореИрдВ 3.10.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдФрд░ HTTP рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ 3.10 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдПрдХ рд╣реА, рд╕рдм рдХреБрдЫ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЖрдПрдЧрд╛ред
рдХрд╛рд░реНрдп рд╕рд┐рджреНрдзрд╛рдВрдд

GTK3 рдХреЗ рд╕рд╛рде, GTK3 (рдмреНрд░реЙрдбрд╡реЗ
рдбреА ) рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рдПрдХ HTTP рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдпрд╣ рдПрдХ рд╕реЙрдХреЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП /run/user/1000/broadway1.socket, рдФрд░ рдЗрд╕ рд╕реЙрдХреЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП GTK3 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдПрдХ рдЕрд▓рдЧ рдкреЛрд░реНрдЯ (рд╕реНрдХреНрд░реАрди рдирдВрдмрд░) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдк
рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ
рд╣реИрдВ (> = рдЬреАрдЯреАрдХреЗ 3.8)ред
рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ?
рдСрдкрд░реЗрд╢рди рдХрд╛ рдРрд╕рд╛ рдореЛрдб PHP / JS / Java рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдорд╛рдирдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдЙрдирдХреЗ ilk рдХреЛ рдмрджрд▓рдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЕрдм рдорд╛рдирдХ рдмрди рдЧрдП рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣, рдЖрдк рдПрдХ рд╕реЗрд╡рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд░реВрдк рдореЗрдВ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рднреА рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕реЗрд╡рд╛рдУрдВ рдпрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ XenServer рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ
рд▓рд┐рдП рдХрдВрд╕реЛрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдФрд░ рдЕрдм рдореИрдВ рдЕрдкрдиреЗ рдЯреЗрд▓реАрд╕реНрдХреЛрдк рдХреЗ рдХреИрдорд░реЛрдВ рдХреЗ рд▓рд┐рдП рд░рд┐рдореЛрдЯ рдПрдХреНрд╕реЗрд╕ рд▓рд╛рдЧреВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдмреНрд░реЙрдбрд╡реЗ рд╣реЛ рд░рд╣рд╛ рд╣реИ
рдлрд┐рд▓рд╣рд╛рд▓, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдПрдХ рднреА рд╡рд┐рддрд░рдг рдирд╣реАрдВ рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд╡рд╣ рд╕реНрдерд┐рд░ рд╢рд╛рдЦрд╛рдУрдВ рдореЗрдВ GTK3 + рдмреНрд░реЙрдбрд╡реЗ рдкреИрдХреЗрдЬ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдбреЗрдмрд┐рдпрди 7 рдореЗрдВ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдРрд╕рд╛ рдкреИрдХреЗрдЬ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рдиреА рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред
рдбреЗрдмрд┐рдпрди рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рдЖрдк рдПрдХ рдЕрдЪреНрдЫреЗ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд
рдкреАрдкреАрдП рдЬреЛрдбрд╝ рд╕рдХрддреЗ
рд╣реИрдВ (рдирд┐рдХреЛрд▓рд╕ рдбреЗрд▓реНрд╡рд╛рдХреНрд╕)
3.8.0 рдХреЗ рдЖрдзрд╛рд░ рдкрд░
рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ
рдмреИрдХрдкреЛрд░реНрдЯ рд╣реИрджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд╡рдзрд╛рдиреА рдФрд░ рд╕рдордЭ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрд╡рд╕рд░ рд╣реИред рдореИрдВ 3.10.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣рд╛рдВ рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрд░реЛрдд рд╕реЗ рд╣реИред
рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдирд┐рд░реНрджреЗрд╢
рд╣рдо рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛
рдХрд┐ рдПрд▓рдПрдлрдПрд╕ рдореИрдиреБрдЕрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ
, рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рд╣реИ рддреЛ рдЪреЗрдХ рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рд╡рд╣рд╛рдВ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЬреАрдЯреАрдХреЗ 3 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реНрд╡рдпрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ $ PATH рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╣реАрдВ рд╕реБрд▓рдн рдмреНрд░реЙрдбрд╡реЗ рдХреЛ рдЗрдХрдЯреНрдард╛ рдФрд░ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, / usr / sbin рдореЗрдВ
cd gtk+-3.10.7/gdk/broadway make clean make cp broadwayd /usr/sbin
рд▓рд╛рдВрдЪ
рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рддреЗ рд╣реИрдВ
GDK_BACKEND=broadway BROADWAY_DISPLAY=:0 ./gtk_app
ред
рддрдм рдпрд╣ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреА рддрд░рд╣ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдФрд░ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдкрддреЗ рдФрд░ рдкреЛрд░реНрдЯ рдкрд░ рдЬрд╛рдХрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╣реЛрдЧрд╛: 8080 (рдкреЛрд░реНрдЯ рдХреА рдЧрдгрдирд╛
рдкреЛрд░реНрдЯ = 8080 + (рдкреНрд░рджрд░реНрд╢рди - 1) рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИ )ред рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдкрд╣рд▓реЗ рд╣реА GTK - рдмреНрд░реЙрдбрд╡реЗ рдХреЗ рд╕рд╛рде рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣реЛрд╕реНрдЯ рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдПрдХреНрд╕ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд▓рдЧрднрдЧ рдЙрд╕реА рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреИрд╕реЗ рдХрд┐ рдорд╛рдирдХ рдореЛрдб рдореЗрдВред рдХреЗ рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ:
рдЙрдкрдпреЛрдЧ рдХреА рдореБрдЦреНрдп рдмрд╛рд░реАрдХрд┐рдпреЛрдВ
рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рдЖрдкрдХреА рдЖрдВрдЦ рдХреЛ рдкрдХрдбрд╝рддреА рд╣реИ - рдХреЛрдИ рд╡рд┐рдВрдбреЛ рдирд╛рдо рдирд╣реАрдВ рд╣реИ, рд╕рд╛рде рд╣реА рдкреЗрдЬ рдХрд╛ рд╢реАрд░реНрд╖рдХ "рдмреНрд░реЙрдбрд╡реЗ 2.0" рдХрд╣рддрд╛ рд╣реИред рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛ рдХреЛ рдЦреАрдВрдЪрдХрд░ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛ рднреА рдЕрд╕рдВрднрд╡ рд╣реИред
рдХреЗ рдЙрдкрдпреЛрдЧ
gtk_status_icon_set_visible(GTK_STATUS_ICON(tray_icon), TRUE);
рд╕реАрдЧрдлреЙрд▓реНрдЯ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рдЕрдЧрд▓рд╛ рдЪреЗрддрд╛рд╡рдиреА рдпрд╣ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╣ рдореЗрдЬрдмрд╛рди рдорд╢реАрди рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдорд╢реАрди рдкрд░ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдФрд░ рдЖрд╡реЗрджрди рдкрдХреНрд╖ рдкрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрд╛ рдПрдХ рдкрд░рд┐рдЪрд╛рдпрдХ рдХреЙрд▓ рдХреЗ рдХрд╛рд░рдг рд╣реЛрд╕реНрдЯ рдкрд░ рдПрдХ рдкреЙрдкрдЕрдк рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕рд╛рде рдорд╢реАрди рдкрд░ рдирд╣реАрдВред
рджреВрд╕рд░реА рдУрд░, рдЕрдиреНрдп рд▓рд╛рдн рдЦреБрд▓рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рд╕рд░рд▓реАрдХреГрдд рдкрд╣реБрдВрдЪ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕реБрд░рдХреНрд╖рд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, gtk_file_chooser_set_local_only, gtk_file_chooser_set_filter рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рдПрдХ рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬреЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдг рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реЛрдЧрд╛ред рдХрдо рд╕реЗ рдХрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ред
рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рдореЗрдиреВ рдкрд░ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ (рдпрджрд┐ рдЖрдк рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЦрд┐рдбрд╝рдХреА рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рд╣рдореЗрд╢рд╛ рд╣рд░ рдЬрдЧрд╣ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ - рдЗрд╕реЗ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдмрд╣реБрдд рдЕрдкреНрд░рд┐рдп - рдЬреАрдЯреАрдХреЗ 3
рд╕рд┐рдВрдЧрд▓ рдХреНрд▓рд┐рдХ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрднреА рднреА рдПрдХ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдбрдмрд▓ рдЯреИрдк (рдПрдВрдбреНрд░реЙрдЗрдб 4.2.2 / рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ / рдХреНрд░реЛрдо) рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред рдПрдХ рд╣реА рд╕рддреНрд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдорд╢реАрдиреЛрдВ / рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рд╕реЗ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╕реЙрдХреЗрдЯ рд╣реИ, рдкрд┐рдЫрд▓рд╛ рд╕рддреНрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдЧрд╛
рдЕрднреНрдпрд╛рд╕
рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЖрд╡реЗрджрди рдореЗрдВ рдмреНрд░реЙрдбрд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдХреИрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдЧреНрд▓реЗрдб рдХреЛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ: рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ / рдпрд╛ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред
рдЬреАрдЯреАрдХреЗ рдореЗрдореЛрд░реА рдмрдлрд░ рд╕реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдореЗрдХрдлрд╛рдЗрд▓ рдореЗрдВ, рдореИрдВ XML рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд░реВрдкрд╛рдВрддрд░рдг рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рдЧреНрд▓реЗрдб рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ uint8_t рд╕рд░рдгреА рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдПрдХрд▓ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
all: xxd -i desktop.glade ../src/desktop.h; xxd -i web.glade ../src/web.h; make -C ../src clean: make -C ../src clean
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА рд╣реИред рдореБрдЦреНрдп рд▓реВрдк рдорд╛рдирдХ рд╣реИред
int main(int argc, char *argv[]) { gtk_init(&argc, &argv); GtkWidget *main_window = glade_init( ); gtk_widget_show(main_window); gtk_main( ); }
рдореИрдВ рд╡рд╛рдкрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛ - рдпрд╣
std = c99 рдХреЗ рд╕рд╛рде рдЬрд╛ рд░рд╣рд╛ рд╣реИ
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдпрд╛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдпрд╣рд╛рдБ, рдпрд╣ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рдпрджрд┐ рдмреНрд░реЙрдбрд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ GDK рд╕реНрдХреНрд░реАрди рдХреЛ "рдмреНрд░рд╛рдЙрдЬрд╝рд░" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
#ifdef __WIN32 G_MODULE_EXPORT #endif gboolean is_run_in_a_browser (void) { GdkScreen *current_screen = gdk_screen_get_default(); char *screen_name= gdk_screen_make_display_name(current_screen); gboolean is_browser = !strcmp(screen_name,"browser"); free(screen_name); return is_browser; }
рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ Win32 рдХреЗ рддрд╣рдд рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ifdef рдХреА рдпрд╣рд╛рдВ рдЬрд░реВрд░рдд рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо GDK рд╡рд┐рдВрдбреЛ рдХреЗ рдирд╛рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдпрд╣ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╣реИ, рдЙрд╕реА рд╕рдордп рд╣рдо рд╡рд┐рдВрдбреЛ рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди (рдлреНрд░реЗрдо) рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВред рдЕрдм рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреНрд░реЙрдбрд╡реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ
#ifdef __WIN32 G_MODULE_EXPORT #endif GtkWidget *glade_init(void) { GtkBuilder *builder = gtk_builder_new( ); GError *error = NULL; gboolean web_run = is_run_in_a_browser(); gtk_builder_add_from_string(builder, web_run ? (char *)web_glade : (char *)desktop_glade, -1, &error); if (!error) { printf("Couldn't load builder buffer: %s", error->message); g_error_free(error); return NULL; } gtk_builder_connect_signals(builder, NULL ); GtkWidget *main_window = GTK_WIDGET (gtk_builder_get_object (builder, "mainwin")); g_object_unref(builder); return ( main_window ); }
рд╣рдордиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рдВрдбреЛ рд▓реЗрдЖрдЙрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рд▓реЙрдиреНрдЪ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдЬреАрдбреАрдХреЗ рд╕реНрдХреНрд░реАрди 1024 * 768 рдХрд╛ рд╕рдВрдХрд▓реНрдк рдмрд╛рдж рдореЗрдВ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рд╡рд┐рдВрдбреЛ рдХреЛ рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдмреНрд░реЙрдбрд╡реЗ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛред
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдХреНрд░реАрди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдЬреНрдпрд╛рджрд╛рддрд░ рдмрд╛рд░ рдпрд╣ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рддрдХ рдлреИрд▓ рдЬрд╛рдПрдЧрд╛) рдФрд░ рдЙрд╕реА рд╕рдордп рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рдХреЛ рдореВрд▓ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдПрдВред рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ред
gtk_window_move(GTK_WINDOW(main_window),0,0); GdkScreen *current_screen = gdk_screen_get_default(); int32_t w = gdk_screen_get_width(current_screen); int32_t h = gdk_screen_get_height(current_screen); gtk_window_resize(GTK_WINDOW(main_window),w, h);
рддрдм рдкрд░реАрдХреНрд╖рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди (VNC рдХрдВрд╕реЛрд▓) рдПрдВрдбреНрд░реЙрдЗрдб / рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛):

рдпрджрд┐ рдкрд╣рд▓реЗ (3.8 рд╕реЗ рдкрд╣рд▓реЗ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, рдЕрдиреНрдпрдерд╛ рдпрджрд┐ рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЬрдЧрд╣ рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬреЛ рдХреБрдЫ рднреА рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рдерд╛ рд╡рд╣ рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдерд╛ред рдЕрдм рдмреНрд░реЙрдбрд╡реЗ рд╕реЙрдХреЗрдЯреНрд╕ рдФрд░ рдЖрдЗрдбрд▓ / рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИред рдЕрдм рд╣рдореЗрдВ рдЕрдиреНрдп рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ
рдЕрдиреБрдХреВрд▓рди рдмреНрд░реЙрдбрд╡реЗ рдХрд╛ рдПрдХ рд╕рд╛
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, GTK3 рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЧрд╣рд░рд╛рдИ рддрдХ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЦрд┐рдбрд╝рдХреА рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд╛рда, "рдмреНрд░реЙрдбрд╡реЗ 2.0", рдХрд┐рд╕реА рдХреЗ рдЕрдиреБрдХреВрд▓ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдмрджрд▓ рджреЗрдВрдЧреЗред HTML5 рд╕рд░реНрд╡рд░ рдкреЗрдЬ рдореЗрдВ рдПрдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдПрдХ JS рдлрд╛рдЗрд▓ рд╣реЛрддреА рд╣реИред рдкреГрд╖реНрда рдХрд╛ рд╢реАрд░реНрд╖рдХ рдорд╛рдирдХ HTML рд╢реАрд░реНрд╖рдХ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
<title>broadway 2.0</title>
рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рджреМрд░рд╛рди, рдкреГрд╖реНрда рдХреЛ рдПрдХ рдкрд░реНрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реА рд╕рд░рдгреА рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ gtk + -3.10.7 / gdk / Broadway / clienthtml.h - рд╕реНрдЯреЗрдЯрд┐рдХ рдХреЙрдиреНрд╕реНрдЯ char client_html [] рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред
рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ, gtk + -3.10.7 / gdk / Broadway / Broadway-server.c:
static void got_request (HttpRequest *request) ............... if (strcmp (escaped, "/client.html") == 0 || strcmp (escaped, "/") == 0) send_data (request, "text/html", client_html, G_N_ELEMENTS(client_html) - 1);
рдСрдкрд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓реЗрдВ, рд╣рдо рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкреНрд░рд┐рдВрдЯрдл рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП, gtk + -3.10.7 / gdk / Broadway / clienthtml.h рдХреЛ рдереЛрдбрд╝рд╛ рд╕реБрдзрд╛рд░рдирд╛ рд╣реЛрдЧрд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддрд┐рд╢рдд рд╕рдВрдХреЗрддреЛрдВ рдХреА рд╕реНрдХреНрд░реАрдирд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ, рдЬреИрд╕реЗ:
background-image: -moz-linear-gradient(#D1D2D2 0%%, #BABBBC 65%%, #D4D4D5 100%%);\n"
рдХреЗ рдмрдЬрд╛рдп
background-image: -moz-linear-gradient(#D1D2D2 0%, #BABBBC 65%, #D4D4D5 100%);\n"
рдФрд░ рд╢реАрд░реНрд╖рдХ рдкрд╛рда рдХреЛ рдмрджрд▓реЗрдВ
<title>broadway 2.0</title>
рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдкрд░
<title>%s</title>
рд╕реНрд╡рдпрдВ рд╕рд░реНрд╡рд░ рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрджрд▓реЗрдВ:
char *http_title = getenv("GTK_HTTP_TITLE"); if (NULL == http_title) { http_title = "Default"; } size_t total_html_size = sizeof client_html + strlen(http_title) + 1; char *_client_html = malloc (total_html_size); snprintf(_client_html, total_html_size, client_html, http_title); if (strcmp (escaped, "/client.html") == 0 || strcmp (escaped, "/") == 0) send_data (request, "text/html", _client_html, strlen(_client_html) - 1); ........... g_free (_client_html);
рдПрдХ asprintf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХрд┐рд╕реА рдХреЛ рдореЗрдХрдлрд╛рдЗрд▓ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдореИрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдмреНрд░реЙрдбрд╡реЗ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░реЗрдВ
export GTK_HTTP_TITLE="PAGE TITLE"
рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдХреНрд░реАрди рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
static void gdk_broadway_screen_init (GdkBroadwayScreen *screen) { screen->width = 1024; screen->height = 768; }
рдФрд░ рдЬреАрдбреАрдХреЗ рд╕реНрдХреНрд░реАрди рдХрд╛ рдирд╛рдо рдмрджрд▓реЗрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреНрд░реЙрдбрд╡реЗ рдХреЗ рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╣рдЪрд╛рди рд╕рдХрддреЗ рд╣реИрдВ
static gchar * gdk_broadway_screen_make_display_name (GdkScreen *screen) { return g_strdup ("browser"); } static gchar * gdk_broadway_screen_get_monitor_plug_name (GdkScreen *screen, gint monitor_num) { return g_strdup ("browser"); }
рдирд┐рд╖реНрдХрд░реНрд╖
рдмреНрд░реЙрдбрд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЬреАрдЯреАрдХреЗ 3 рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣рд▓реНрдХреЗ рд╕реЗрд╡рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде, рдореИрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХрд╛ рдзреНрдпрд╛рди рдЕрдкрдиреА рдУрд░ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдФрд░ рд╢рд╛рдпрдж рдХреЛрдИ рд╕рд░рд▓ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред