From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id mGo4H5Z9gV9sXQAA0tVLHw (envelope-from ) for ; Sat, 10 Oct 2020 09:23:34 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0 with LMTPS id mNEqG5Z9gV/haQAA1q6Kng (envelope-from ) for ; Sat, 10 Oct 2020 09:23:34 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id E25029401D9 for ; Sat, 10 Oct 2020 09:23:33 +0000 (UTC) Received: from localhost ([::1]:57008 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kRB6C-0000VT-Kw for larch@yhetil.org; Sat, 10 Oct 2020 05:23:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:55810) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kRB46-0000VL-N9 for emacs-orgmode@gnu.org; Sat, 10 Oct 2020 05:21:22 -0400 Received: from mout.web.de ([212.227.15.3]:50491) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kRB40-0007sK-CF for emacs-orgmode@gnu.org; Sat, 10 Oct 2020 05:21:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1602321671; bh=u5ft04kn5yLWv7AIKaVkCBRMhTItR11Jdir8qMabq5g=; h=X-UI-Sender-Class:References:From:To:Cc:Subject:In-reply-to:Date; b=V75WxqnN0CcwsQnsVQn7MbAQ17ONtQbxkOiJvzbSgMBo4mqcYY8RCAAFQvUi1nZNK Opx+sdnOOiGWe9xUlJCzP6S2GUprB/wwvHC0y9NLIw0yXsWdMpzNsDz1OsnxVDbY50 40aC+Hy1ZQHJs9tuvDoQrLbCoqNxJ/S16d8Jn49Y= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Received: from fluss ([84.165.16.11]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0Lw189-1kPo5439f3-017jU5; Sat, 10 Oct 2020 11:21:11 +0200 References: User-agent: mu4e 1.4.13; emacs 27.1 From: "Dr. Arne Babenhauserheide" To: Daryl Manning Subject: Re: org-mode time tracking setup integrating with SaaS (Harvest, Toggl, Bonsai etc) In-reply-to: Date: Sat, 10 Oct 2020 11:21:07 +0200 Message-ID: <87pn5q308s.fsf@web.de> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-Provags-ID: V03:K1:x60YGRZFsisObNSbQunQg6ttS6gmJWA+TmccG3S9drwhfKfADa/ X/dl7Yo/mBV0vlmy/CtQADjTMmHH2gPTxChY7NHf0vehCXrF/bjTHmNfAWMpyHesr4DrWaH qe1+FrOjpG8TD7z1hRQjHk15BD+srnp/8mJ6q/C6E3hPxKXUY82klEl0ewl1HBiMmcGbIFK lsvJPL8gnKQmiXmXbtI5g== X-UI-Out-Filterresults: notjunk:1;V03:K0:Ewt/gsRJPjg=:BQ/ZcJOmesiY+0oQa0Yh07 f0a/wzL17AQYlFb//Kb2+av2/Mk0fSpslOiAZFpKMYChUZZb53WYpcG7MNeB+UzJ1FHmNwq1X Rm6iRmq0hzzp7n9Uw40oHTVIUx8BQvRLNPZb/6QimR8FkvBOOQJ+mXLy2MU6+8zRVNCTr2bIc PxbOOLXgkjYg0TAPk6sbWkT4DU3f+hdlH60GdR6c9bxvSSuD+TCSpzf1B+4z9pXE9DF31E0qs Zw4jEoAEfaqPwvH7qSoPIdQbVcVj2fjxTWS3+gnuoC0471r8NW3I1zjl/J4LFtPNLNTwLkHNg sk8wdugTMW2UTta/eIUF5yL5D/UiSLV3hlzEbfRNkOycJ9QrXlRXKlZ4691pesnLrKYIJOrE4 ZwyjP+TgRDH94OOg3FDDmxFywx+qH9g+c5CEA/yVwqAGpBys8GmMZUzQnjHyNiVg/EOFxa14z IM6L59fAc0CzfgDNgSM3pgZxdYV+9j6mzlTnNz3kmFgabwyb+V84pBb4XCYLIaMfpx37EL43X I9CjynwmSu7sWTBH235PMgQHGqhovXsOizxHTQ9LTOiqiPVY25udf4x+qnNQ1tammY3jVhjLY ehbjSY3ruci9WO/faifGoynnlu6iQZLpDxBXvE7h3+c7v9uigdOvQdMFof/zn+QGhPeaXmETw mrp8+GCUu3b2gYjCXH3Wt1iz6J8uYKykO7eI0nMCdZKj2ksuolKCCWGV24au9+pqDLdyhUBQ0 y/5o12mYUuaFa5Z01lQ/N3wsUW5LO+x57oNUF1bPeHYBWfUhPXevUxeUV4pkvLzjlfc925lzQ aaNja6uaHdTuHvbAjiKoscDF+7AkFbxZH8Kacqy4aQ4QI1RYPQL5XhHn+gdJQcLw0ldWxHkkb 1K6Gs/t0NjXWLNTwgkEGJPegHcwgwGJMDi5j9uh1yVFGEDIc0LM57C7iwaqnisGsdwL2it1Xa a3BjQUCUeTpvmXslcJd39Hum/e2baWd0NXTaahveYwNmBgzF10Jsun39ARgVLUj85Gg9iEcVE MkmbbezGjEvfLjyJUnapSLoc9u+a7G6uXKljLCPPxSI87FLisIJBmni/HnAuOYX9IUI/MgTD0 Gm2FVhVWg6GiAQ5l1nDbFB4tsqauzn0hjkIHXdYtdGeDlqnouwvDUdd7yId9wlmyksl/x6N4P 4LVCHTzmHO0HlkMiJYsPYbhnvrYus+Ip3lJaC13D03v274n+EKN2gBDL2OfE1P3z/bABAXF6b XCGJCPy2IQuvOS5Kn Received-SPF: pass client-ip=212.227.15.3; envelope-from=arne_bab@web.de; helo=mout.web.de X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/10 05:21:13 X-ACL-Warn: Detected OS = Linux 3.11 and newer X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: emacs-orgmode@gnu.org Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=web.de header.s=dbaedf251592 header.b=V75WxqnN; dmarc=none; spf=pass (aspmx1.migadu.com: domain of emacs-orgmode-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=emacs-orgmode-bounces@gnu.org X-Spam-Score: -2.31 X-TUID: tq4JyMzW3SC/ --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Daryl Manning writes: > Has anyone run across a good integration for doing that or has a blog post > on their system particularly where they need to track hours/tasks across a > few clients and projects for consultancy purposes I don=E2=80=99t do consultancy, but we I need to book for multiple projects= at work. I track my time and projects with org-mode (and found that whenever I think =E2=80=9Cthis is so small, I don=E2=80=99t need an org-hea= dline for this=E2=80=9D, time gets out of hand). At the end of the week I then book my time on the corresponding Jira issues using the clocktable in agenda-view. These are my essential customizations for that: (use-package org-agenda :defer 8 :custom (alert-default-style 'libnotify) (appt-disp-window-function 'alert-for-appt) (appt-delete-window-function (lambda ())) (org-agenda-clock-consistency-checks (quote (:max-duration "12:00" :min-duration 0 :max-gap "0:05" :gap-ok-around ("4:00" "12:00") :default-face ((:background "DarkRed") (:foreground "white")) :overlap-face nil :gap-face nil :no-end-time-face nil :long-face nil := short-face nil))) (org-agenda-clockreport-parameter-plist (quote (:link t :maxlevel 2 :prop= erties ("Effort")))) (org-agenda-start-with-clockreport-mode t) :config ;; Rebuild the reminders everytime the agenda is displayed (add-hook 'org-agenda-finalize-hook (lambda () (org-agenda-to-appt t))) ;; Run once when Emacs starts (org-agenda-to-appt t) ;; Activate appointments so we get notifications (appt-activate t)) (defun my/org-agenda-show-kanban () (interactive) (save-excursion (search-forward ":KANBAN:") (org-agenda-goto) (org-narrow-to-subtree) (show-all) (fit-window-to-buffer) (widen) (recenter-top-bottom 0))) ;; KDE: show custom agenda with kanban via f12: (with-eval-after-load 'org (setq org-agenda-custom-commands '(("o" "Agenda and TODOs" ((agenda) (tags-todo "-notodo" ((org-agenda-block-separator ?-))) (tags "KANBAN" ((org-agenda-block-separator ?-)(org-agenda-compact-blo= cks nil)(org-agenda-overriding-header ""))))))) ;; from https://www.emacswiki.org/emacs/TransposeWindows solution by Robert= Bost (defun rotate-windows (arg) "Rotate your windows; use the prefix argument to rotate the other directi= on" (interactive "P") (if (not (> (count-windows) 1)) (message "You can't rotate a single window!") (let* ((rotate-times (prefix-numeric-value arg)) (direction (if (or (< rotate-times 0) (equal arg '(4))) 'reverse 'identity))) (dotimes (_ (abs rotate-times)) (dotimes (i (- (count-windows) 1)) (let* ((w1 (elt (funcall direction (window-list)) i)) (w2 (elt (funcall direction (window-list)) (+ i 1))) (b1 (window-buffer w1)) (b2 (window-buffer w2)) (s1 (window-start w1)) (s2 (window-start w2)) (p1 (window-point w1)) (p2 (window-point w2))) (set-window-buffer-start-and-point w1 b2 s2 p2) (set-window-buffer-start-and-point w2 b1 s1 p1))))))) (defun agenda-and-todo () (interactive) (org-agenda nil "o") (delete-other-windows) (my/org-agenda-show-kanban) (rotate-windows 1)) ;; systemsettings shortcuts: map f12 to ;; emacsclient -e '(progn (show-frame)(agenda-and-todo))' (global-set-key (kbd "") 'agenda-and-todo) ;; KDE: record new issue with M-f12 (alt f12): ;; systemsettings shortcuts: map alt f12 to ;; emacsclient -e '(progn (show-frame)(org-capture))' (global-set-key (kbd "M-") 'org-capture) ;; clock into the current task via S-f12 (shift f12). rationale: shift ;; is used to shift from one task to another without clocking out. (global-set-key (kbd "S-") 'org-clock-in) ;; KDE: global clock out via M-S-f12 (alt-shift f12): ;; systemsettings shortcuts: map f12 to ;; emacsclient -e '(progn (show-frame)(org-clock-out))' (global-set-key (kbd "M-S-") 'org-clock-out) (defun show-frame (&optional frame) "Show the current Emacs frame or the FRAME given as argument. And make sure that it really shows up!" (raise-frame) ; yes, you have to call this twice. Don=E2=80=99t ask me why=E2=80=A6 ; select-frame-set-input-focus calls x-focus-frame and does a bit of ; additional magic. (select-frame-set-input-focus (selected-frame)) (select-frame-set-input-focus (selected-frame))) I have a dedicated emacs environment for work that I brought over into homeoffice. Best wishes, Arne =2D-=20 Unpolitisch sein hei=C3=9Ft politisch sein ohne es zu merken --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQJEBAEBCAAuFiEE801qEjXQSQPNItXAE++NRSQDw+sFAl+BfQYQHGFybmVfYmFi QHdlYi5kZQAKCRAT741FJAPD6zjdD/9RGWdy9x4VJcMuXqQXN5qzP+xndInAKHKW jTcpNavZd31DL2+hRLFg2lUWjbaHuQ8MwGKe/UGt7q1rBhj6ARh6kZNeYZMvrM/e p4qsFghmdx38C/71He0FWNQ5M2fV/IpD7Rs9FxYIDK1yTKh35/6qF2rix8v38f3R ZjVWqLDXgIfcVj/sjqMk3pvU2SaYTILiuMgJ9Bb72NI/Co0V0ZIIzySYAfRXjihA YOo/pnfCzxUj8mNjFZz9wi/V0xBqEOqnQC0bSvdHeo13M9RiCNlL+/Zd1+oU32Gp vEL5WhNCoHKcdMmavsWrj+OFx2B5z4EkP+aeyxZ5nFhjlwVbn7LrQ1yJJ0dRUaIf jhEH4enOhIUVYbVLYrqINRXwwZVk96+4YmIqvUyUihiBjqfsahMn2ztjvWjUcXp+ ylAumQyRvTsSZRmhTnWnVkzT60mn9VSbY3MeffyPlgjDpT7u9PMuH3VvAs7c/aEK GLdxy1wFMPBTm8Vyi0MYUL2BTBqcHDi6OmRdI/ce1D7ZfTLGZ7N7rk5Zd+lo5kBX +wF6Vqtnjl3ATF4KBj1zVvMMufMZO7joBHL/QHiC/Xp661vKs+gYBp4hM40e+CSX daP4hn5HqjjDRVClzehVgr9P1/ikO/RxdZnSJ8Xqh96P6UtkUmIfbcjDu6dh41Pg u7Bnq/3byIjEBAEBCAAuFiEE3Si95tmHXKvOSosd3M8NswvBBUgFAl+BfQYQHGFy bmVfYmFiQHdlYi5kZQAKCRDczw2zC8EFSIV+A/9Mo3Hgo6VMv4R7aDhUjgQ7pZq+ OpUwXUBCfyhg7thWRGHvKl72Nv/kyNhwjWq70RQgvSue/uarHY2NJ/dAnI617tFi rAvA2QsRsr3r/t0GVvI4sYK5vATVQd7Hi4zPsmWtpk6D+NO6s5qZwudDXb1voiOA 7+M3EsLM4pZaMdqFag== =Yr4y -----END PGP SIGNATURE----- --=-=-=--