* bug#38452: 26.3; set-frame-position is slightly drifted @ 2019-12-02 3:14 ` Pascal Lambrechts 2019-12-02 9:41 ` martin rudalics 2019-12-03 15:04 ` bug#38452: [Pascal Lambrechts] " Pascal Lambrechts 0 siblings, 2 replies; 19+ messages in thread From: Pascal Lambrechts @ 2019-12-02 3:14 UTC (permalink / raw) To: 38452 Hi, I noticed a strange behaviour with the function set-frame-position. This happens even when starting from `emacs -q --no-site-file` If I evaluate the following expression: (let ((x (frame-parameter nil 'left)) (y (frame-parameter nil 'top))) (set-frame-position nil x y)) ( by C-X C-E in the file or with M-: ) the behaviour that I expect would be that the frame stays still since I use the original left and top position to reset the position. However the frame is slightly drifted by 10 pixel to the left and 8 pixels to the top. If I repeat the evaluation of the expression the frame keeps moving. More generally (set-frame-position ...) seems to be off by (-10,-8). Best, Pascal ------- In GNU Emacs 26.3 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.22.30) of 2019-09-16 built on lcy01-amd64-030 Windowing system distributor 'The X.Org Foundation', version 11.0.11906000 System Description: Ubuntu 18.04.3 LTS Recent messages: Quit (New file) Making completion list... Mark set t Auto-saving...done Auto-saving...done Mark set Auto-saving...done delete-backward-char: Text is read-only Configured using: 'configure --build=x86_64-linux-gnu --prefix=/usr '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' --sysconfdir=/etc --localstatedir=/var --disable-silent-rules '--libdir=${prefix}/lib/x86_64-linux-gnu' '--libexecdir=${prefix}/lib/x86_64-linux-gnu' --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --sharedstatedir=/var/lib --program-suffix=26 --with-modules --with-file-notification=inotify --with-mailutils --with-x=yes --with-x-toolkit=gtk3 --with-xwidgets --with-lcms2 'CFLAGS=-g -O2 -fdebug-prefix-map=/build/emacs26-TP6iDo/emacs26-26.3~1.git96dd019=. -fstack-protector-strong -Wformat -Werror=format-security -no-pie' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro -no-pie'' Configured features: XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS XWIDGETS LIBSYSTEMD LCMS2 Important settings: value of $LC_MONETARY: en_GB.UTF-8 value of $LC_NUMERIC: en_GB.UTF-8 value of $LC_TIME: en_GB.UTF-8 value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=ibus locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: diff-auto-refine-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /usr/share/emacs/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/26.3/lisp/textmodes/ispell /usr/share/emacs/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/26.3/lisp/textmodes/flyspell Features: (shadow sort mail-extr emacsbug message rmc puny seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib dired dired-loaddefs format-spec rfc822 mml mml-sec password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils vc-git diff-mode easymenu easy-mmode elec-pair time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind inotify lcms2 dynamic-setting system-font-setting font-render-setting xwidget-internal move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 105692 8001) (symbols 48 21258 1) (miscs 40 110 155) (strings 32 30991 4008) (string-bytes 1 812032) (vectors 16 15327) (vector-slots 8 525502 9320) (floats 8 58 338) (intervals 56 392 11) (buffers 992 15)) -- Pascal Lambrechts -- UCLouvain (SST/SC/MATH IRMP) building: Marc De Hemptinne (Louvain-la-Neuve) - Local: B 430 phone: +32 (0)104x73161 IRMP bte L7.01.02 // Chemin du Cyclotron 2 // 1348 Louvain-la-Neuve // Belgium ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-02 3:14 ` bug#38452: 26.3; set-frame-position is slightly drifted Pascal Lambrechts @ 2019-12-02 9:41 ` martin rudalics [not found] ` <84h82iwio0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> 2019-12-03 15:04 ` bug#38452: [Pascal Lambrechts] " Pascal Lambrechts 1 sibling, 1 reply; 19+ messages in thread From: martin rudalics @ 2019-12-02 9:41 UTC (permalink / raw) To: Pascal Lambrechts, 38452 > I noticed a strange behaviour with the function set-frame-position. > This happens even when starting from `emacs -q --no-site-file` > > If I evaluate the following expression: > > (let ((x (frame-parameter nil 'left)) > (y (frame-parameter nil 'top))) > (set-frame-position nil x y)) > > ( by C-X C-E in the file or with M-: ) > > the behaviour that I expect would be that the frame stays still since I use > the original left and top position to reset the position. > However the frame is slightly drifted by 10 pixel to the left and 8 > pixels to the top. > If I repeat the evaluation of the expression the frame keeps moving. > > More generally (set-frame-position ...) seems to be off by (-10,-8). Does (set-frame-position nil 0 0) work "as intended" for you? Also when evaluated two or more times in succession? martin ^ permalink raw reply [flat|nested] 19+ messages in thread
[parent not found: <84h82iwio0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me>]
* bug#38452: 26.3; set-frame-position is slightly drifted [not found] ` <84h82iwio0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> @ 2019-12-03 9:40 ` martin rudalics 0 siblings, 0 replies; 19+ messages in thread From: martin rudalics @ 2019-12-03 9:40 UTC (permalink / raw) To: 38452 Pascal, thanks for replying. I quote your mail in full below so it appears that way on the bug tracker. Please always use "reply to all" when answering, so none of your mails get lost. > When I does > (set-frame-position nil 0 0) > the frame jump to the left topmost point of the avalaible screen not > counting the dock (which on my gnome-3 desktop is on the left side) neither the > main menu line. > If I repeat that command the frame does not move. > > But in that situation I get the evaluations: > (frame-parameter nil 'left) ==> 45 > (frame-parameter nil 'top) ==> 19 > > Now if I evaluate (set-frame-position nil 45 19) > the frame does not move (comparing with putting the frame at (0,0)) > and the parameters left and top keep unchanged values 45 and 19 > > If now I evaluate: > > (set-frame-position nil 100 60) > (frame-parameter nil 'left) > (frame-parameter nil 'top) > I get the values 90 and 52 for left and top. > > If reconfigure gnome so that the dock appears on the bottom of > my screen instead of the left edge, then > (set-frame-position nil 0 0) > moves the frame on the leftmost position of the screen and > (frame-parameter nil 'left) ==> (+ -10) From this I conclude that the dock should be responsible for the behavior you see. Which window manager do you use? What do you get when you evaluate (display-monitor-attributes-list) in Emacs? Are there differences in the workarea values when you evaluate that expression with the dock on the left and at the bottom? Also you say that (set-frame-position nil 0 0) and (set-frame-position nil 45 19) both put the frame at the same position on the screen and in both cases the following evaluations result: (frame-parameter nil 'left) ==> 45 (frame-parameter nil 'top) ==> 19 Is my reading of your text right? If so, then the "problems" seem to start when the X-value is somewhere between 45 and 100 and the Y-value between 19 and 60. Right? Since the behavior apparently changes when you move the dock to the bottom, the X-positioning seems clearly related to the position of the dock. Would the Y-positioning then be related to the presence of the main menu line (presumably on the bottom)? The one thing that stupefies me then in either case is why the deviations are 10 and 8 pixels only. I presume that both, your dock and the menu line, are wider. Thanks, martin ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: [Pascal Lambrechts] Re: bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-02 3:14 ` bug#38452: 26.3; set-frame-position is slightly drifted Pascal Lambrechts 2019-12-02 9:41 ` martin rudalics @ 2019-12-03 15:04 ` Pascal Lambrechts 1 sibling, 0 replies; 19+ messages in thread From: Pascal Lambrechts @ 2019-12-03 15:04 UTC (permalink / raw) To: 38452@debbugs.gnu.org [-- Attachment #1: Type: text/plain, Size: 232 bytes --] -- Pascal Lambrechts -- UCLouvain (SST/SC/MATH IRMP) building: Marc De Hemptinne (Louvain-la-Neuve) - Local: B 430 phone: +32 (0)104x73161 IRMP bte L7.01.02 // Chemin du Cyclotron 2 // 1348 Louvain-la-Neuve // Belgium [-- Attachment #2: Type: message/rfc822, Size: 9732 bytes --] From: Pascal Lambrechts <pascal.lambrechts@uclouvain.be> To: martin rudalics <rudalics@gmx.at> Subject: Re: bug#38452: 26.3; set-frame-position is slightly drifted Date: Tue, 03 Dec 2019 15:08:23 +0100 Message-ID: <84blspbiy0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> Martin, I answer some of your quesions inside your mail. Also at the end of the mail I add a copy of a scratch buffer on which I did more experiments (with one or two displays). As you can read in this scratch the behaviour is even more mysterious now. Indeed if I set the parameters and read them back by frame-parameter both evaluated in a enclosing progn then I get the expected values. But if I reread right after the parameters I get different values !? martin rudalics <rudalics@gmx.at> writes: > Pascal, thanks for replying. I quote your mail in full below so it > appears that way on the bug tracker. Please always use "reply to all" > when answering, so none of your mails get lost. > > > When I does > > (set-frame-position nil 0 0) > > the frame jump to the left topmost point of the avalaible screen not > > counting the dock (which on my gnome-3 desktop is on the left side) neither the > > main menu line. > > If I repeat that command the frame does not move. > > > > But in that situation I get the evaluations: > > (frame-parameter nil 'left) ==> 45 > > (frame-parameter nil 'top) ==> 19 > > > > Now if I evaluate (set-frame-position nil 45 19) > > the frame does not move (comparing with putting the frame at (0,0)) > > and the parameters left and top keep unchanged values 45 and 19 > > > > If now I evaluate: > > > > (set-frame-position nil 100 60) > > (frame-parameter nil 'left) > > (frame-parameter nil 'top) > > I get the values 90 and 52 for left and top. > > > > If reconfigure gnome so that the dock appears on the bottom of > > my screen instead of the left edge, then > > (set-frame-position nil 0 0) > > moves the frame on the leftmost position of the screen and > > (frame-parameter nil 'left) ==> (+ -10) > > From this I conclude that the dock should be responsible for the > behavior you see. Which window manager do you use? What do you get > when you evaluate (display-monitor-attributes-list) in Emacs? Here are the values of (display-monitor-attributes-list) when the dock is on the left or the bottom of the screen (the workarea are distinct) pl-dock-left’s value is (((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 55 27 1865 1053) (mm-size 309 174) (frames #<frame *Minibuf-2* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk"))) pl-dock-bottom’s value is (((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 0 27 1920 1000) (mm-size 309 174) (frames #<frame *Minibuf-2* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk"))) >Are > there differences in the workarea values when you evaluate that > expression with the dock on the left and at the bottom? Indeed see above > > Also you say that > > (set-frame-position nil 0 0) > > and > > (set-frame-position nil 45 19) > > both put the frame at the same position on the screen and in both > cases the following evaluations result: > > (frame-parameter nil 'left) ==> 45 > (frame-parameter nil 'top) ==> 19 > > Is my reading of your text right? If so, then the "problems" seem to > start when the X-value is somewhere between 45 and 100 and the Y-value > between 19 and 60. Right? Yes I did some experiment in the scratch file. In the first configuration (my laptop screen as a unique scrren) it seems that when the frame is at the top left corner the parameters take values (L=45,T=19) (which probably correspond to the width of the dock and height of the menu line). If I set-frame-position at (x,y) with 0<=x<=55 and 0<=y<=27 then the frame does not move and the values are reset to (45,19). If I set-frame-position at (60,30) then the frame moved a little bit and the parameters evaluate to (50,22). > > Since the behavior apparently changes when you move the dock to the > bottom, the X-positioning seems clearly related to the position of the > dock. Would the Y-positioning then be related to the presence of the > main menu line (presumably on the bottom)? The one thing that > stupefies me then in either case is why the deviations are 10 and 8 > pixels only. I presume that both, your dock and the menu line, are > wider. Yes the dock and menu line are certainly wider than 10 et 8 pixels. > > Thanks, martin Here is a scratch file on which I did some experiment commented. Th function pl-lt is defined to easily show the values of the parameters left/top of the frame: ========================== SCRACTCH INTERACTIVE LISP FILE WITH EXPERMINTS ======================================== ;; This buffer is for text that is not saved, and for Lisp evaluation. ;; To create a file, visit it with <open> and enter text in its buffer. ;; Experiments with set-frame-position and the result values of the parameters left and top of the frame ;; Each parenthesis sexp has been evaluated with C-j = eval-print-last-sexp (defun pl-lt () "Returns a string giving the left/top positions of the current frame" (concat " LEFT=" (prin1-to-string (frame-parameter nil 'left)) " TOP=" (prin1-to-string (frame-parameter nil 'top)))) ;; First experiments with the laptop as only display and the gnome-3 dock on the left: (display-monitor-attributes-list) (((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 55 27 1865 1053) (mm-size 309 174) (frames #<frame *scratch* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk"))) (set-frame-position nil 0 0) t ;; the frame is immediately below the menu line and on the immediate right of the left dock (pl-lt) " LEFT=45 TOP=19" (progn (set-frame-position nil 0 0) (pl-lt)) " LEFT=0 TOP=0" (pl-lt) " LEFT=45 TOP=19" (set-frame-position nil 45 19) t ;; this did not move the frame: still at left corner but not overlaping the dock or menu line (pl-lt) " LEFT=45 TOP=19" (progn (set-frame-position nil 45 19) (pl-lt)) " LEFT=45 TOP=19" (pl-lt) " LEFT=45 TOP=19" (progn (set-frame-position nil 50 25) (pl-lt)) " LEFT=50 TOP=25" ;; this did not move the frame (pl-lt) " LEFT=45 TOP=19" ;; the parameters changed between the (pl-lt) inside the progn and after !!! (progn (set-frame-position nil 55 27) (pl-lt)) " LEFT=55 TOP=27" ;; this did not move the frame (pl-lt) " LEFT=45 TOP=19" (progn (set-frame-position nil 60 30) (pl-lt)) " LEFT=60 TOP=30" ;; this moved very slight the frame away from the left-top corner (pl-lt) " LEFT=50 TOP=22" (set-frame-position nil 400 100) t ;; this moved the frame sowewhere in the middle of the screen (pl-lt) " LEFT=390 TOP=92" (progn (set-frame-position nil 390 92) (pl-lt)) " LEFT=390 TOP=92" ;; this moved a bit the frame towars the top left corner (pl-lt) " LEFT=380 TOP=84" ;; --------------------------- ;; Second experiments with an external screen as single display (display-monitor-attributes-list) (((name . "DP-1-2") (geometry 0 0 1920 1080) (workarea 55 27 1865 1053) (mm-size 598 336) (frames #<frame *scratch* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk"))) (set-frame-position nil 0 0) ;; the frame is immediately below the menu line and on the immediate right of the left dock t (pl-lt) " LEFT=45 TOP=19" (progn (set-frame-position nil 0 0) (pl-lt)) " LEFT=0 TOP=0" (pl-lt) ;; Third experiment with a double display: internal display of laptop + external display ;; The external display is set as the 'primary' display and is supposed to be on the right ;; of the laptop display. So the menu bar and dock are only on the external display (display-monitor-attributes-list) (((name . "DP-1-2") (geometry 1920 0 1920 1080) (workarea 1920 27 1920 1053) (mm-size 598 336) (frames #<frame *scratch* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk")) ((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 0 0 1920 1080) (mm-size 309 174) (frames) (source . "Gdk"))) (set-frame-position nil 0 0) t ;; the frame is now in the left-top corner of the laptoop screen (no menu neither dock here) (pl-lt) " LEFT=(+ -10) TOP=(+ -8)" (progn (set-frame-position nil 0 0) (pl-lt)) " LEFT=0 TOP=0" (pl-lt) " LEFT=(+ -10) TOP=(+ -8)" (progn (set-frame-position nil (+ -10) (+ -8)) (pl-lt)) " LEFT=2842 TOP=288" ;; the previous evaluation has moved the frame on the external display close to the right corner (pl-lt) " LEFT=2832 TOP=280" (progn (set-frame-position nil 2832 280) (pl-lt)) " LEFT=2832 TOP=280" ;; the previous sexpevaluation has moved the frame slighly to the left and top -- Pascal Lambrechts -- UCLouvain (SST/SC/MATH IRMP) building: Marc De Hemptinne (Louvain-la-Neuve) - Local: B 430 phone: +32 (0)104x73161 IRMP bte L7.01.02 // Chemin du Cyclotron 2 // 1348 Louvain-la-Neuve // Belgium ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted [not found] <84blspbiy0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> 2019-12-02 3:14 ` bug#38452: 26.3; set-frame-position is slightly drifted Pascal Lambrechts @ 2019-12-03 15:59 ` martin rudalics 2019-12-03 18:18 ` Pascal Lambrechts 1 sibling, 1 reply; 19+ messages in thread From: martin rudalics @ 2019-12-03 15:59 UTC (permalink / raw) To: Pascal Lambrechts; +Cc: 38452 > As you can read in this scratch the behaviour is even more mysterious > now. Indeed if I set the parameters and read them back by > frame-parameter both evaluated in a enclosing progn then I get the > expected values. But if I reread right after the parameters I get > different values !? My guess is that Emacs initially sets the parameter values to the requested values and asks the window manager to apply them and later sets the parameters to what the window manager has applied. If you retrieve their values in between these two steps, Emacs reports the requested and not the finally realized values. BTW, I still don't know what your window manager is. > pl-dock-left’s value is > (((name . "eDP-1") > (geometry 0 0 1920 1080) > (workarea 55 27 1865 1053) > (mm-size 309 174) > (frames #<frame *Minibuf-2* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) > (source . "Gdk"))) > > > pl-dock-bottom’s value is > (((name . "eDP-1") > (geometry 0 0 1920 1080) > (workarea 0 27 1920 1000) > (mm-size 309 174) > (frames #<frame *Minibuf-2* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) > (source . "Gdk"))) These values are consistent and make sense. > In the first configuration (my laptop screen as a unique scrren) it > seems that when the frame is at the top left corner the parameters > take values (L=45,T=19) (which probably correspond to the width of the > dock and height of the menu line). Well 55 - 45 gives 10 and 27 - 19 gives 8, the values you reported in your original report as However the frame is slightly drifted by 10 pixel to the left and 8 pixels to the top. If we say that the origin for things to display on screen is (-10, -8) - something you could probably verify by moving the dock to the right and the menu bar line to the bottom - we have a clue. Just that it doesn't make sense to me, yet. > If I set-frame-position at (x,y) with 0<=x<=55 and 0<=y<=27 then the > frame does not move and the values are reset to (45,19). > If I set-frame-position at (60,30) then the frame moved a little bit and > the parameters evaluate to (50,22). These fit into the picture sketched above. > Here is a scratch file on which I did some experiment commented. Fine exercise. Appreciated! > Th function pl-lt is defined to easily show the values of the parameters > left/top of the frame: > > ========================== SCRACTCH INTERACTIVE LISP FILE WITH EXPERMINTS ======================================== > ;; This buffer is for text that is not saved, and for Lisp evaluation. > ;; To create a file, visit it with <open> and enter text in its buffer. > > ;; Experiments with set-frame-position and the result values of the parameters left and top of the frame > ;; Each parenthesis sexp has been evaluated with C-j = eval-print-last-sexp > (defun pl-lt () > "Returns a string giving the left/top positions of the current frame" > (concat " LEFT=" > (prin1-to-string (frame-parameter nil 'left)) > " TOP=" > (prin1-to-string (frame-parameter nil 'top)))) > > > ;; First experiments with the laptop as only display and the gnome-3 dock on the left: > (display-monitor-attributes-list) > (((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 55 27 1865 1053) (mm-size 309 174) (frames #<frame *scratch* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk"))) > > > (set-frame-position nil 0 0) > t > ;; the frame is immediately below the menu line and on the immediate right of the left dock > (pl-lt) > " LEFT=45 TOP=19" > (progn (set-frame-position nil 0 0) (pl-lt)) > " LEFT=0 TOP=0" > (pl-lt) > " LEFT=45 TOP=19" > (set-frame-position nil 45 19) > t > ;; this did not move the frame: still at left corner but not overlaping the dock or menu line > (pl-lt) > " LEFT=45 TOP=19" > (progn (set-frame-position nil 45 19) (pl-lt)) > " LEFT=45 TOP=19" > (pl-lt) > " LEFT=45 TOP=19" > (progn (set-frame-position nil 50 25) (pl-lt)) > " LEFT=50 TOP=25" > ;; this did not move the frame > (pl-lt) > " LEFT=45 TOP=19" > ;; the parameters changed between the (pl-lt) inside the progn and after !!! Yes. This is what I mentioned at the top of this manual. > (progn (set-frame-position nil 55 27) (pl-lt)) > " LEFT=55 TOP=27" > ;; this did not move the frame > (pl-lt) > " LEFT=45 TOP=19" You didn't try (set-frame-position nil 56 28) here, it should move the frame to (46, 20) IIUC ;-) > (progn (set-frame-position nil 60 30) (pl-lt)) > " LEFT=60 TOP=30" > ;; this moved very slight the frame away from the left-top corner > (pl-lt) > " LEFT=50 TOP=22" > > > > (set-frame-position nil 400 100) > t > ;; this moved the frame sowewhere in the middle of the screen > (pl-lt) > " LEFT=390 TOP=92" > (progn (set-frame-position nil 390 92) (pl-lt)) > " LEFT=390 TOP=92" > ;; this moved a bit the frame towars the top left corner > (pl-lt) > " LEFT=380 TOP=84" > > ;; --------------------------- > ;; Second experiments with an external screen as single display > (display-monitor-attributes-list) > (((name . "DP-1-2") (geometry 0 0 1920 1080) (workarea 55 27 1865 1053) (mm-size 598 336) (frames #<frame *scratch* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk"))) > > (set-frame-position nil 0 0) > ;; the frame is immediately below the menu line and on the immediate right of the left dock > t > (pl-lt) > " LEFT=45 TOP=19" > (progn (set-frame-position nil 0 0) (pl-lt)) > " LEFT=0 TOP=0" > (pl-lt) > > ;; Third experiment with a double display: internal display of laptop + external display > ;; The external display is set as the 'primary' display and is supposed to be on the right > ;; of the laptop display. So the menu bar and dock are only on the external display > (display-monitor-attributes-list) > (((name . "DP-1-2") (geometry 1920 0 1920 1080) (workarea 1920 27 1920 1053) (mm-size 598 336) (frames #<frame *scratch* 0x4e723c0> #<frame *unsent mail to martin rudalics* 0x5289930>) (source . "Gdk")) ((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 0 0 1920 1080) (mm-size 309 174) (frames) (source . "Gdk"))) > (set-frame-position nil 0 0) > t > ;; the frame is now in the left-top corner of the laptoop screen (no menu neither dock here) > (pl-lt) > " LEFT=(+ -10) TOP=(+ -8)" > (progn (set-frame-position nil 0 0) (pl-lt)) > " LEFT=0 TOP=0" > (pl-lt) > " LEFT=(+ -10) TOP=(+ -8)" So here we see that a frame that should be located at (0, 0) is moved to (-10, -8). What does (modify-frame-parameters nil '((left . 0) (top . 0) (undecorated . t))) yield (to find out whether these 10/8 are due to the decorations)? > (progn (set-frame-position nil (+ -10) (+ -8)) (pl-lt)) The doc-string of 'set-frame-position' says that FRAME must be a live frame and defaults to the selected one. X and Y, if positive, specify the coordinate of the left and top edge of FRAME's outer frame in pixels relative to an origin (0, 0) of FRAME's display. If any of X or Y is negative, it specifies the coordinates of the right or bottom edge of the outer frame of FRAME relative to the right or bottom edge of FRAME's display. so you tried to move the frame to some position near the bottom right corner of the display and these > " LEFT=2842 TOP=288" > ;; the previous evaluation has moved the frame on the external display close to the right corner > (pl-lt) > " LEFT=2832 TOP=280" > (progn (set-frame-position nil 2832 280) (pl-lt)) > " LEFT=2832 TOP=280" > ;; the previous sexpevaluation has moved the frame slighly to the left and top will be as expected provided the frame size and the LEFT/TOP values sum up accordingly. Does anything change in general when you explicitly request a position as with (modify-frame-parameters nil '((user-position . t) (left . 0) (top . 0))) martin ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-03 15:59 ` martin rudalics @ 2019-12-03 18:18 ` Pascal Lambrechts 2019-12-03 18:37 ` martin rudalics 0 siblings, 1 reply; 19+ messages in thread From: Pascal Lambrechts @ 2019-12-03 18:18 UTC (permalink / raw) To: martin rudalics; +Cc: 38452@debbugs.gnu.org martin rudalics <rudalics@gmx.at> writes: > My guess is that Emacs initially sets the parameter values to the > requested values and asks the window manager to apply them and later > sets the parameters to what the window manager has applied. If you > retrieve their values in between these two steps, Emacs reports the > requested and not the finally realized values. Make sense. I inserted a (sleep-for 5) in the progn between the set-frame-position and reading the parameters: in that case again the value of the parameters are also changed (see the scracth eperiment at end of mail). > BTW, I still don't > know what your window manager is. I guess it is gdm3 as I entered the following commands: M-! cat /etc/X11/default-display-manager ==> /usr/sbin/gdm3 M-! ps -e |grep gdm ==> 80 ? 00:00:00 watchdogd 829 ? 00:00:01 rsyslogd 1006 ? 00:00:00 gdm3 1119 ? 00:00:00 gdm-session-wor 1138 tty1 00:00:00 gdm-x-session 9679 ? 00:00:00 gdm-session-wor 9701 tty2 00:00:00 gdm-x-session > > > If we say that the origin for things to display on screen is (-10, -8) > - something you could probably verify by moving the dock to the right > and the menu bar line to the bottom - we have a clue. Just that it > doesn't make sense to me, yet. Not sure: when I try with (undecorated.t) I get LEFT=0 TOP=(+ -30) So the left side seems to be at 0. > > > If I set-frame-position at (x,y) with 0<=x<=55 and 0<=y<=27 then the > > frame does not move and the values are reset to (45,19). > > If I set-frame-position at (60,30) then the frame moved a little bit and > > the parameters evaluate to (50,22). > > These fit into the picture sketched above. > > > Here is a scratch file on which I did some experiment commented. > Fine exercise. Appreciated! > > > (modify-frame-parameters nil '((left . 0) (top . 0) (undecorated . t))) > yield (to find out whether these 10/8 are due to the decorations)? > " LEFT=0 TOP=(+ -30)" ;; This buffer is for text that is not saved, and for Lisp evaluation. ;; To create a file, visit it with <open> and enter text in its buffer. ;; Experiments with set-frame-position and the result values of the parameters left and top of the frame ;; Each parenthesis sexp has been evaluated with C-j = eval-print-last-sexp (defun pl-lt () "Returns a string giving the left/top positions of the current frame" (concat " LEFT=" (prin1-to-string (frame-parameter nil 'left)) " TOP=" (prin1-to-string (frame-parameter nil 'top)))) ;; 4eme experience 2 displays: on left: internal screen=2ndary display , on right: external=primary display with dock and menu on right ;; the frame is located in the internal screen (display-monitor-attributes-list) (((name . "HDMI-1") (geometry 1920 0 1920 1080) (workarea 1920 27 1920 1053) (mm-size 521 293) (frames) (source . "Gdk")) ((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 0 0 1920 1080) (mm-size 309 174) (frames #<frame *unsent mail to martin rudalics* 0x5289930> #<frame test-frame-set-position-Martin-1.el 0x624cc90>) (source . "Gdk"))) (set-frame-position nil 0 0) t (pl-lt) " LEFT=(+ -10) TOP=(+ -8)" (progn (set-frame-position nil 0 0) (pl-lt)) " LEFT=0 TOP=0" (progn (set-frame-position nil 0 0) (sleep-for 5) (pl-lt)) " LEFT=(+ -10) TOP=(+ -8)" (modify-frame-parameters nil '((left . 0) (top . 0) (undecorated . t))) nil (pl-lt) " LEFT=0 TOP=(+ -30)" (modify-frame-parameters nil '((user-position . t) (left . 0) (top . 0))) nil (pl-lt) " LEFT=0 TOP=(+ -30)" (modify-frame-parameters nil '((user-position . t) (left . 0) (top . 0) (undecorated . nil))) nil (pl-lt) " LEFT=(+ -10) TOP=(+ -8)" =================================== Best,Pascal ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-03 18:18 ` Pascal Lambrechts @ 2019-12-03 18:37 ` martin rudalics 2019-12-03 18:53 ` Pascal Lambrechts 0 siblings, 1 reply; 19+ messages in thread From: martin rudalics @ 2019-12-03 18:37 UTC (permalink / raw) To: Pascal Lambrechts; +Cc: 38452@debbugs.gnu.org >> BTW, I still don't >> know what your window manager is. > > I guess it is gdm3 as I entered the following commands: That's a display manager. >> If we say that the origin for things to display on screen is (-10, -8) >> - something you could probably verify by moving the dock to the right >> and the menu bar line to the bottom - we have a clue. Just that it >> doesn't make sense to me, yet. > > Not sure: when I try with (undecorated.t) I get LEFT=0 TOP=(+ -30) > So the left side seems to be at 0. So it seems that your window manager skips the decorations when a frame is adjacent to an edge by just moving that frame outside the display by the size of the decoration. Some window managers make this customizable IIRC. > ;; 4eme experience 2 displays: on left: internal screen=2ndary display , on right: external=primary display with dock and menu on right > ;; the frame is located in the internal screen > (display-monitor-attributes-list) > (((name . "HDMI-1") (geometry 1920 0 1920 1080) (workarea 1920 27 1920 1053) (mm-size 521 293) (frames) (source . "Gdk")) ((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 0 0 1920 1080) (mm-size 309 174) (frames #<frame *unsent mail to martin rudalics* 0x5289930> #<frame test-frame-set-position-Martin-1.el 0x624cc90>) (source . "Gdk"))) > > > (set-frame-position nil 0 0) > t > (pl-lt) > " LEFT=(+ -10) TOP=(+ -8)" > > (progn (set-frame-position nil 0 0) (pl-lt)) > " LEFT=0 TOP=0" > > (progn (set-frame-position nil 0 0) (sleep-for 5) (pl-lt)) > " LEFT=(+ -10) TOP=(+ -8)" > > > (modify-frame-parameters nil '((left . 0) (top . 0) (undecorated . t))) > nil > (pl-lt) > " LEFT=0 TOP=(+ -30)" > > > > (modify-frame-parameters nil '((user-position . t) (left . 0) (top . 0))) > nil > (pl-lt) > " LEFT=0 TOP=(+ -30)" But the interesting case is whether specifying 'user-position' would have any impact when the dock and the menu bar line are present on the same frame, that is, the single display case. martin ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-03 18:37 ` martin rudalics @ 2019-12-03 18:53 ` Pascal Lambrechts 2019-12-04 9:20 ` martin rudalics 0 siblings, 1 reply; 19+ messages in thread From: Pascal Lambrechts @ 2019-12-03 18:53 UTC (permalink / raw) To: martin rudalics; +Cc: 38452@debbugs.gnu.org martin rudalics <rudalics@gmx.at> writes: > >> BTW, I still don't > >> know what your window manager is. > > > > I guess it is gdm3 as I entered the following commands: > > That's a display manager. > Hmmm I dont know how to et the information about the window manager. I know that my linux is ubuntu 18 and I dont thing that I changed anything arelated to the window manager from the standard configurtation. Do you have some idea of how I could know what is my window manager ? > >> If we say that the origin for things to display on screen is (-10, -8) > >> - something you could probably verify by moving the dock to the right > >> and the menu bar line to the bottom - we have a clue. Just that it > >> doesn't make sense to me, yet. > > > > Not sure: when I try with (undecorated.t) I get LEFT=0 TOP=(+ -30) > > So the left side seems to be at 0. > > So it seems that your window manager skips the decorations when a > frame is adjacent to an edge by just moving that frame outside the > display by the size of the decoration. Some window managers make this > customizable IIRC. > > > ;; 4eme experience 2 displays: on left: internal screen=2ndary display , on right: external=primary display with dock and menu on right > > ;; the frame is located in the internal screen > > (display-monitor-attributes-list) > > (((name . "HDMI-1") (geometry 1920 0 1920 1080) (workarea 1920 27 1920 1053) (mm-size 521 293) (frames) (source . "Gdk")) ((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 0 0 1920 1080) (mm-size 309 174) (frames #<frame *unsent mail to martin rudalics* 0x5289930> #<frame test-frame-set-position-Martin-1.el 0x624cc90>) (source . "Gdk"))) > > > > > > (set-frame-position nil 0 0) > > t > > (pl-lt) > > " LEFT=(+ -10) TOP=(+ -8)" > > > > (progn (set-frame-position nil 0 0) (pl-lt)) > > " LEFT=0 TOP=0" > > > > (progn (set-frame-position nil 0 0) (sleep-for 5) (pl-lt)) > > " LEFT=(+ -10) TOP=(+ -8)" > > > > > > (modify-frame-parameters nil '((left . 0) (top . 0) (undecorated . t))) > > nil > > (pl-lt) > > " LEFT=0 TOP=(+ -30)" > > > > > > > > (modify-frame-parameters nil '((user-position . t) (left . 0) (top . 0))) > > nil > > (pl-lt) > > " LEFT=0 TOP=(+ -30)" > > But the interesting case is whether specifying 'user-position' would > have any impact when the dock and the menu bar line are present on the > same frame, that is, the single display case. > My new experiment with a single display, the dock at left and menu line at top: (display-monitor-attributes-list) (((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 55 27 1865 1053) (mm-size 309 174) (frames #<frame *notmuch-id:2b232b16-497e-22d8-a395-9fae6e87add7@gmx.at* 0x5289930> #<frame test-frame-set-position-Martin-1.el 0x624cc90>) (source . "Gdk"))) (modify-frame-parameters nil '((user-position . t) (left . 0) (top . 0))) nil (pl-lt) " LEFT=45 TOP=19" > martin Pascal -- Pascal Lambrechts -- UCLouvain (SST/SC/MATH IRMP) building: Marc De Hemptinne (Louvain-la-Neuve) - Local: B 430 phone: +32 (0)104x73161 IRMP bte L7.01.02 // Chemin du Cyclotron 2 // 1348 Louvain-la-Neuve // Belgium ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-03 18:53 ` Pascal Lambrechts @ 2019-12-04 9:20 ` martin rudalics [not found] ` <84eexjjy5g.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> 0 siblings, 1 reply; 19+ messages in thread From: martin rudalics @ 2019-12-04 9:20 UTC (permalink / raw) To: Pascal Lambrechts; +Cc: 38452@debbugs.gnu.org > Hmmm I dont know how to et the information about the window manager. > I know that my linux is ubuntu 18 and I dont thing that I changed > anything arelated to the window manager from the standard configurtation. > Do you have some idea of how I could know what is my window manager ? If you have it installed you could try wmctrl -m. If you have not changed anything, the answer should be probably Mutter for the GNOME 3 desktop. Note that I'm asking for this information because I'm considering to add an entry to Emacs' PROBLEMS section, sketching the behavior you report. And I wonder that no one else has reported a similar behavior so far. BTW are "dock" and "menu bar line" official nomeclature on GNOME 3? >> But the interesting case is whether specifying 'user-position' would >> have any impact when the dock and the menu bar line are present on the >> same frame, that is, the single display case. "same frame" was silly, sorry. > My new experiment with a single display, the dock at left and menu line > at top: > > (display-monitor-attributes-list) > (((name . "eDP-1") (geometry 0 0 1920 1080) (workarea 55 27 1865 1053) (mm-size 309 174) (frames #<frame *notmuch-id:2b232b16-497e-22d8-a395-9fae6e87add7@gmx.at* 0x5289930> #<frame test-frame-set-position-Martin-1.el 0x624cc90>) (source . "Gdk"))) > > (modify-frame-parameters nil '((user-position . t) (left . 0) (top . 0))) > nil > (pl-lt) > " LEFT=45 TOP=19" So specifying 'user-position' doesn't get us anywhere. Could you send us two screenshots of your display? (1) One where an Emacs frame is positioned at the top left corner of a display _without_ dock and menu bar line. I'd like to see whether that frame's decorations are visibly moved to some position outside the screen. (2) One where the Emacs frame is positioned right in the middle of the display. Thanks, martin ^ permalink raw reply [flat|nested] 19+ messages in thread
[parent not found: <84eexjjy5g.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me>]
* bug#38452: 26.3; set-frame-position is slightly drifted [not found] ` <84eexjjy5g.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> @ 2019-12-05 9:06 ` martin rudalics 2019-12-06 9:12 ` Pascal Lambrechts 0 siblings, 1 reply; 19+ messages in thread From: martin rudalics @ 2019-12-05 9:06 UTC (permalink / raw) To: Pascal Lambrechts; +Cc: 38452@debbugs.gnu.org > M-! wmctrl -m ==> > Name: GNOME Shell > Class: N/A > PID: N/A > Window manager's "showing the desktop" mode: N/A OK. Let's stick to "GNOME Shell" then. > I attach the two print screen. Thanks. All I can derive from these shots is that GNOME doesn't draw any borders around a window. What does evaluating (x-frame-geometry) yield for such a frame? > For (1) I put the dock on the right side but I do not know how to remove > the topbar :-( Given the fact that it's called topbar it maybe even can't be moved to the bottom of the screen. I'm slowly coming to the conclusion that Emacs doesn't do its calculations right for GNOME windows. Maybe it should try to rely more on EWMHs instead of using XCB. Unfortunately, the person who wrote the code has left us and people knowing much about using size hints and going up window hierarchies are rare. martin ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-05 9:06 ` martin rudalics @ 2019-12-06 9:12 ` Pascal Lambrechts 2019-12-07 9:40 ` martin rudalics 0 siblings, 1 reply; 19+ messages in thread From: Pascal Lambrechts @ 2019-12-06 9:12 UTC (permalink / raw) To: martin rudalics; +Cc: 38452@debbugs.gnu.org Hi Martin, > > M-! wmctrl -m ==> > > Name: GNOME Shell > > Class: N/A > > PID: N/A > > Window manager's "showing the desktop" mode: N/A > > OK. Let's stick to "GNOME Shell" then. > > > I attach the two print screen. > > Thanks. All I can derive from these shots is that GNOME doesn't draw > any borders around a window. >What does evaluating (x-frame-geometry) yield for such a frame? The value of x-frame geometry depends on the dock position: ; if I set the dock at left: (set-frame-position nil 0 0) t (setq pl-x-frame-geometry-dock-at-left (x-frame-geometry)) ((outer-position 45 . 19) (outer-size 772 . 766) (external-border-size 10 . 10) (outer-border-width . 0) (title-bar-size 0 . 28) (menu-bar-external . t) (menu-bar-size 752 . 24) (tool-bar-external . t) (tool-bar-position . top) (tool-bar-size 752 . 46) (internal-border-width . 0)) ;if I set the dock at bottom: (set-frame-position nil 0 0) t (setq pl-x-frame-geometry-dock-at-bottom (x-frame-geometry)) ((outer-position -10 . 19) (outer-size 772 . 766) (external-border-size 10 . 10) (outer-border-width . 0) (title-bar-size 0 . 28) (menu-bar-external . t) (menu-bar-size 752 . 24) (tool-bar-external . t) (tool-bar-position . top) (tool-bar-size 752 . 46) (internal-border-width . 0)) > > > For (1) I put the dock on the right side but I do not know how to remove > > the topbar :-( > > Given the fact that it's called topbar it maybe even can't be moved to > the bottom of the screen. > > I'm slowly coming to the conclusion that Emacs doesn't do its > calculations right for GNOME windows. Maybe it should try to rely > more on EWMHs instead of using XCB. Unfortunately, the person who > wrote the code has left us and people knowing much about using size > hints and going up window hierarchies are rare. > > martin Pascal -- Pascal Lambrechts -- UCLouvain (SST/SC/MATH IRMP) building: Marc De Hemptinne (Louvain-la-Neuve) - Local: B 430 phone: +32 (0)104x73161 IRMP bte L7.01.02 // Chemin du Cyclotron 2 // 1348 Louvain-la-Neuve // Belgium ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-06 9:12 ` Pascal Lambrechts @ 2019-12-07 9:40 ` martin rudalics 2019-12-07 16:37 ` Pascal Lambrechts 0 siblings, 1 reply; 19+ messages in thread From: martin rudalics @ 2019-12-07 9:40 UTC (permalink / raw) To: Pascal Lambrechts; +Cc: 38452@debbugs.gnu.org > The value of x-frame geometry depends on the dock position: > ; if I set the dock at left: > (set-frame-position nil 0 0) > t > (setq pl-x-frame-geometry-dock-at-left (x-frame-geometry)) > ((outer-position 45 . 19) (outer-size 772 . 766) (external-border-size 10 . 10) (outer-border-width . 0) (title-bar-size 0 . 28) (menu-bar-external . t) (menu-bar-size 752 . 24) (tool-bar-external . t) (tool-bar-position . top) (tool-bar-size 752 . 46) (internal-border-width . 0)) > > ;if I set the dock at bottom: > (set-frame-position nil 0 0) > t > (setq pl-x-frame-geometry-dock-at-bottom (x-frame-geometry)) > ((outer-position -10 . 19) (outer-size 772 . 766) (external-border-size 10 . 10) (outer-border-width . 0) (title-bar-size 0 . 28) (menu-bar-external . t) (menu-bar-size 752 . 24) (tool-bar-external . t) (tool-bar-position . top) (tool-bar-size 752 . 46) (internal-border-width . 0)) Thanks. Apparently GNOME draws a virtual 10 pixels wide border around each frame which is not visible but affects the value of frame position. Concludingly, we have two problems: (1) GNOME by no means allows to programmatically position a window within the screen estates used by the "dock" and the "top bar". I suppose that when you manually drag such a window with the mouse, it may move into these estates but will be hidden by the dock and the top bar. As a last resort: Does it help when you set the frame's z-group parameter to 'above' like in (modify-frame-parameters nil '((z-group . above) (left . 0) (top . 0))) (2) Frame positions are reported off by 10 and 8 pixels. While the value of 10 can be explained with the reported border width, the value 8 is yet unexplained. I think (1) can and should be documented in the Elisp manual. (2) might be a bug in Emacs but I don't know how to fix it. martin ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-07 9:40 ` martin rudalics @ 2019-12-07 16:37 ` Pascal Lambrechts 2019-12-08 8:58 ` martin rudalics 0 siblings, 1 reply; 19+ messages in thread From: Pascal Lambrechts @ 2019-12-07 16:37 UTC (permalink / raw) To: martin rudalics; +Cc: 38452@debbugs.gnu.org martin rudalics <rudalics@gmx.at> writes: > Thanks. Apparently GNOME draws a virtual 10 pixels wide border around > each frame which is not visible but affects the value of frame > position. Concludingly, we have two problems: > > (1) GNOME by no means allows to programmatically position a window > within the screen estates used by the "dock" and the "top bar". I > suppose that when you manually drag such a window with the mouse, > it may move into these estates but will be hidden by the dock and > the top bar. I can move the frame manually under the left dock. But I cannot move it manually under the topbar (or dont know how). Another weird suprise: - if I manually move the frame with some part under the dock and then (set-frame-position nil 0 0) the frame jump at the leftmost position of the screen (partly covered by the dock) but still below the topbar. Then the frame parametres return values: " LEFT=(+ -10) TOP=19" - if I move manually the frame in the middle of the screen, away from the dock, and then (set-frame-position nil 0 0) the frame jumps just right to the dock, so not at the same position as in the first case. Then the frame parametres return values: " LEFT=45 TOP=19" So it seems possible to move the frame programatically under the dock when it is alreasy under the dock. A last point which confirms that the dock may have some role: if I move manually a frame to try to put it under the dock, it first resists to pass the dock and when you insist finally it passes under. > As a last resort: Does it help when you set the > frame's z-group parameter to 'above' like in > > (modify-frame-parameters nil '((z-group . above) (left . 0) (top . 0))) No, it changes nothing to the horizontal position of the frame. > > (2) Frame positions are reported off by 10 and 8 pixels. While the > value of 10 can be explained with the reported border width, the > value 8 is yet unexplained. > > I think (1) can and should be documented in the Elisp manual. (2) > might be a bug in Emacs but I don't know how to fix it. > > martin Pascal -- Pascal Lambrechts -- UCLouvain (SST/SC/MATH IRMP) building: Marc De Hemptinne (Louvain-la-Neuve) - Local: B 430 phone: +32 (0)104x73161 IRMP bte L7.01.02 // Chemin du Cyclotron 2 // 1348 Louvain-la-Neuve // Belgium ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-07 16:37 ` Pascal Lambrechts @ 2019-12-08 8:58 ` martin rudalics 2019-12-08 10:02 ` Pascal Lambrechts 0 siblings, 1 reply; 19+ messages in thread From: martin rudalics @ 2019-12-08 8:58 UTC (permalink / raw) To: Pascal Lambrechts; +Cc: 38452@debbugs.gnu.org > Another weird suprise: > - if I manually move the frame with some part under the dock and then > (set-frame-position nil 0 0) > the frame jump at the leftmost position of the screen (partly covered by the > dock) but still below the topbar. > Then the frame parametres return values: > " LEFT=(+ -10) TOP=19" Interesting but hardly usable for programmed positioning. > - if I move manually the frame in the middle of the screen, away from > the dock, and then > (set-frame-position nil 0 0) > the frame jumps just right to the dock, so not at the same position as > in the first case. > Then the frame parametres return values: > " LEFT=45 TOP=19" > > So it seems possible to move the frame programatically under the dock > when it is alreasy under the dock. > > A last point which confirms that the dock may have some role: if I move > manually a frame to try to put it under the dock, it first resists to > pass the dock and when you insist finally it passes under. You have to move the mouse beyond a threshold of a few pixels before it continues moving. >> As a last resort: Does it help when you set the >> frame's z-group parameter to 'above' like in >> >> (modify-frame-parameters nil '((z-group . above) (left . 0) (top . 0))) > No, it changes nothing to the horizontal position of the frame. Does it at least have the Emacs frame appear on top of the dock? martin ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-08 8:58 ` martin rudalics @ 2019-12-08 10:02 ` Pascal Lambrechts 2019-12-09 9:20 ` martin rudalics 0 siblings, 1 reply; 19+ messages in thread From: Pascal Lambrechts @ 2019-12-08 10:02 UTC (permalink / raw) To: martin rudalics; +Cc: 38452@debbugs.gnu.org martin rudalics <rudalics@gmx.at> writes: > >> As a last resort: Does it help when you set the > >> frame's z-group parameter to 'above' like in > >> > >> (modify-frame-parameters nil '((z-group . above) (left . 0) (top . 0))) > > No, it changes nothing to the horizontal position of the frame. > > Does it at least have the Emacs frame appear on top of the dock? No, if I move manually towards the dock the frame with (z-group . above) it appears under the dock (the dock is half transparent). Note that the frame can manually be moved very much to the left of the left side, with part of the frame disappearing out of the screen. > > martin Pascal -- Pascal Lambrechts -- UCLouvain (SST/SC/MATH IRMP) building: Marc De Hemptinne (Louvain-la-Neuve) - Local: B 430 phone: +32 (0)104x73161 IRMP bte L7.01.02 // Chemin du Cyclotron 2 // 1348 Louvain-la-Neuve // Belgium ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-08 10:02 ` Pascal Lambrechts @ 2019-12-09 9:20 ` martin rudalics 2022-04-13 2:01 ` Lars Ingebrigtsen 0 siblings, 1 reply; 19+ messages in thread From: martin rudalics @ 2019-12-09 9:20 UTC (permalink / raw) To: Pascal Lambrechts; +Cc: 38452@debbugs.gnu.org >> Does it at least have the Emacs frame appear on top of the dock? > No, if I move manually towards the dock the frame with (z-group > . above) it appears under the dock (the dock is half transparent). So it looks like Emacs doesn't have much power on your system. Would working with wmctrl give you more power? You should be able to get the position and size of an Emacs window with the -G argument and move it via the -e argument, see for example https://manpages.ubuntu.com/manpages/trusty/en/man1/wmctrl.1.html > Note that the frame can manually be moved very much to the left of the > left side, with part of the frame disappearing out of the screen. That's normal. martin ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2019-12-09 9:20 ` martin rudalics @ 2022-04-13 2:01 ` Lars Ingebrigtsen 2022-04-13 8:45 ` martin rudalics 0 siblings, 1 reply; 19+ messages in thread From: Lars Ingebrigtsen @ 2022-04-13 2:01 UTC (permalink / raw) To: martin rudalics; +Cc: Pascal Lambrechts, 38452@debbugs.gnu.org martin rudalics <rudalics@gmx.at> writes: >> No, if I move manually towards the dock the frame with (z-group >> . above) it appears under the dock (the dock is half transparent). > > So it looks like Emacs doesn't have much power on your system. Would > working with wmctrl give you more power? You should be able to get > the position and size of an Emacs window with the -G argument and move > it via the -e argument, see for example > > https://manpages.ubuntu.com/manpages/trusty/en/man1/wmctrl.1.html Skimming this bug report, it seems like there's nothing to be done here on the Emacs side, because this is all a window manager issue? Is that accurate? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2022-04-13 2:01 ` Lars Ingebrigtsen @ 2022-04-13 8:45 ` martin rudalics 2022-04-13 11:55 ` Lars Ingebrigtsen 0 siblings, 1 reply; 19+ messages in thread From: martin rudalics @ 2022-04-13 8:45 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Pascal Lambrechts, 38452@debbugs.gnu.org > Skimming this bug report, it seems like there's nothing to be done here > on the Emacs side, because this is all a window manager issue? Is that > accurate? I suppose so. GNOME shell users should be able to change some aspects in their dconf settings (in particular those regarding the size of the invisible borders around frames that trigger those confusing frame positions) but I never tried them so I can't really tell. martin ^ permalink raw reply [flat|nested] 19+ messages in thread
* bug#38452: 26.3; set-frame-position is slightly drifted 2022-04-13 8:45 ` martin rudalics @ 2022-04-13 11:55 ` Lars Ingebrigtsen 0 siblings, 0 replies; 19+ messages in thread From: Lars Ingebrigtsen @ 2022-04-13 11:55 UTC (permalink / raw) To: martin rudalics; +Cc: Pascal Lambrechts, 38452@debbugs.gnu.org martin rudalics <rudalics@gmx.at> writes: >> Skimming this bug report, it seems like there's nothing to be done here >> on the Emacs side, because this is all a window manager issue? Is that >> accurate? > > I suppose so. GNOME shell users should be able to change some aspects > in their dconf settings (in particular those regarding the size of the > invisible borders around frames that trigger those confusing frame > positions) but I never tried them so I can't really tell. OK; closing this bug report, then. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2022-04-13 11:55 UTC | newest] Thread overview: 19+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <84blspbiy0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> 2019-12-02 3:14 ` bug#38452: 26.3; set-frame-position is slightly drifted Pascal Lambrechts 2019-12-02 9:41 ` martin rudalics [not found] ` <84h82iwio0.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> 2019-12-03 9:40 ` martin rudalics 2019-12-03 15:04 ` bug#38452: [Pascal Lambrechts] " Pascal Lambrechts 2019-12-03 15:59 ` martin rudalics 2019-12-03 18:18 ` Pascal Lambrechts 2019-12-03 18:37 ` martin rudalics 2019-12-03 18:53 ` Pascal Lambrechts 2019-12-04 9:20 ` martin rudalics [not found] ` <84eexjjy5g.fsf@PC-1S0-327.i-did-not-set--mail-host-address--so-tickle-me> 2019-12-05 9:06 ` martin rudalics 2019-12-06 9:12 ` Pascal Lambrechts 2019-12-07 9:40 ` martin rudalics 2019-12-07 16:37 ` Pascal Lambrechts 2019-12-08 8:58 ` martin rudalics 2019-12-08 10:02 ` Pascal Lambrechts 2019-12-09 9:20 ` martin rudalics 2022-04-13 2:01 ` Lars Ingebrigtsen 2022-04-13 8:45 ` martin rudalics 2022-04-13 11:55 ` Lars Ingebrigtsen
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.