{"id":79737,"date":"2020-04-30T07:41:58","date_gmt":"2020-04-30T05:41:58","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/novyj-analog-punto-switcher-dlya-linux-xswitcher"},"modified":"2020-04-30T07:41:58","modified_gmt":"2020-04-30T05:41:58","slug":"novyj-analog-punto-switcher-dlya-linux-xswitcher","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/novyj-analog-punto-switcher-dlya-linux-xswitcher","title":{"rendered":"Nov\u00fd ekvivalent Punto Switcher pro linux: xswitcher","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Zru\u0161en\u00ed podpory xneur mi v posledn\u00edch \u0161esti m\u011bs\u00edc\u00edch zp\u016fsobilo ur\u010dit\u00e9 utrpen\u00ed. <i>(s p\u0159\u00edchodem OpenSUSE 15.1 na m\u00fdch desktopov\u00fdch po\u010d\u00edta\u010d\u00edch: p\u0159i zapnut\u00e9m xneur okna ztr\u00e1cej\u00ed fokus a z\u00e1bavn\u011b blikaj\u00ed v rytmu psan\u00ed na kl\u00e1vesnici)<\/i>.<\/p>\n<p>\u201eAch, sakra, zase jsem za\u010dal ps\u00e1t ve \u0161patn\u00e9 rozlo\u017een\u00ed\u201c \u2014 v m\u00e9 pr\u00e1ci se to objevuje a\u017e ne\u00fam\u011brn\u011b \u010dasto. A to nep\u0159id\u00e1v\u00e1 na pozitivu.<\/p>\n<p><img decoding=\"async\" alt=\"Nov\u00fd ekvivalent Punto Switcher pro linux: xswitcher\" src=\"\/wp-content\/uploads\/2020\/04\/d296936e3aedb8e94ba4c26522ffe72b.jpeg\" style=\"display:block;margin: 0 auto;\" \/><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nZ\u00e1rove\u0148 mohu (jako in\u017een\u00fdr) pom\u011brn\u011b jasn\u011b vyj\u00e1d\u0159it, co chci. A cht\u011bl jsem (nejprve od Punto Switcher, a pak, d\u00edky Windows Vista, kone\u010dn\u011b p\u0159e\u0161el na Linux, od xneur) pr\u00e1v\u011b to jedno. Uv\u011bdomit si, \u017ee na obrazovce je bl\u00e1bol ve \u0161patn\u00e9m rozlo\u017een\u00ed (to se obvykle st\u00e1v\u00e1 na konci psan\u00ed nov\u00e9ho slova), \u0161l\u00e1pnout na \u201ePause\/Break\u201c. A z\u00edskat to, co jsem psal.<\/p>\n<p>V tuto chv\u00edli m\u00e1 produkt optim\u00e1ln\u00ed (z m\u00e9ho pohledu) pom\u011br funk\u010dnosti a slo\u017eitosti. Je \u010das se pod\u011blit.<\/p>\n<h2>TL;DR<\/h2>\n<p>\nN\u00e1sleduj\u00ed r\u016fzn\u00e9 technick\u00e9 podrobnosti, tak\u017ee nejprve \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ds-voix\/VX-PBX\/blob\/master\/x%20switcher\/bin\/xswitcher\">odkaz \u201ena osah\u00e1n\u00ed\u201c<\/a><\/noindex> pro netrp\u011bliv\u00e9.<\/p>\n<p>V tuto chv\u00edli je zafixov\u00e1no n\u00e1sleduj\u00edc\u00ed chov\u00e1n\u00ed:<\/p>\n<ul>\n<li>\u201ePause\/Break\u201c: sma\u017ee (Backspace) posledn\u00ed slovo, p\u0159ep\u00edn\u00e1 rozlo\u017een\u00ed v aktivn\u00edm okn\u011b (mezi 0 a 1) a znovu p\u00ed\u0161e.<\/li>\n<li>\u201eLev\u00fd Ctrl bez ni\u010deho\u201c: p\u0159ep\u00edn\u00e1 rozlo\u017een\u00ed v aktivn\u00edm okn\u011b (mezi 0 a 1).<\/li>\n<li>\u201eLev\u00fd Shift bez ni\u010deho\u201c: zap\u00edn\u00e1 v aktivn\u00edm okn\u011b rozlo\u017een\u00ed \u010d. 0.<\/li>\n<li>\u201ePrav\u00fd Shift bez ni\u010deho\u201c: zap\u00edn\u00e1 v aktivn\u00edm okn\u011b rozlo\u017een\u00ed \u010d. 1.<\/li>\n<\/ul>\n<p>\nOd tohoto okam\u017eiku pl\u00e1nuji p\u0159izp\u016fsobit chov\u00e1n\u00ed. Bez zp\u011btn\u00e9 vazby \u2014 m\u011b to nezaj\u00edm\u00e1 (m\u011b to tak vyhovuje). P\u0159edpokl\u00e1d\u00e1m, \u017ee na Habr bude dostatek publika se stejn\u00fdmi probl\u00e9my.<\/p>\n<p><b>N.B.<\/b> V aktu\u00e1ln\u00ed verzi je keylogger p\u0159ipojen k \"\/dev\/input\/\", proto by m\u011bl xswitcher b\u011b\u017eet s pr\u00e1vy roota:<\/p>\n<pre><code class=\"bash\">chown root:root xswitcher\nchmod +xs xswitcher<\/code><\/pre>\n<p>\n<b>V\u0161imn\u011bte si:<\/b> majitelem souboru s suid by m\u011bl b\u00fdt root, proto\u017ee kdo je majitel, ten se p\u0159i spu\u0161t\u011bn\u00ed zm\u011bn\u00ed na suid.<\/p>\n<p>Paranoici (j\u00e1 nevyj\u00edmaje) mohou klonovat z <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ds-voix\/VX-PBX\">GIT<\/a><\/noindex> a sestavit na m\u00edst\u011b. P\u0159ibli\u017en\u011b takto:<\/p>\n<pre><code class=\"bash\">go get \"github.com\/micmonay\/keybd_event\"\ngo get \"github.com\/gvalkov\/golang-evdev\"\n\n### Hlavi\u010dky X11 pro OpenSUSE\/deb-zalo\u017een\u00e9 syst\u00e9my\nzypper install libX11-devel libXmu-devel\napt-get install libx11-dev libxmu-dev\n\ncd \"x switcher\/src\/\"\ngo build -o xswitcher -ldflags \"-s -w\" --tags static_all src\/*.go\n<\/code><\/pre>\n<p>\nAutomatick\u00e9 spu\u0161t\u011bn\u00ed p\u0159id\u00e1vat podle chuti (v z\u00e1vislosti na DE).<\/p>\n<p>Funguje, \u201enevy\u017eaduje ka\u0161i\u201c (\u224830 sekund CPU denn\u011b, \u224812 MB v RSS).<\/p>\n<h2>Detaily<\/h2>\n<p>\nTe\u010f \u2014 podrobnosti.<\/p>\n<p><i>Cel\u00fd repozit\u00e1\u0159 byl p\u016fvodn\u011b v\u011bnov\u00e1n m\u00e9mu pet projektu, a zakl\u00e1dat dal\u0161\u00ed se mi zat\u00edm nechce. Tak\u017ee je to v\u0161echno nah\u00e1zeno dohromady (jenom podle slo\u017eek) a pokryto AGPL (\"patent naopak\").<\/i><\/p>\n<p>K\u00f3d xswitcher je naps\u00e1n v golangu, s minim\u00e1ln\u00edmi vkl\u00e1d\u00e1n\u00edmi C. P\u0159edpokl\u00e1d\u00e1 se, \u017ee takov\u00fd p\u0159\u00edstup p\u0159inese nejmen\u0161\u00ed n\u00e1klady na pr\u00e1ci (zat\u00edm to tak je). Zachov\u00e1v\u00e1 mo\u017enosti p\u0159ipojen\u00ed chyb\u011bj\u00edc\u00edho prost\u0159ednictv\u00edm cgo.<\/p>\n<p>V textu jsou rozlo\u017eeny koment\u00e1\u0159e, odkud co bylo p\u0159evezm\u011bno a pro\u010d. Proto\u017ee m\u011b k\u00f3d xneur \"neinspiroval\", vzal jsem jako v\u00fdchoz\u00ed bod <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/xintrea\/LoLoSwitcher\">loloswitcher<\/a><\/noindex>.<\/p>\n<p>Pou\u017eit\u00ed \"\/dev\/input\/\" m\u00e1 sv\u00e9 v\u00fdhody (nap\u0159\u00edklad vid\u00edte v\u0161e v\u010detn\u011b stisknut\u00e9 kl\u00e1vesy s opakovan\u00fdm stiskem), ale tak\u00e9 nev\u00fdhody. Nev\u00fdhody jsou n\u00e1sleduj\u00edc\u00ed:<\/p>\n<ul>\n<li>Opakov\u00e1n\u00ed (ud\u00e1losti s k\u00f3dem \"2\") nekorelovalo s opakovan\u00fdm stiskem na X.<\/li>\n<li>Nen\u00ed vid\u011bt vstup p\u0159es rozhran\u00ed X11 (nap\u0159\u00edklad takto funguje VNC).<\/li>\n<li>Je pot\u0159eba root.<\/li>\n<\/ul>\n<p>\nNa druhou stranu, lze se p\u0159ihl\u00e1sit k ud\u00e1lostem X p\u0159es \"XSelectExtensionEvent()\". M\u016f\u017eete se pod\u00edvat do <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/freedesktop\/xorg-xinput\/blob\/master\/src\/test.c\">k\u00f3du xinput<\/a><\/noindex>. Pro Go nic podobn\u00e9ho jsem nena\u0161el, a provizorn\u00ed implementace dala na za\u010d\u00e1tku sto \u0159\u00e1dk\u016f C k\u00f3du. Zat\u00edm jsem to odlo\u017eil stranou.<\/p>\n<p>V\u00fdstup \"zp\u011bt\" zat\u00edm realizov\u00e1n prost\u0159ednictv\u00edm p\u0159ipojen\u00ed virtu\u00e1ln\u00ed kl\u00e1vesnice. D\u011bkuji autorovi keybd_event, ale tam je to p\u0159\u00edli\u0161 vysoce\u00farov\u0148ov\u00e1 abstrakce a d\u00e1l to bude t\u0159eba p\u0159epracovat. U m\u011b nap\u0159\u00edklad prav\u00fd kl\u00ed\u010d Win 3. \u0159ady vyb\u00edr\u00e1. A zp\u011bt se p\u0159ekl\u00e1d\u00e1 pouze lev\u00fd Win.<\/p>\n<h2>Zn\u00e1me chyby<\/h2>\n<p><\/p>\n<ul>\n<li>N\u011bco nev\u00edme o \"kompozitn\u00edm\" vstupu (p\u0159\u00edklad: \u00bd). <i>P\u0159\u00edmo te\u010f to nen\u00ed pot\u0159eba.<\/i><\/li>\n<li>Nespr\u00e1vn\u011b reprodukujeme prav\u00fd Win. V m\u00e9m p\u0159\u00edpad\u011b to naru\u0161uje rozlo\u017een\u00ed akcent\u016f.<\/li>\n<li>Chyb\u00ed srozumiteln\u00fd rozbor vstupu. M\u00edsto toho \u2014 n\u011bkolik funkc\u00ed: Compare(), CtrlSequence(), RepeatSequence(), SpaceSequence(). <i>D\u011bkuji <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/users\/nsmcan\/\" class=\"user_link\">nsmcan<\/a><\/noindex> za pozornost: opravil jsem v k\u00f3du a tady.<\/i> S ur\u010ditou pravd\u011bpodobnost\u00ed lze z\u00edskat chyby p\u0159i v\u00fdm\u011bn\u011b.<br \/>\n<b>V tomto m\u00edst\u011b nev\u00edm \"jak na to\" a budu r\u00e1d za jak\u00e9koliv n\u00e1vrhy.<\/b><\/li>\n<li><i>(Ach bo\u017ee)<\/i> konkuren\u010dn\u00ed pou\u017e\u00edv\u00e1n\u00ed kan\u00e1l\u016f (keyboardEvents, miceEvents).<\/li>\n<\/ul>\n<p><\/p>\n<h2>Z\u00e1v\u011br<\/h2>\n<p>\nK\u00f3d \u2014 nejjednodu\u0161\u0161\u00ed procedur\u00e1ln\u00ed. <i>A tup\u00fd jako j\u00e1.<\/i> Tak\u017ee, t\u011b\u0161\u00edm se nad\u011bj\u00ed, \u017ee to, co chci napsat, dok\u00e1\u017ee prakticky ka\u017ed\u00fd technik. A tento v\u00fdrobek d\u00edky tomu nezmiz\u00ed bez podpory jako v\u011bt\u0161ina just-for-fun.<\/p>\n<p>Hodn\u011b \u0161t\u011bst\u00ed!<br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/495748\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 xneur \u0432\u044b\u0437\u0432\u0430\u043b\u043e \u0443 \u043c\u0435\u043d\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 (\u0441 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c OpenSUSE 15.1 \u043d\u0430 \u043c\u043e\u0438\u0445 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430\u0445: \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u043c xneur \u043e\u043a\u043d\u0430 \u0442\u0435\u0440\u044f\u044e\u0442 \u0444\u043e\u043a\u0443\u0441 \u0438 \u0437\u0430\u0431\u0430\u0432\u043d\u043e \u043c\u0435\u0440\u0446\u0430\u044e\u0442 \u0432 \u0442\u0430\u043a\u0442 \u0432\u0432\u043e\u0434\u0430 \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b). \u00ab\u0410, \u0431\u043b\u0438\u043d, \u043e\u043f\u044f\u0442\u044c \u043d\u0435 \u0432 \u0442\u043e\u0439 \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0435 \u043d\u0430\u0447\u0430\u043b \u043d\u0430\u0431\u0438\u0440\u0430\u0442\u044c\u00bb \u2014 \u0432 \u043c\u043e\u0435\u0439 \u0440\u0430\u0431\u043e\u0442\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u043d\u0435\u043f\u0440\u0438\u043b\u0438\u0447\u0438\u044f \u0447\u0430\u0441\u0442\u043e. \u0418 \u043f\u043e\u0437\u0438\u0442\u0438\u0432\u0430 \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442. \u0412 \u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":79738,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-79737","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 xneur \u0432\u044b\u0437\u0432\u0430\u043b\u043e \u0443 \u043c\u0435\u043d\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 (\u0441 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c OpenSUSE 15.1 \u043d\u0430 \u043c\u043e\u0438\u0445 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430\u0445: \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u043c xneur \u043e\u043a\u043d\u0430 \u0442\u0435\u0440\u044f\u044e\u0442 \u0444\u043e\u043a\u0443\u0441 \u0438 \u0437\u0430\u0431\u0430\u0432\u043d\u043e \u043c\u0435\u0440\u0446\u0430\u044e\u0442 \u0432 \u0442\u0430\u043a\u0442 \u0432\u0432\u043e\u0434\u0430 \u0441.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/novyj-analog-punto-switcher-dlya-linux-xswitcher\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u043e\u0432\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 Punto Switcher \u0434\u043b\u044f linux: xswitcher | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 xneur \u0432\u044b\u0437\u0432\u0430\u043b\u043e \u0443 \u043c\u0435\u043d\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 (\u0441 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c OpenSUSE 15.1 \u043d\u0430 \u043c\u043e\u0438\u0445 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430\u0445: \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u043c xneur \u043e\u043a\u043d\u0430 \u0442\u0435\u0440\u044f\u044e\u0442 \u0444\u043e\u043a\u0443\u0441 \u0438 \u0437\u0430\u0431\u0430\u0432\u043d\u043e \u043c\u0435\u0440\u0446\u0430\u044e\u0442 \u0432 \u0442\u0430\u043a\u0442 \u0432\u0432\u043e\u0434\u0430 \u0441.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/novyj-analog-punto-switcher-dlya-linux-xswitcher\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-04-30T05:41:58+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-30T05:41:58+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Nov\u00fd analog Punto Switcher pro linux: xswitcher | ProHoster","description":"Ukon\u010den\u00ed podpory xneur mi zp\u016fsobilo ur\u010dit\u00e9 utrpen\u00ed v posledn\u00edch \u0161esti m\u011bs\u00edc\u00edch (s p\u0159\u00edchodem OpenSUSE 15.1 na m\u00e9 desktopy: p\u0159i zapnut\u00e9m xneur okna ztr\u00e1cej\u00ed fokus a vtipn\u011b blikaj\u00ed v rytmu vstupu s.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/novyj-analog-punto-switcher-dlya-linux-xswitcher","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u043e\u0432\u044b\u0439 \u0430\u043d\u0430\u043b\u043e\u0433 Punto Switcher \u0434\u043b\u044f linux: xswitcher | ProHoster","og:description":"\u041f\u0440\u0435\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 xneur \u0432\u044b\u0437\u0432\u0430\u043b\u043e \u0443 \u043c\u0435\u043d\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 (\u0441 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435\u043c OpenSUSE 15.1 \u043d\u0430 \u043c\u043e\u0438\u0445 \u0434\u0435\u0441\u043a\u0442\u043e\u043f\u0430\u0445: \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u043c xneur \u043e\u043a\u043d\u0430 \u0442\u0435\u0440\u044f\u044e\u0442 \u0444\u043e\u043a\u0443\u0441 \u0438 \u0437\u0430\u0431\u0430\u0432\u043d\u043e \u043c\u0435\u0440\u0446\u0430\u044e\u0442 \u0432 \u0442\u0430\u043a\u0442 \u0432\u0432\u043e\u0434\u0430 \u0441.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/novyj-analog-punto-switcher-dlya-linux-xswitcher","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-04-30T05:41:58+00:00","article:modified_time":"2020-04-30T05:41:58+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"79737","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:32:22","updated":"2022-09-30 15:31:31","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/79737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=79737"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/79737\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/79738"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=79737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=79737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=79737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}