{"id":265,"date":"2011-01-25T10:58:24","date_gmt":"2011-01-25T08:58:24","guid":{"rendered":"http:\/\/www.ceh-photo.de\/blog\/?p=265"},"modified":"2017-02-15T17:29:19","modified_gmt":"2017-02-15T09:29:19","slug":"switch-active-window-via-shortcut-between-two-monitors","status":"publish","type":"post","link":"https:\/\/www.ceh-photo.de\/blog\/?p=265","title":{"rendered":"Switch active window via shortcut between two monitors on linux"},"content":{"rendered":"<p><strong>SCRIPT UPDATED: ERROR CORRECTION AND IMPROVEMENTS DEPENDING SOME SPECIAL CONDITIONS 30.1.2011<\/strong><\/p>\n<div id=\"_mcePaste\">If I use two monitors in windows environment I use some scrips of the tool active aid\u00a0<a href=\"http:\/\/activaid.telgkamp.de\/\">http:\/\/activaid.telgkamp.de\/<\/a> to have the ability to switch the active window between both monitors with a shortcut. Since I meanly use Linux on my private pc and laptop I missed this feature badly and I did not find some tool or script which fills this gap.<\/div>\n<div>But like the world works as Linux user, if something does not exist, make it on your own:<\/div>\n<div>My result is a bash-script which switches the active window between both monitors. This script based on wmiface, a tool which gives you the ability to control windows from a NetWm compatible Window-Manager, so at least KDE and GNOME (I tested it on GNOME). A special requirement for my environment is the ability to switch between to monitors with different resolutions.<\/div>\n<div>To use my script you need to install wmiface on your distribution, I think you will not find it in your package manager, but you could download install packages for nearly all huge distributions (or the source) from this site:<\/div>\n<div><a href=\" http:\/\/kde-apps.org\/content\/show.php\/WMIface?content=40425\" target=\"_blank\">http:\/\/kde-apps.org\/content\/show.php\/WMIface?content=40425<\/a><\/div>\n<div>If you use debian (like my on my workstation) choose the ubuntu packages. On my test-system(debian 64 testing) the ubuntu 64 packages works fine.<\/div>\n<div>Here is the script, download it or copy it and save it to a file. Give execution rights wiht chmod +x. (I copied it to \/usr\/bin but this it not necessary. You could run it from every directory.) You should test the script in terminal and if everything works fine you could assign this script to a shortcut with\u00a0gnome-keybinding-properties. Do not forget to edit the resolution for the left and right monitor in line 10 and 11. If you have more than two monitors you should be able to write your own script based on my work.<\/div>\n<p><strong>SCRIPT UPDATED: ERROR CORRECTION AND IMPROVEMENTS DEPENDING SOME SPECIAL CONDITIONS 30.1.2011<\/strong><\/p>\n<div class=\"codecolorer-container bash default\" style=\"overflow:auto;white-space:nowrap;width:100%;height:400px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/>128<br \/>129<br \/>130<br \/>131<br \/>132<br \/>133<br \/>134<br \/>135<br \/>136<br \/>137<br \/>138<br \/>139<br \/>140<br \/><\/div><\/td><td><div class=\"bash codecolorer\"><span class=\"co0\">#!\/bin\/bash<\/span><br \/>\n<span class=\"co0\">#author: Christopher-Eyk Hrabia - http:\/\/www.ceh-photo.de - c.hrabia@gmail.com<\/span><br \/>\n<span class=\"co0\">#<\/span><br \/>\n<span class=\"co0\"># Dependency: wmiface<\/span><br \/>\n<span class=\"co0\"># General: https:\/\/www.linux-apps.com\/content\/show.php\/WMIface?content=40425<\/span><br \/>\n<span class=\"co0\"># For Ubuntu: sudo apt install wmiface<\/span><br \/>\n<span class=\"re2\">DEBUG<\/span>=<span class=\"st0\">&quot;&quot;<\/span> <span class=\"co0\"># write DEBUG=&quot;1&quot; for debugging<\/span><br \/>\n<br \/>\n<span class=\"co0\">#redirect stdin, stdout and stderr<\/span><br \/>\n<span class=\"br0\">&#91;<\/span> <span class=\"sy0\">!<\/span> <span class=\"st0\">&quot;<span class=\"es3\">${DEBUG}<\/span>&quot;<\/span> <span class=\"br0\">&#93;<\/span> <span class=\"sy0\">&amp;&amp;<\/span> <span class=\"kw3\">exec<\/span><span class=\"sy0\">&gt;\/<\/span>dev<span class=\"sy0\">\/<\/span>null <span class=\"nu0\">2<\/span><span class=\"sy0\">&gt;&amp;<\/span><span class=\"nu0\">1<\/span> <span class=\"sy0\">&lt;\/<\/span>dev<span class=\"sy0\">\/<\/span>null<br \/>\n<br \/>\n<span class=\"co0\">#configuration for monitor width resolution of both monitors<\/span><br \/>\n<span class=\"re2\">monitorLeft<\/span>=<span class=\"nu0\">1680<\/span><br \/>\n<span class=\"re2\">monitorRight<\/span>=<span class=\"nu0\">1280<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"co0\">#calculate resizing factor<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span> <span class=\"re1\">$monitorLeft<\/span> <span class=\"re5\">-gt<\/span> <span class=\"re1\">$monitorRight<\/span> <span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re2\">faktorBigToSmall<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;scale=5; (<span class=\"es2\">$monitorRight<\/span> \/ <span class=\"es2\">$monitorLeft<\/span>)&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re2\">faktorSmallToBig<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;scale=5; (<span class=\"es2\">$monitorLeft<\/span> \/ <span class=\"es2\">$monitorRight<\/span>)&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re2\">monitorBigger<\/span>=<span class=\"re1\">$monitorLeft<\/span><br \/>\n<span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re2\">faktorBigToSmall<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;scale=5; (<span class=\"es2\">$monitorLeft<\/span> \/ <span class=\"es2\">$monitorRight<\/span>)&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re2\">faktorSmallToBig<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;scale=5; (<span class=\"es2\">$monitorRight<\/span> \/ <span class=\"es2\">$monitorLeft<\/span>)&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re2\">monitorBigger<\/span>=<span class=\"re1\">$monitorRight<\/span><br \/>\n<span class=\"kw1\">fi<\/span><br \/>\n<br \/>\n<span class=\"co0\">#get pointer of active window<\/span><br \/>\n<span class=\"re2\">win<\/span>=$<span class=\"br0\">&#40;<\/span>wmiface activeWindow<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"co0\">#get maximized status<\/span><br \/>\n<span class=\"co0\">#0 for not maximized,<\/span><br \/>\n<span class=\"co0\">#1 for maximized horizontally,<\/span><br \/>\n<span class=\"co0\">#2 for maximized vertically or<\/span><br \/>\n<span class=\"co0\">#3 for fully maximized.<\/span><br \/>\n<span class=\"re2\">maximized<\/span>=$<span class=\"br0\">&#40;<\/span>wmiface windowMaximized <span class=\"re1\">$win<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw3\">echo<\/span> MaxMin <span class=\"re1\">$maximized<\/span><br \/>\n<br \/>\n<span class=\"co0\">#bring window to normal size avoids some strange effects during window shifting<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"re1\">$maximized<\/span> <span class=\"re5\">-gt<\/span> <span class=\"nu0\">0<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; wmiface maximize <span class=\"re1\">$win<\/span> <span class=\"nu0\">0<\/span> <span class=\"nu0\">0<\/span><br \/>\n<span class=\"kw1\">fi<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"co0\">#get position<\/span><br \/>\n<br \/>\n<span class=\"kw1\">set<\/span> <span class=\"sy0\">`<\/span>wmiface framePosition <span class=\"re1\">$win<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">tr<\/span> <span class=\"st_h\">'+'<\/span> <span class=\"st_h\">' '<\/span><span class=\"sy0\">`<\/span><br \/>\n<br \/>\n<span class=\"re2\">x<\/span>=<span class=\"re4\">$1<\/span><br \/>\n<span class=\"re2\">y<\/span>=<span class=\"re4\">$2<\/span><br \/>\n<br \/>\n<span class=\"kw3\">echo<\/span> x: <span class=\"re1\">$x<\/span><br \/>\n<span class=\"kw3\">echo<\/span> y: <span class=\"re1\">$y<\/span><br \/>\n<br \/>\n<span class=\"co0\">#get framesize<\/span><br \/>\n<span class=\"kw3\">echo<\/span> framesize<br \/>\n<span class=\"kw1\">set<\/span> <span class=\"sy0\">`<\/span>wmiface frameSize <span class=\"re1\">$win<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">tr<\/span> <span class=\"st_h\">'x'<\/span> <span class=\"st_h\">' '<\/span><span class=\"sy0\">`<\/span><br \/>\n<br \/>\n<span class=\"re2\">sizeX<\/span>=<span class=\"re4\">$1<\/span><br \/>\n<span class=\"re2\">sizeY<\/span>=<span class=\"re4\">$2<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"re1\">$maximized<\/span> <span class=\"re5\">-eq<\/span> <span class=\"nu0\">0<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span> <span class=\"sy0\">||<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re1\">$maximized<\/span> <span class=\"re5\">-eq<\/span> <span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span><br \/>\n<span class=\"re2\">notHorizontalMax<\/span>=<span class=\"nu0\">1<\/span> <span class=\"co0\"># our window is not horizontally maximzed<\/span><br \/>\n<span class=\"kw1\">fi<\/span>;<br \/>\n<br \/>\n<br \/>\n<span class=\"co0\"># calculate new x position<\/span><br \/>\n<span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"re1\">$x<\/span> <span class=\"re5\">-ge<\/span> <span class=\"re1\">$monitorLeft<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span> <span class=\"co0\"># we are on the right screen<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"re1\">$monitorBigger<\/span> <span class=\"re5\">-gt<\/span> <span class=\"re1\">$monitorLeft<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span> <span class=\"co0\">#the right screen is bigger<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"re1\">$notHorizontalMax<\/span> <span class=\"re5\">-eq<\/span> <span class=\"nu0\">1<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span> <span class=\"sy0\">&amp;&amp;<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re1\">$sizeX<\/span> <span class=\"re5\">-gt<\/span> <span class=\"re1\">$monitorLeft<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span> <span class=\"co0\">#resize window if it does not fit into smaller monitor<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re2\">sizeX<\/span>=<span class=\"re1\">$monitorLeft<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">fi<\/span>;<br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re2\">x<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;(<span class=\"es2\">$x<\/span> - <span class=\"es2\">$monitorLeft<\/span>) * <span class=\"es2\">$faktorBigToSmall<\/span>&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">echo<\/span> BigToSmall <span class=\"re1\">$faktorBigToSmall<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">else<\/span> <span class=\"co0\"># the left screen is bigger<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re2\">x<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;(<span class=\"es2\">$x<\/span> - <span class=\"es2\">$monitorLeft<\/span>) * <span class=\"es2\">$faktorSmallToBig<\/span>&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">echo<\/span> SmallToBig <span class=\"re1\">$faktorSmallToBig<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">fi<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"co0\">#round x<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re2\">x<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;(<span class=\"es2\">$x<\/span>+0.5)\/1&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"re2\">xAllInAll<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span> x + sizeX <span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"re1\">$xAllInAll<\/span> <span class=\"re5\">-gt<\/span> <span class=\"re1\">$monitorLeft<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re2\">x<\/span>=<span class=\"nu0\">0<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">fi<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <br \/>\n<span class=\"kw1\">else<\/span> <span class=\"co0\"># we are on the left screen<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"re1\">$monitorBigger<\/span> <span class=\"re5\">-gt<\/span> <span class=\"re1\">$monitorLeft<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span> &nbsp;<span class=\"co0\">#the right screen is bigger<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re2\">x<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$monitorLeft<\/span>+ <span class=\"es2\">$x<\/span> * <span class=\"es2\">$faktorSmallToBig<\/span>&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">echo<\/span> BigToSmall2 <span class=\"re1\">$faktorBigToSmall<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">else<\/span> <span class=\"co0\"># the left screen is bigger<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"re1\">$notHorizontalMax<\/span> <span class=\"re5\">-eq<\/span> <span class=\"nu0\">1<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span> <span class=\"sy0\">&amp;&amp;<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re1\">$sizeX<\/span> <span class=\"re5\">-gt<\/span> <span class=\"re1\">$monitorRight<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span> <span class=\"co0\">#resize window if it does not fit into smaller monitor<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re2\">sizeX<\/span>=<span class=\"re1\">$monitorRight<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">fi<\/span>;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re2\">x<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;<span class=\"es2\">$monitorLeft<\/span> + <span class=\"es2\">$x<\/span> * <span class=\"es2\">$faktorBigToSmall<\/span>&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">echo<\/span> SmallToBig2 <span class=\"re1\">$faktorSmallToBig<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">fi<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"co0\">#round x<\/span><br \/>\n&nbsp; &nbsp; <span class=\"re2\">x<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"kw3\">echo<\/span> <span class=\"st0\">&quot;(<span class=\"es2\">$x<\/span>+0.5)\/1&quot;<\/span> <span class=\"sy0\">|<\/span> <span class=\"kw2\">bc<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"re2\">xAllInAll<\/span>=$<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span> x + sizeX <span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw3\">echo<\/span> All x <span class=\"re1\">$xAllInAll<\/span><br \/>\n&nbsp; &nbsp; <br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#91;<\/span><span class=\"br0\">&#91;<\/span> <span class=\"re1\">$xAllInAll<\/span> <span class=\"re5\">-gt<\/span> $<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span> monitorRight + monitorLeft <span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#93;<\/span><span class=\"br0\">&#93;<\/span>;<span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"re2\">x<\/span>=<span class=\"re1\">$monitorLeft<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">fi<\/span><br \/>\n<span class=\"kw1\">fi<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"kw3\">echo<\/span> x <span class=\"re1\">$x<\/span><br \/>\n<span class=\"kw3\">echo<\/span> y <span class=\"re1\">$y<\/span><br \/>\n<br \/>\n<span class=\"co0\">#move window<\/span><br \/>\nwmiface setFrameGeometry <span class=\"re1\">$win<\/span> <span class=\"re1\">$x<\/span> <span class=\"re1\">$y<\/span> <span class=\"re1\">$sizeX<\/span> <span class=\"re1\">$sizeY<\/span><br \/>\n<br \/>\n<span class=\"co0\">#if window was maximized bring it to former size<\/span><br \/>\n<span class=\"kw1\">case<\/span> <span class=\"re1\">$maximized<\/span> <span class=\"kw1\">in<\/span><br \/>\n<span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;wmiface maximize <span class=\"re1\">$win<\/span> <span class=\"nu0\">1<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;;<\/span><br \/>\n<span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;wmiface maximize <span class=\"re1\">$win<\/span> <span class=\"nu0\">0<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;;<\/span><br \/>\n<span class=\"nu0\">3<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;wmiface maximize <span class=\"re1\">$win<\/span> <span class=\"nu0\">1<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;;<\/span><br \/>\n<span class=\"kw1\">esac<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>Some hint for google chrome\/chromium users, the script does only work if you set the setting in chrome for using the system frame and not the special one from chrome.<\/p>\n<p>Here is a screenshot of the correct setting in german environment:<\/p>\n<p><a href=\"http:\/\/www.ceh-photo.de\/blog\/wp-content\/plugins\/downloads-manager\/upload\/\/Bildschirmfoto-Einstellungen-Google-Chrome.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-268\" title=\"Configuration - Google Chrome\" src=\"http:\/\/www.ceh-photo.de\/blog\/wp-content\/plugins\/downloads-manager\/upload\/\/Bildschirmfoto-Einstellungen-Google-Chrome.png\" alt=\"\" width=\"579\" height=\"121\" srcset=\"https:\/\/www.ceh-photo.de\/blog\/wp-content\/plugins\/downloads-manager\/upload\/Bildschirmfoto-Einstellungen-Google-Chrome.png 579w, https:\/\/www.ceh-photo.de\/blog\/wp-content\/plugins\/downloads-manager\/upload\/Bildschirmfoto-Einstellungen-Google-Chrome-300x62.png 300w\" sizes=\"auto, (max-width: 579px) 100vw, 579px\" \/><\/a><\/p>\n<p>Script as Download:<br \/>\n<strong>SCRIPT UPDATED: ERROR CORRECTION AND IMPROVEMENTS DEPENDING SOME SPECIAL CONDITIONS 30.1.2011<\/strong><br \/>\n<a href=\"http:\/\/www.ceh-photo.de\/blog\/wp-content\/plugins\/downloads-manager\/upload\/\/monitorSwitch.run_.zip\">monitorSwitch.run<\/a><\/p>\n<p>If you study my script you see the power of wmiface. If you download the source package from the mentioned site you found a list of all available commands in the Readme. For example you could also switch windows between virtual desktops&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SCRIPT UPDATED: ERROR CORRECTION AND IMPROVEMENTS DEPENDING SOME SPECIAL CONDITIONS 30.1.2011 If I use two monitors in windows environment I use some scrips of the tool active aid\u00a0http:\/\/activaid.telgkamp.de\/ to have the ability to switch the active window between both monitors with a shortcut. Since I meanly use Linux on my private pc and laptop I [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,46],"tags":[39,63,64,40,41,57,65],"class_list":["post-265","post","type-post","status-publish","format-standard","hentry","category-it","category-linux-it-2","tag-bash","tag-gnome","tag-kde","tag-linux","tag-shell","tag-ubuntu","tag-wmiface"],"_links":{"self":[{"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=265"}],"version-history":[{"count":25,"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/265\/revisions"}],"predecessor-version":[{"id":950,"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=\/wp\/v2\/posts\/265\/revisions\/950"}],"wp:attachment":[{"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ceh-photo.de\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}