emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Screenshot of agenda: agenda is not shown in time
@ 2016-04-13 20:42 Karl Voit
  2016-04-13 23:42 ` Adam Porter
       [not found] ` <t8n3ucxtc8.ln2@news.c0t0d0s0.de>
  0 siblings, 2 replies; 4+ messages in thread
From: Karl Voit @ 2016-04-13 20:42 UTC (permalink / raw)
  To: emacs-orgmode

Hi!

I'd like to get a screenshot (PNG) of an agenda of mine by following
snippet:

(defun my-export-month-agenda-to-png-via-screenshot()
  (interactive)
  (org-agenda nil "n") ; generates agenda "n" (one month without todos)
  (if (my-buffer-exists "*Org Agenda*")
  (switch-to-buffer "*Org Agenda*")
    (org-agenda-list)
    )
  (message "Waiting for Screenshot ...")
  (sleep-for 1)
  (message "Say cheese ...")
  (setq myoutput
        (shell-command-to-string "/usr/bin/import -window root /home/vk/share/agenda.png"))
  (message (concat "Screenshot done (" myoutput ")"))
  )

The code works somewhat: the corresponding agenda is generated, a
screenshot (via imagemagick) is created. But: on the screenshot, I
see the buffer from where I invoked
my-export-month-agenda-to-png-via-screenshot in the first place and
in the minibuffer I can read "Say cheese ...".

Therefore it seems to be the case that basically the function
changes to the newly created Agenda buffer *after* the screenshot
and probably after the end of the function.

As you can see, I tried to change to the agenda buffer «manually»
via switch-to-buffer with no change of the result. I even tried to
get the result I am wishing for by adding a one-second sleep phase
which should cancel out any buffer-switch-performance-delay.

Can you help me, what is going on here?

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Screenshot of agenda: agenda is not shown in time
  2016-04-13 20:42 Screenshot of agenda: agenda is not shown in time Karl Voit
@ 2016-04-13 23:42 ` Adam Porter
       [not found] ` <t8n3ucxtc8.ln2@news.c0t0d0s0.de>
  1 sibling, 0 replies; 4+ messages in thread
From: Adam Porter @ 2016-04-13 23:42 UTC (permalink / raw)
  To: emacs-orgmode

Hi Karl,

This seems strange to me too.  I tested your code and found that the
screenshot always showed the pre-agenda state of the frame, showing the lisp
window at the top and the helm-M-x window at the bottom, the way it looked
when I hit RET to run the command.

However, I tried stepping through the function with edebug, and then it
worked properly: the screenshot was taken after the agenda displayed, and it
showed the agenda in the screenshot.

I don't know much about Emacs internals, but I'm guessing that something's
preventing the frame from being repainted until the function finishes. 
Maybe you could use a separate function to take the screenshot and call it
with a timer?

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Screenshot of agenda: agenda is not shown in time
       [not found] ` <t8n3ucxtc8.ln2@news.c0t0d0s0.de>
@ 2016-04-15 15:39   ` Karl Voit
       [not found]     ` <25g7ucxfpb.ln2@news.c0t0d0s0.de>
  0 siblings, 1 reply; 4+ messages in thread
From: Karl Voit @ 2016-04-15 15:39 UTC (permalink / raw)
  To: emacs-orgmode

* Michael Welle <mwe012008@gmx.net> wrote:
> Hello,

Hi Michael!

> Karl Voit <devnull@Karl-Voit.at> writes:
>
>> I'd like to get a screenshot (PNG) of an agenda of mine by following
>> snippet:
[...]
>>   (sleep-for 1)
> waits without updating the display. Mayby that is the problem? Try
> sit-for.

You seem to have found the root cause. What works at my side:

(defun my-export-month-agenda-to-png-via-screenshot()
  (interactive)
  (org-agenda nil "n") ; generates agenda "n" (one month without todos)
  (if (my-buffer-exists "*Org Agenda*")
  (switch-to-buffer "*Org Agenda*")
    (org-agenda-list)
    )
  (message "Waiting for Screenshot ...")
  (sit-for 1)
  (message "Say cheese ...")

  (setq myoutput
        (shell-command-to-string "/usr/bin/import -window root /home/vk/agenda.png"))
  (message (concat "Screenshot done (" myoutput ")"))
  )

HTH

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Screenshot of agenda: agenda is not shown in time
       [not found]     ` <25g7ucxfpb.ln2@news.c0t0d0s0.de>
@ 2016-04-16 11:53       ` Karl Voit
  0 siblings, 0 replies; 4+ messages in thread
From: Karl Voit @ 2016-04-16 11:53 UTC (permalink / raw)
  To: emacs-orgmode

* Michael Welle <mwe012008@gmx.net> wrote:
> Hello,

Hi Michael!

> great. May I ask what you are building? Are the screen dumps just for
> documentation purpose or are you up to something interesting ;)?

The purpose of this screenshot is to get a quick possibility to
check my next four weeks (only appointments, no todos) on my Android
phone. 

Since I am not able to define this PNG as my lock-screen background
(my original plan), I created a lock-screen link to the image. To
get to the agenda from lock-screen requires a slide of the
lock-screen link, enter my security pattern, and then my image
viewer shows me the agenda.

This is a reasonable workaround since MobileOrg still does not work
with my local Android calendar for some reason.

-- 
mail|git|SVN|photos|postings|SMS|phonecalls|RSS|CSV|XML to Org-mode:
       > get Memacs from https://github.com/novoid/Memacs <

https://github.com/novoid/extract_pdf_annotations_to_orgmode + more on github

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-04-16 11:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-13 20:42 Screenshot of agenda: agenda is not shown in time Karl Voit
2016-04-13 23:42 ` Adam Porter
     [not found] ` <t8n3ucxtc8.ln2@news.c0t0d0s0.de>
2016-04-15 15:39   ` Karl Voit
     [not found]     ` <25g7ucxfpb.ln2@news.c0t0d0s0.de>
2016-04-16 11:53       ` Karl Voit

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).