about summary refs log tree commit diff stats
path: root/dwm.1
Commit message (Expand)AuthorAgeFilesLines
* removed the stack position stuffAnselm R. Garbe2006-10-051-5/+1
* final fix for man pageAnselm R. Garbe2006-10-051-3/+3
* Button3 click on mode label toggles stack position nowAnselm R. Garbe2006-10-051-2/+3
* documented the new behavior in man pageAnselm R. Garbe2006-09-291-0/+3
* renamed column into areaAnselm R. Garbe2006-09-281-7/+7
* man page fixarg@mmvi2006-09-221-1/+1
* fixed issue pointed out by Jukkaarg@mmvi2006-09-221-1/+1
* small man page fixarg@mmvi2006-09-221-0/+1
* updated man pagearg@mmvi2006-09-221-5/+1
* fixed a nuance in dwm.1arg@mmvi2006-09-201-1/+1
* really small changes to dwm.1Anselm R. Garbe2006-09-081-4/+3
* made markups in dwm.1 more consistentAnselm R. Garbe2006-09-071-95/+38
* small addition to dwm.1Anselm R. Garbe2006-09-071-4/+4
* well ok, added Mod-s to default bindings (however, I don't need it)Anselm R. Garbe2006-09-051-0/+6
* I really need column growing, now pushing upstreamAnselm R. Garbe2006-09-051-0/+6
* applied sanders patchAnselm R. Garbe2006-09-011-6/+12
* changed shortcut into Mod1-0Anselm R. Garbe2006-08-311-5/+5
* added viewall to mainstream (only Ross Mohns version, not the toggle)Anselm R. Garbe2006-08-311-0/+4
* implemented Button2 press on tags for toggletag on the focused clientAnselm R. Garbe2006-08-311-0/+6
* applied sanders somepatches.patchAnselm R. Garbe2006-08-281-1/+6
* updated man page of dwmAnselm R. Garbe2006-08-251-3/+3
* yet another fixAnselm R. Garbe2006-08-241-1/+1
* small man page fixAnselm R. Garbe2006-08-241-1/+2
* updated man pageAnselm R. Garbe2006-08-231-4/+4
* applied tag drawing change to man pageAnselm R. Garbe2006-08-231-4/+4
* small fix of man pageAnselm R. Garbe2006-08-231-1/+1
* updated man pageAnselm R. Garbe2006-08-221-2/+1
* small changes to dwm.1, rearranged order within main event loopAnselm R.Garbe2006-08-211-6/+8
* applied jk_to_tab patchAnselm R.Garbe2006-08-151-34/+42
* applied sanders man page patch, removed button2 from bar clickAnselm R.Garbe2006-08-141-19/+21
* implemented restack behavior (floats are on top in tiled mode)Anselm R.Garbe2006-08-141-2/+2
* removed viewnext/viewprevAnselm R.Garbe2006-08-141-16/+0
* updated man page, added CAVEATS sectionAnselm R.Garbe2006-08-131-7/+14
* implemented viewextend and added M-S-C-n shortcuts for extending the current ...Anselm R.Garbe2006-08-111-4/+17
* applied Sanders fixes to dwm.1Anselm R.Garbe2006-08-111-4/+5
* fixed dwm.1, added Mod1-Shift-c (was missing for an odd reason)Anselm R.Garbe2006-08-111-3/+7
* updated dwm(1)Anselm R.Garbe2006-08-111-0/+14
* applied sander's patchAnselm R.Garbe2006-08-101-3/+10
* disallow zoom on maximized clientsAnselm R.Garbe2006-08-101-4/+0
* added a trailing '.' to shortcut descriptions in dwm(1)arg@10ksloc.org2006-08-071-15/+15
* applied Sanders man page/Makefile patcharg@10ksloc.org2006-08-071-1/+1
* updated man pagearg@10ksloc.org2006-08-071-0/+2
* applied Sanders doc changes, added a PHONY line and changed the output of con...arg@10ksloc.org2006-08-031-15/+16
* changing MASTERW value from 52 to 60 (in both, default and arg), I feel this ...arg@10ksloc.org2006-08-021-1/+1
* applied Sanders patches (numlock2)arg@10ksloc.org2006-08-021-10/+17
* removed artefacts of single-linked list (thanx to Jukka, I must have been mad)arg@10ksloc.org2006-08-011-1/+1
* centralized/externalized configuration to config.harg@10ksloc.org2006-08-011-4/+2
* applied Sanders patchesarg@10ksloc.org2006-08-011-17/+7
* s/0.5/0.6/ - my steps are wider than the realityarg@10ksloc.org2006-07-211-1/+1
* preparing 0.6 which will be available in the evening after sanders patch approx.arg@10ksloc.org2006-07-211-15/+2
n>msg types.WorkerMessage) func( rawCerts [][]byte, _ [][]*x509.Certificate) error { return func(rawCerts [][]byte, _ [][]*x509.Certificate) error { pool := x509.NewCertPool() for _, rawCert := range rawCerts { cert, err := x509.ParseCertificate(rawCert) if err != nil { return err } pool.AddCert(cert) } request := &types.CertificateApprovalRequest{ Message: types.RespondTo(msg), CertPool: pool, } w.worker.PostMessage(request, nil) response := <-w.worker.Actions if response.InResponseTo() != request { return fmt.Errorf("Expected UI to respond to cert request") } if approval, ok := response.(*types.ApproveCertificate); !ok { return fmt.Errorf("Expected UI to send certificate approval") } else { if approval.Approved { return nil } else { return fmt.Errorf("UI rejected certificate") } } } } func (w *IMAPWorker) handleMessage(msg types.WorkerMessage) error { if w.idleStop != nil { close(w.idleStop) if err := <-w.idleDone; err != nil { w.worker.PostMessage(&types.Error{Error: err}, nil) } } switch msg := msg.(type) { case *types.Unsupported: // No-op case *types.Configure: u, err := url.Parse(msg.Config.Source) if err != nil { return err } w.config.scheme = u.Scheme if strings.HasSuffix(w.config.scheme, "+insecure") { w.config.scheme = strings.TrimSuffix(w.config.scheme, "+insecure") w.config.insecure = true } w.config.addr = u.Host if !strings.ContainsRune(w.config.addr, ':') { w.config.addr += ":" + u.Scheme } w.config.scheme = u.Scheme w.config.user = u.User case *types.Connect: var ( c *client.Client err error ) tlsConfig := &tls.Config{ InsecureSkipVerify: true, VerifyPeerCertificate: w.verifyPeerCert(msg), } switch w.config.scheme { case "imap": c, err = client.Dial(w.config.addr) if err != nil { return err } if !w.config.insecure { if err := c.StartTLS(tlsConfig); err != nil { return err } } case "imaps": c, err = client.DialTLS(w.config.addr, tlsConfig) if err != nil { return err } default: return fmt.Errorf("Unknown IMAP scheme %s", w.config.scheme) } if w.config.user != nil { username := w.config.user.Username() password, hasPassword := w.config.user.Password() if !hasPassword { // TODO: ask password } if err := c.Login(username, password); err != nil { return err } } if _, err := c.Select(imap.InboxName, false); err != nil { return err } c.Updates = w.updates w.client = &imapClient{c, idle.NewClient(c)} w.worker.PostMessage(&types.Done{types.RespondTo(msg)}, nil) case *types.ListDirectories: w.handleListDirectories(msg) case *types.OpenDirectory: w.handleOpenDirectory(msg) case *types.FetchDirectoryContents: w.handleFetchDirectoryContents(msg) case *types.FetchMessageHeaders: w.handleFetchMessageHeaders(msg) case *types.FetchMessageBodyPart: w.handleFetchMessageBodyPart(msg) case *types.FetchFullMessages: w.handleFetchFullMessages(msg) case *types.DeleteMessages: w.handleDeleteMessages(msg) default: return errUnsupported } if w.idleStop != nil { w.idleStop = make(chan struct{}) go func() { w.idleDone <- w.client.idle.IdleWithFallback(w.idleStop, 0) }() } return nil } func (w *IMAPWorker) handleImapUpdate(update client.Update) { w.worker.Logger.Printf("(= %T", update) switch update := update.(type) { case *client.MailboxUpdate: status := update.Mailbox if w.selected.Name == status.Name { w.selected = *status } w.worker.PostMessage(&types.DirectoryInfo{ Flags: status.Flags, Name: status.Name, ReadOnly: status.ReadOnly, Exists: int(status.Messages), Recent: int(status.Recent), Unseen: int(status.Unseen), }, nil) } } func (w *IMAPWorker) Run() { for { select { case msg := <-w.worker.Actions: msg = w.worker.ProcessAction(msg) if err := w.handleMessage(msg); err == errUnsupported { w.worker.PostMessage(&types.Unsupported{ Message: types.RespondTo(msg), }, nil) } else if err != nil { w.worker.PostMessage(&types.Error{ Message: types.RespondTo(msg), Error: err, }, nil) } case update := <-w.updates: w.handleImapUpdate(update) } } }