Re: [dev] Lessons Learned from 30 Years of MINIX
* Anselm R Garbe 2016-03-06 15:56 > I agree, though this is not stricly a problem with monolithic approaches > either. > In the end you have to trust the process governor to limit the > privileges of a process (or thread) to its specification/requirement. > If the governor is only one SPOF (monolith) or if there are multiple > forks of such a SPOF (microkernel) makes no big difference in the end. > If the SPOF has a flaw, the flaw is everywhere, regardless the process > model. to my understanding, the governer (or whatever SPOF) is again yet another problem. I agree that it has the same impact in both designs. when you have as less as it gets in kernel space, however, you are exposed to less vulnerabilities inherent to the (governed) code (running user space), which the SPOF is not in control of. cheers --s
Re: [dev] Lessons Learned from 30 Years of MINIX
* Anselm R Garbe 2016-03-06 14:20 > On 6 March 2016 at 13:47, robinwrote: > > Microkernels defenitely resonates with the unix philosophy "do one thing and > > do it well". > > Having everything, except FUSE and such, in the kernel is doing more than > > one thing. > > IMHO the architectural decision for a monolith (==static linkage) > often reduces the management bloat of dynamic loading or similar > "extension" approaches that you end up with in a microkernel > architecture. you have dynamic vs static linkage problematic either way. that's orthogonal. microkernel is for me more about privileges and critical sections. generally speaking, it definitely sucks less to have by design less things that can badly go wrong. --s
Re: [dev] [surf] Why yank to primary instead of clipboard?
* Kamil Cholewiński 2016-02-03 10:05 > On Wed, 03 Feb 2016, robinwrote: > Middle click. > [...] > Yes, this is really confusing and frustrating, I have to reach for the > mouse when otherwise dealing with an almost keyboard-only environment. try Shift-Insert cheers --s
Re: [dev] Fmask [c posix]
meta-meta * Hiltjo Posthuma 2015-12-30 12:21 > What's next? Linking interesting tweets? https://twitter.com/ggreenwald/status/682187313644998656
Mailing lists suck less. (was Re: [dev] Mailing lists sucks.)
mailing lists rock as much as it gets in the field. and as a side note: http://www.wired.com/2015/09/sorry-ello-real-anti-facebook-good-old-email/ cheers --s
Re: [dev] [sbase] cal doesn't highlight current day
Hi * Manu Raster 2015-11-16 22:45 > Another really useful function would be an optional column in the > calendar displaying 'ISO week dates' (DIN ISO 8601). They are quite > common in business parlance but I haven't seen them in any cal command > yet. you might give ncal a try. (it comes from FreeBSD.) ncal prints weeks vertically, rather than horizontally, and with an optional row(s) for the week number. cheers --s
Re: [dev] [surf] Using more memory than firefox
* Ivan Tham 2015-06-02 16:37 Extra: How do I open a link in surf using the keyboard in the current window and in a new window? vanilla surf: when carret browsing is active, you may search for the link's text and press enter (opens in the current window). otherwise: look at the surf.suckless.org/files/. there was some javascript solution to follow links. --s
Re: [dev] [sbase][offtopic] sbase in the wild
* Vampyrah Broadcasting 2015-03-13 21:11 My teacher is pregnant, so our class made a present for her: personally painted rompers. I decided to put cat.c 20150303 from sbase on the romper truly brilliant, Dennis! --s
Re: [dev] st: selecting text affects both primary and clipbaord
* Alex Pilon 2015-03-12 15:17 Also, do most numpad-less laptop keyboards even have Insert all I've ever seen do. or a middle mouse button? some do have middle. all i've ever seen have at least 2 buttons. you can emulate middle button as simultaneous left+right. --s
Re: [dev] st: selecting text affects both primary and clipbaord
* k...@shike2.com 2015-02-20 17:39 I agree here, it shouldn't modiy the CLIPBOARD seletction. Sometime is good to have different things in both selections. If nobady claims about it I will apply your patch. I'd leave it as is, in order not to break scrips which expect to read something from CLIPBOARD. In other programms, you might have the choice to send something to selection or CLIPBOARD by different means. In st, however, you don't. Thus, the current behaviour seems to me more consistent and intuitive. --s
Re: [dev] st: selecting text affects both primary and clipbaord
* Greg Reagle 2015-02-20 20:07 It is true that the only reason I select text in st is to copy it, but I still don't want it clobbering my clipboard. does the current behaviour break some scripts or habits of yours and how?
Re: [dev] keyboard layouts and shorcuts
shortcuts to stay on the same key +1
Re: [dev] [website] [proposal] Add suckless logo and minor style change
* FRIGN 2015-02-03 14:35 The entire suckless-website has a horizontal approach with only one thin dotted line separating the menu from the content. hm. apart from the ss discussion, an appealing variant would be to vertically align suckless.org with the content in the main area. (whether the dotted line continues on the header or not) (thanks for taking your time for this visual thingy) --s
Re: [dev] Found a bug in surf
* Vampyrah Broadcasting 2015-01-21 19:34 I wanted to copy the current URL. Is there any way to do this? Hi, Ctrl+y (mnemonic yank) The manpage describes the default keybindings. cheers --s
Re: [dev] Found a bug in surf
* Vampyrah Broadcasting 2015-01-21 19:50 Ctrl-y does nothing. how do you test? you try to paste, I guess. could be an issue of copy and paste addressing different selections. after yanking (i.e. ctrl-y) you might try xclip -o -selection primary xclip -o -selection secondary --s
Re: [dev] Found a bug in surf
* Vampyrah Broadcasting 2015-01-21 20:35 I tried xclip -o -selection primary and that worked I'm not an expert, but there are these primary and secondary selection, the clipboard and a bunch of other buffers. They differ in how the content is requested and exchanged and who owns the content afaik. . . . in your case the other client doesn't use the primary selection. one option is to teach it to do so. . . . I bet your other client uses the clipboard (as you could do with xclip -o -selection clipboard). this means you have the option to bring surf to put the selected text to clipboard or to both primary and clipboard. Look for the clipboard() function in surf.c and there should be a code snippet like: gtk_clipboard_set_text( gtk_clipboard_get(GDK_SELECTION_PRIMARY), c-linkhover ? c-linkhover : geturi(c), -1); k add this just after it: gtk_clipboard_set_text( gtk_clipboard_get(GDK_SELECTION_CLIPBOARD), c-linkhover ? c-linkhover : geturi(c), -1); This is untested, but has fair chance to work. . . . the third option: copy between primary and clipboard as you like. xclip -o -selection primary | xclip -i -selection clipboard xclip -o -selection clipboard | xclip -i -selection primary cheers --s
Re: [dev] surf vertical and horizontal same-origin policy patch
Hi sounds very interesting. thanks. will review, test and report when I get some spare time…
Re: [dev] [surf] [PATCH] add per-site user styles
* Christoph Lohmann 2015-01-07 21:46 cope with two goals: 1.) Make userstyles.org usable for surf. could you provide some examples of useful userstyles.org styles. All I've seen on userstyles.org is either for sites I don't visit regularly or is about setting a car (fire, skull) as background or both. That seemed to me as targeting people who have several layers of transparency on their desktop in the hope to see the cogs of their hard drives rolling perhaps. To explain where I look at it from, I use 4 styles currently: 0. default, 1. light-on-dark css for SimplyRead (simplyread bound to some key), 2. light-on-dark (night), which basically enforces max-width, font, color and background-color on everything (with small exceptions) 3. dark-on-light (day), which is inverted 2.) 2 and 3 only because simplyread can't always get what I want to read. I can imagine to add 2-3 more styles to better adjust to some sites I regularly visit, but can't see need for more. thanks --s
Re: [dev] Operating system choice
* koneu 2014-11-21 13:22 + microkernel is inferior to monolithic in almost all aspects microkernel is beautiful --s
Re: [dev] golang: time.Tick() and ntp
* hiro 2014-10-09 15:10 then buy a watch. very good point: does one need the time in the status if one has a a watch. the status bar is not selectable, or modifiable, it is not even read-only (you can't save it, colpy it etc.), it is look-at-only. think about this
Re: [dev] golang: time.Tick() and ntp
* Martti Kühne 2014-10-09 15:59 ...sorry, but what about screenshots? sure, it is that simple: xwd | cut -d' ' -f6-11 | ocr | xclip -i ok, I admit, I should have written “for the most part” to be correct. --s
Re: [dev] golang: time.Tick() and ntp
* Markus Teich 2014-10-09 16:01 I have no watch. They always break in the first year of wearing them. get an analogue, manual one, give it some love and it will love you for many years. Also I seldomly would like to copy the time to some place, so look-at-only is pretty good for me. if I can't bring you to wearing a watch, I must agree. --s
Re: [dev] golang: time.Tick() and ntp
* Simon Lieb 2014-10-09 16:10 What about using the ClkStatusText click in dwm’s config.h buttons array to send status bar content to X selections ? what about sending date directly to X selections? :o) I mean, I get your point. Let me try another formulation: apart from looking at it, for other tasks, the presence of time/date in the status bar is either not a solution, or leads to solutions more complex than using `date` directly --s
Re: [dev] [PATCH] Reorder-and-extend-glyph-attributes
* Markus Teich 2014-07-31 12:39 at suckless conf last year 20h mentioned, he originally implemented blinking support to warn him about outlook and gmail users in mutt. epic! then he clearly needs at least two blinking modes: one for each. what about hotmail?
Re: [dev] [PATCH] Reorder-and-extend-glyph-attributes
you're doing great job with st, guys, keep up! didn't want to distract you from the discussion but couldn't resist 20h's briliant irony. --s
Re: [dev] xscreenshot(1) using suckless image format
Is there a reliable way to get the X id of a window in a shell script? This xwininfo could help. that's very helful, thanks a lot, Marcus! cheers --s
Re: [dev] Graphics library that sucks the least?...
* Evan Gates 2014-07-10 19:54 I like this idea with one qualification, when launched from a terminal the new program takes the place of that terminal. Ah, that reminds me, I once thought that tabbed which I otherwise don't find use for might be forced to act as placeholder for all the windows spawned by programs started from the terminal. The shell should be made aware of tabbed in some way, I guess. --s.
Re: [dev] Misbehaving floating window in dwm
Similar issues arise with java windows when the wm name is not set. You might want to set it, e.g. by wmname LG3D http://tools.suckless.org/wmname --s.
Re: [dev] Why do you use tmux/screen?
* hiro 2014-07-01 13:45 I'd rather have the window manager manage all those persistent shell sessions. But tmux is such a beast that most people use is as their window manager in a window manager as well. tmux (or dvtm, or tabbed, or other multiplexer) run locally inside wm make sense for logically (according to one's logic) or technically connected windows. For me, an irc session is such case -- runs in (what would be in dwm) bottom layout in dvtm+dtach: sic in one window, log tail in the other. The gain of persistent sessions as with tmux and dvtm+dtach is obvious but is another story. --s_
Re: [dev] Plain text editor that sucks less - an alternative to VIM?
* Dimitris Zervas 2014-06-30 11:35 I am thinking of trying to implement vim key bindings one of these days (I can't work otherwise). that'd be great. including modes? --s_
Re: [dev] [st] [PATCH] Explicit cast in CEIL macro
* FRIGN 2014-06-24 17:07 Damn, you are right -.-. Back to the drawing board. FWIW CEILmy(x) ((int)(x) + ((x) - (int)(x) 0)) the porblem with CEIL(3.01) remains, though. --s.
Re: [dev] C coded lightweight Linux vector graphics editor
* Džen 2014-06-23 11:14 What about using pgf/tikz? do you mean as backend or as fileformat/syntax? tikz is quite powerful but I wouldn't call it simple. --s_
Re: [dev] C coded lightweight Linux vector graphics editor
* Džen 2014-06-23 13:09 As a back-end and syntax. TikZ actually is quite simple. The syntax is simple for simple things, true. But then you need to through it to pgf and tex and whether they as dependences make much sense… A lot of people find it difficult to use, but practice makes perfect. I have used it several times for different purposes but not so often. Every time I get back to it, I find myself “relearning” things I had already knew last time. I don't always have time for practice a lot -- for these cases I feel a graphical front is useful. To me it seems to be the most sophisticated front-end around for drawing vector graphics. Well, the front end is your text editor. (See downsides of this below.) I guess it's a matter of taste, but I prefer to write some TikZ code instead of using a fancy graphical front-end to manipulate (XML-based) vector graphics. Me too, for some cases: it particularly pays off for well defined basic figures when you know their relative positions in beforehand and you don't need the visual feedback for; and for repeating modular drawings as well. However, for free form curves and prototyping, it becomes an ugly endless mess of adjust-compile-view cycles. cheers --s_
Re: [dev][port] Porting sbase to Java
Thanks for bringing up that very important issue, I was annoyed too. Here is something else that bugs me a lot: PLEASE SPELL DWM HOW IT OUGHT BE DONE: IN CAPITALS. I suggest other suckless projects to do so either. And I would go so far to capitalize the executables, too. Though, that might be too radical. I'd like to hear how people feel about it. Look at that: /usr/bin/ST /usr/bin/SSELP /usr/bin/SURF /usr/bin/DWM Don't they look much more appealing to you. Admit it! It's only habit if you are not immediately euphoric about this idea! Think positive, be creative, innovate, top post! * Raphaël Proust 2014-04-02 12:16 Can you please include the whole message you are replying to in your answers guys? It's very difficult to follow this thread if I have to go back and read the previous messages and it is a very important thread for the suckless group. Making good software is nice but don't forget to make good communications too. By the way, can the person in charge of https://www.facebook.com/pages/dwm/103482239693985 be a bit more active? I keep telling people to try dwm (which needs to be rewritten in ruby) but once they see the facebook page they say it looks dead and bad. On Wed, Apr 2, 2014 at 10:51 AM, FRIGN d...@frign.de wrote: On Wed, 02 Apr 2014 09:11:34 +0200 Christoph Lohmann 2...@r-36.net wrote: This is great news. Now that suckless has reached the future we will see a bright horizont of pleasure and commercial support. Most definitely! However, we need to build up your corporate identity. I suggest we make suckless a registered trademark and sue everyone who adopts our brand without permission. Cheers FRIGN -- FRIGN d...@frign.de --s_
Re: [dev][port] Porting sbase to Java
If the suckless community agrees, we can hire a designer to make each part of the slogan in an appropriate font and make a gif and a flash version of it. Then we can install mailing list software with support for automatically adding multimedia content to messages, before delivering them to the recepient -- and add the flash to every mail. A step to corporate identity 4.0. Alternatively the subscribers should use only MUA which can do this job, but I am sceptical about whether this would work: never leave important decisions to the user! There are way too many irresponsible people out there. * Christoph Lohmann 2014-04-02 15:21 Greetings. On Wed, 02 Apr 2014 14:58:12 +0200 sta...@cs.tu-berlin.de wrote: Think positive, be creative, innovate, top post! Our manifesto has to be changed to include this. Sincerely, Christoph Lohmann --s_
Re: [dev][port] Porting sbase to Java
* Martti Kühne 2014-04-02 14:37 Uh, you are aware that date this thread was from is over now, do you? you're kidding me, right? Sounds to me like April 2 fools joke. --s_
Re: [dev] [proposal] Suckless Tox-Client as a Skype replacement
* hiro 2014-03-24 11:39 and SIP also has it's complexities which is clearly due to S http://youtu.be/yBkbj_S3etY (SCNR!) --s_
Re: [dev] [proposal] Suckless Tox-Client as a Skype replacement
* Nick 2014-03-24 00:01 Indeed I'm using Jitsi at the moment, despite the fact that it's in Java and has an interface that you'd expect for that. But it works, and is quite secure over the wire, and that counts for a great deal. Same here. I managed to force the parties I have video chat on regular basis with to use jitsi. For common use cases it works fine. Behind company firewalls, still there is way to go: I didn't manage to get STUN work, and eventually gave up. Another annoying thing is the interface for which one need to be married to the mouse. Jitsi seems to get the security right -- you don't need tons of quirks to make it work, it's just built in and is default, and one gets reasonable feedback what goes wrong, how trustworthy the connection is, etc. In general, the XMPP + SIP solution makes sense to me. And since XMPP will be around for some time, I guess, it does not require people to get yet another account, i.e. it has the potential to be easily adopted cheers --s_
Re: [dev] [proposal] Suckless Tox-Client as a Skype replacement
Just to make two things clear: I'm not an expert in XMPP and SIP. The video came to my mind as I read the X argument: couldn't resist to post it. First time I saw it I spent quite some time to figure out whether it is fake. Ever since I love it. * FRIGN 2014-03-24 12:56 On Mon, 24 Mar 2014 12:36:36 +0100 Still, XMPP is a centralized protocol-system and that's what makes it unusable for me. While I'd love to see a distributed system which comes with all benefits of decentralisation -- flexibility, dependability, hard to compromise, etc. --, I am not aware of any, so one such needs to be first implemented, then promoted, adopted. So, I'm looking for what I can use now. Discussing these things we really need to put in regard the ordinary user, who would have big troubles setting up XMPP+SIP Jitsi does that right: I have less troubles with it than with what I've tried before, e.g. linphone. --- To establish a new solution in an already saturated environment (i.e. Skype), it has to bring in obvious advantages for the normal user, or else it is deemed to fail. --- Exactly. XMPP+SIP brings the privacy we all want, but most people don't care about privacy, they care about familiarity and comfort. Right now, people more and more care about privacy. I think this is the chance to push things like jitsi (and XMPP, SIP) because they indeed offer this obvious advantage not present in the saturated environment (Skype). I must admit, it became obvious to the masses only recently and not as obvious as I wish, but still something happens. I've converged to the policy to promote things which go in the right direction, although I'm aware they suck in some respect. You can always say “what sucks, sucks, period,” but also you can look at the gradients and admit that some suck less and try to improve. Skype sucks big time, inherently, by the fact it is owned by someone who does not share the public interest. Give up the hope that it can remotely suck less. On the technical side, you don't need extensions for XMPP (libjingle) or separate protocols (SIP) to build up VoIP- or MoIP-connections (being integrated into one protocol), dramatically decreasing the number of possible attack-vectors because tox-core's developers are able to integrate such solutions very well knowing what's used in the first place. Didn't get that. I need some reading about tox before feeling comfortable with technical discussions. cheers --s_
Re: [dev] [proposal] Suckless Tox-Client as a Skype replacement
* FRIGN 2014-03-24 12:31 http://youtu.be/yBkbj_S3etY Looks like your mail went through a meat grinder. why? something wrong with the link? but you got there if you are citing the video description? sorry, don't get it. It was as offtopic as it gets anyway. --s_
Re: [dev] [proposal] Suckless Tox-Client as a Skype replacement
* FRIGN 2014-03-24 14:42 On topic, I would like to know how you would implement a chat client on the terminal. Dmitrij D. Czarkoff is all for a ii-like interface, but I'd be really glad to hear more opinions on that. Here you are: I'm fine with ii We can definitely look at things only with the technical glasses, but other than specialized tools, an instant messaging system stands and falls with the amount of users actually using the system at the end of the day. Yes. And, sadly, to win, you need social engineering of some sort. Either an incredibly charismatic person, or (like fb) fake accounts, fake figures, or probably both. --s_
Re: [dev] [proposal] Suckless Tox-Client as a Skype replacement
* Christoph Lohmann 2014-03-24 14:59 I’m waiting for bitlbee implementing tox. We already have really good IRC clients. +1 then you don't impose a particular interaction scheme on everyone. --s_
Re: [dev] What is bad with Python
* Szabolcs Nagy 2014-03-04 20:57 […] thanks you cared to explain --s.
Re: [dev] [dwm] Why fullscreen at all?
* Michael Hauser 2014-02-23 20:39 Why let applications that have their own fullscreen settings take away control from the window manager? [...] I may be missing something, but for most applications, unfloating them works just fine to return control, in your terms, to the dwm: they get managed while they think they are full screen. (Here at least. I should admit I didn't try with a recent dwm) If these few more keystrokes bug you, probably adding a rule which makes the fullscreen windows managed could do the job for you. --s.
Re: [dev] [dwm] Why fullscreen at all?
* Michael Hauser 2014-02-24 01:13 sta...@cs.tu-berlin.de writes: I may be missing something, but for most applications, unfloating them works just fine to return control, in your terms, to the dwm: they get managed while they think they are full screen. (Here at least. I should admit I didn't try with a recent dwm) I am using dwm-git, version number says 6.1; and no, they do not become floating clients. I tried it with feh, FBRreader and just fired up Firefox and hit F11 to toggle it to fullscreen. After they get fullscreen, they float, I guess. If you now toggle floating (Mod-Shift-Space here) they should get managed, shouldn't they? My binding: { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, If these few more keystrokes bug you, probably adding a rule which makes the fullscreen windows managed could do the job for you. Elaborate, please. How would you do this? In the Rule array in config.h, e.g. (untested): static Rule rules[] = { /* class instancetitle tags mask isfloating monitor */ {fullscrean, NULL, NULL, NULL, False, -1}, [...] You need to figure out what class, title, etc. your windows have. --s.
Re: [dev] [dwm] Why fullscreen at all?
* Michael Hauser 2014-02-24 02:04 No, they do not float. If they did, I would be able to move or resize them. Also they cannot be toggled to float, as long in fullscreen mode. Try it and see. Don't have feh, ffx here; can't find how to go fullscreen in FBReader. I tried with midori, zathura, xpdf. They do fload. I can move them with themouse. I can toggle float. They can get managed. --s.
Re: [dev] XML vs HTML (was: Article about suckless on root.cz)
* Hadrian Węgrzynowski 2014-02-21 22:16 Even if it would work, I think that web shouldn't be pixel-perfect, because we could just use some glorified-PDFs. It's utter nonsense that correct rendering of page is depending on some specific font and specific font size. It's utter nonsense to not restrict paragraph length (at 80 characters or something). It's utter nonsense to assume that everyone is using maximised browser window at 1080p. +1 and it's utter nonsense to force specific view on given content (in case you need this, the presentation IS the content and you probably need ps, pdf or whatever) --s.
Re: [dev] XML vs HTML (was: Article about suckless on root.cz)
* Charlie Kester 2014-02-21 23:54 Or is the trend to create a separate, mobile version of the page, which simply changes the assumption to some smaller screen size? Or are people just ignoring the problem altogether? When they don't do and build a mobile version, it is often more usable than the full one. (Unless they decide to split the content in small chunks to “better” fit one's screen, so that one need to click `next' all the time.) Printable versions are often more enjoyable than the normal ones, too. --s.
Re: [dev] Re: Article about suckless on root.cz
Hi, Late reply, but surfing around reminded me you were about to write about surf. * Martin Kopta 2014-02-17 07:58 Next, the forth article will be about surf, so if you have any suggestion on what to include, please share. Looks like your audience has high technical pawareness. Still, I feel, one can't emphasize enough how insane the web has become. For example, consider the mere fact http is called http. The first /t/ in it is for text. Now it is used to embed and transfer whatnots. Worse: often, where could and should be text, the text is obfuscated in binary containers. That said, suckless web browser is an oxymoron: it sucks either at design or at the amount of content accessible. Surf is a particular trade-off of what is worth caring about and giving the user interface to. Uzbl is another one, w3m another one, dillo, netsurf, etc. Surf is a sane interface to a web and web-viewer that do inevitably suck big time. 2ct --s_
tabs (was [dev] Re: Article about suckless on root.cz)
Hi, This answer by Christoph reminds me of something I wanted to ask: * Christoph Lohmann 2014-02-17 17:47 For surf you should mention the following points: * Integration with tabbed. I like the generality of the approach -- everithing should be embeddable the same way in a container with uniform bindings etc. Sounds great. But I've been entirely missing the point of tabbed ever since. I mean wmii (later dwm, tiling WMs in general) relieved me of thinking in terms of tabs because it managed what was unmanagable before. I've never touched anything with tabs for years now. Can you guys describe some life-changing use cases? (or point me to RTF*) thanks cheers --s_
Re: [dev] portable photoshop-like lite application based on C?
Hi, I've been envisioning a *very simple* GUI for doing - pointing, - selection, - moving a slider, which can be linked genericaly with most netpbm tools (I prefer netpbm to imagemagick). The command window would be simple a terminal. Some tools mostly just don't need gui (e.g. pnmtojpeg). Launching a GUI would link it to a specific tool (say `pnmcrop', which needs selection; or `ppmdither' with slider ) and file(s). Besides the obvious need to interact with the image in order to do selection (of points or areas), for me a GUI can accelerate the process of doing a transformation and seeing result, so one can try out different parameters/tools. Clearly, this is far behind GIMP, but I don't need more. Most suckless interaction experience I've got is from macos' preview -- and I do ocasionally borrow my gf's box for cropping and simple color adjustments. Everithing else I've encountered so far is way too heavy on resources and dependencies or crashes every minute. I haven't written anything like that, obviously. But is my wishlist and TODO for quite some time. Probably I could rip off sth of your suckless GIMP replacement for my needs. I guess sth like this is how I imagine the workflow: $ jpegtopnm bla.jpg | gui pnmcrop | gui ppmbrighten \ | pamscale -xysize 512 512 \ | pnmtojpeg bla-crop-bright-small.jpeg cheers --s.
Re: Tags as tags (Was: [dev] Desktop warping for DWM?)
* FRIGN 2013-11-17 13:51 However, I already had gotten used to the workflow in a tiling manager. Having to use the mouse to scale the windows and rely on those few workspaces just showed me how much better it is to be able to assign tags to specific windows. This flexibility is just impossible in normal wm's, just for the reason, because tiling isn't the way to go for beginners. huh. What's got tiling to do with tagging? It's not about noobs, beginners, experts whatsoever. It's about willingness to try out different workflows and paradigms and see what is efficient for you. And for each user the mileage varies. That said, a while ago I read the post with the key binding suggestions, gave them a try, and have lived with them happily ever since. 2ct --s.
Re: [dev] tmux export buffer to pastebin
* Kai Hendry 2013-07-13 07:50 Since hopefully most of you are running http://st.suckless.org/ and tmux, perhaps you'll find this bind interesting: bind-key p capture-pane -S -32768 \; save-buffer /tmp/tmux-buffer \; run cat /tmp/tmux-buffer | curl -F 'sprunge=-' http://sprunge.us | tmux load-buffer -; tmux show-buffer not sure I find it useful as a binding in tmux -- never had this use case. But I have already piped some stuff to sprunge from a file since you posted it. It was very helpful. So, thank you for sharing. --s_
Re: [dev] lynx?
* Thorsten Glaser 2013-05-28 20:25 Is there anyone on earth having figured out how to *use* that, as in navigate? with sth like this in your ~/.w3m/keymap it feels for me like surf (to be precise, surf feels like w3m). keymap C-u PREV_PAGE keymap C-d NEXT_PAGE keymap SPC NEXT_PAGE keymap C-e DOWN keymap C-y UP keymap ^LINE_BEGIN keymap $LINE_END keymap DOWN MOVE_DOWN keymap jMOVE_DOWN keymap kMOVE_UP keymap lMOVE_RIGHT keymap hMOVE_LEFT1 keymap Z CENTER_H keymap z CENTER_V keymap ESC-g GOTO_LINE keymap gg BEGIN keymap G END keymap w NEXT_WORD keymap b PREV_WORD keymap [ LINK_BEGIN keymap ] LINK_END keymap TAB NEXT_LINK keymap f MOVE_LIST_MENU keymap C-o UNDO keymap CTRL-i REDO keymap C-m GOTO_LINK keymap C-SHIFT-H BACK keymap L NEXT keymap H PREV keymap s SELECT_MENU keymap v VIEW --s.
Re: [dev] lynx?
* markus schnalke 2013-05-28 13:07 these days, lynx was often mentioned when a text browser was meant. Is there really someone (apart from mirabilos) who uses lynx? Don't you rather use w3m? me. rarely intereactively, though. More with -dump. I do query dictionaries or similar which happen to have stable structure over time and one can do things like: $ lynx -dump foo.bla | sed -n /^Your query/,/^Similar words/ p Mostly I have this wrapped in a script or shell alias and often invoke it from within vim. For interactive browsing in the terminal, I indeed use w3m more often -- it renders often better. But, well not always, especially when menu and content are not sequential. compare $ w3m -dump -cols 60 \ http://odict.leo.org/ende?lang=desearch=suck; \ | sed -n /[0-9]\s*Treffer/,/Suchfilter einstellen close/ p $ lynx -dump -nonumbers -nolist -nolog http://odict.leo.org/ende?lang=desearch=suck; \ | sed -n /[0-9]\s*Treffer/,/Suchfilter einstellen close/ p $ lynx -dump -nonumbers -nolist -nolog http://odict.leo.org/ende?lang=desearch=suck; \ | sed -n /[0-9]\s*Treffer/,/Suchfilter einstellen close/ { s/\[_\]\s*//; p} In the end, it's a matter of taste, I guess. --s.
Re: [dev][surf]Some questions about surf.
* Hugues Moretto-Viry 2013-04-14 13:42 - Is there a way to define a default font as we do with dwm or tabbed? After looking the sources, I guess we can't for now. No. You probably are aware that you can put sth like this in .surf/style.css, but for the sake of completeness: * {font-family:Linux Libertine O;} --s.
Re: [dev] [surf] introduce .gitignore
Hi, * Alexander Huemer 2013-03-15 09:55 On Fri, Mar 15, 2013 at 04:16:01AM +0800, Chris Down wrote: Not adding file to the index has nothing to do with git knowing what to do. In a more complex directory structure like the following you want to be able to do 'git add dir1' and then have .o files not in the index. dir1 file1.c file1.o file2.c file2.o file3.c file3.o Your point is good, in general, and I use .gitignore for some of my projects, where I indeed have similar directory structure. But do you expect surf to get that far that you need to add subdirectories and multiple obj files (and probably latex auxilary files of the pdf documentation?). I don't. And thus I consider .gitignore bloat. cheers --s.
Re: [dev][surf] [PATCH] Fixed keys handling for multilayout environments.
* Alexander Sedov 2013-03-15 16:13 There is a bug in GTK+ that does not allow capturing shortcuts using letter keys on layouts other than us. The bug is there for ages and there is probably no hope that it will get fixed. This patch switches shortcut handling method to GtkAccelGroup, which handles this case correctly. Enjoy! Does this mean that with cyrillic layout, mappings defined as GDK_r would work? If this is the case -- thank youvery much for hounding down and fixing! This has annoyed me for a long time. This will cause me to put some work in updating my ancient heavily patched surf in the next days. cheers --s_
Re: [dev] web browsers
* hiro 2013-03-10 14:26 default? is there a list of features not supported so I can check if my issues are not covered? no, of course. this is an ill posed problem. it would take infinite time and space to write or read. but feel free to start one. It might turn out to be fun to see what people consider to be features. --s.
Re: [dev] web browsers
* Nick 2013-03-10 16:56 triggered, no popup blockers seem to work on them (I'd guess adblock disables the appropriate .js, though privoxy doesn't out of the box.) same frustration here. --s.
Re: [dev] Makefile/markdown based static site generator
* Sam Watkins 2013-02-21 06:21 or other tools with simpler regexps: html_split | grep '^!--' | sed 's/!-- *//; s/ *--$//' Yeah, I find this more readable. I'd even get rid of grep, sed is perfect for the job sed -n '/\s*^!--/{ s/!-- *//; s/ *--$//; p; q; }' --s.
Re: [dev] Makefile/markdown based static site generator
* sta...@cs.tu-berlin.de 2013-02-21 10:16 sed -n '/\s*^!--/{ shit. of course: sed -n '/^\s*!--/{ s/!-- *//; s/ *--$//; p; q; }' --s.
Re: [dev][surf] disable scrollbars patch
* Carlos Torres 2013-02-21 16:34 Attached you'll find a patch that adds the -b flag to disable scroll_b_ars, they can also be disabled with config.h Great. Currently I'm using a gtk hack to make bars less annoying and got accustomed to having a non-intrusive indication about the pane size and where I am, rather than not having one at all. $ cat .gtkrc-2.0 style bla { GtkRange::slider-width = 3 bg[NORMAL] = #464646 fg[NORMAL] = #99 } class GtkWidget style bla --s.
Re: [dev] surf 0.6 issues
* Jens Nyberg 2013-02-17 16:14 2013/2/17 Donald Allen donaldcal...@gmail.com: 1. Attempting to play youtube videos frequently results in youtube reporting that This video is currently unavailable. after briefly Remove your cookie file. ~/.surf/cookies.txt probably. That will solve that problem. Man, works indeed! Thanks. What is the reason? (I must admit, I considered this a feature to keep me on topic: Big Surf is watching you.) --s.
Re: [dev] [surf] patch for style toggling
* Christoph Lohmann 2013-02-16 16:30 The toggling has a relevance, but your »code.txt« should be a patch on yeah, sorry for not sending proper patch, my surf is ancient. I have to update it next days. But still, I think it doesn't hurt to have the function as I do. Then, you can have a trivial toggle function to toggle, but you can bind it directly for setting more styles. Anyway, user style vs. page's own style switching is a must. Happy it is in tip. cheers --s.
Re: [dev] [surf] patch for style toggling
* Nick 2013-02-16 15:12 +static void +togglestyle(Client *c, const Arg *arg) { + WebKitWebSettings *settings; + char *uri; + + settings = webkit_web_view_get_settings(c-view); + g_object_get(G_OBJECT(settings), user-stylesheet-uri, uri, NULL); + uri = uri[0] ? g_strdup() : g_strconcat(file://, stylefile, NULL); + g_object_set(G_OBJECT(settings), user-stylesheet-uri, uri, NULL); + + update(c); +} I use this all the time, slightly differently though. I have text styles for day and night since the light conditions make difference for convinient reading. You seem to ignore the Arg function argument, which I use for saying which stylw. In combination with a modified simplyread() Javascript heurisic someone posted here a while ago, browsing is ok. Attached the relevant code. cheers --s. {MODKEY, GDK_t, setstyle, { .v = /home/stanio/.surf/text_style.css } }, {MODKEY|GDK_SHIFT_MASK,GDK_t, setstyle, { .v = /home/stanio/.surf/text_style_day.css } }, {MODKEY, GDK_w, setstyle, { .v = (const char *)NULL} }, setstyle(Client *c, const Arg *arg){ WebKitWebSettings *settings; char *uri, *customstylefile; customstylefile = arg-v==NULL?stylefile:(char *)arg-v; settings = webkit_web_view_get_settings(c-view); uri = g_strconcat(file://, customstylefile, NULL); g_object_set(G_OBJECT(settings), user-stylesheet-uri, uri, NULL); }
Re: [dev] Find window with dmenu
* markus schnalke 2013-02-12 16:39 The following is NOT portable: sed -E 's/\s\+// ; /(vim|surf):/d' http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html If you want sed with Extended Regular Expressions, take awk. :-) For the particular case of emulating these multiple grep pipes sed should work fine. Something along the lines of if line doesn't match a, then if line doesn't match b, then if line doesn't match c then print line: sed -n /a/ ! { /b/ ! { /c/ ! { p }}} --s_
Re: [dev] [dwmstatus] Mail counter
* s...@alternametz.org 2012-12-21 19:20 To me the less in suckless was nearer to the german suffix los than to german weniger but it's maybe a bit idealistic. It is. “suckless.org software that sucks less” http://suckless.org/philosophy best --s_
Re: [dev] I'm back
* Sam Watkins [2012-11-22 04:58]: On Wed, Nov 21, 2012 at 12:45:35PM +0100, sta...@cs.tu-berlin.de wrote: - borders are useful means yes to borders configuration border-width: 0 means no borders. problem solved how??? Either me or you misunderstood the other one. cheers --s_
Re: [dev] I'm back
- borders are useful - the information in the bar is quite useful, too. Don't mind if it is provided separately. But isn't it too much ofa hassle to interface it with dwm then? - never used mouse in the bar, and don't plan to. cheers --s_
Re: [dev] [surf] Disable javascript
* s...@alternametz.org [2012-11-15 12:56]: As a side note, I wonder how difficult would it be to create a generic toggle function for surf which could be called with any WebKitWebSettings boolean parameter in config.h such as auto-load-images, enable-scripts and so on ... look for 20120602113939.GA26438 in your mailbox or http://permalink.gmane.org/gmane.comp.misc.suckless/9458 --s_
Re: [dev] [surf] Disable javascript
* sta...@cs.tu-berlin.de [2012-11-15 14:34]: * s...@alternametz.org [2012-11-15 12:56]: As a side note, I wonder how difficult would it be to create a generic toggle function for surf which could be called with look for 20120602113939.GA26438 in your mailbox or http://permalink.gmane.org/gmane.comp.misc.suckless/9458 If you use that you might be interested in the following to keep track of the status. http://permalink.gmane.org/gmane.comp.misc.suckless/9461 --s_
Re: [dev] [surf] Disable javascript
* Nick suckless-...@njw.me.uk [2012-11-15 15:47]: Insert mode? Since when did surf become modal? Why is this needed (except for people who like to pretend they're using vim)? I agree, insert mode is quite special and maybe is worth having it as a patch rather than in mainline surf. It makes character handling less readable. If you want it, you will know that and will know how to get it working. cheers --s_
Re: [dev] [st] toggle font
Hi, * Stephen Paul Weber singpol...@singpolyma.net [2012-10-11 15:56]: Somebody claiming to be sta...@cs.tu-berlin.de wrote: This patch (against tip) introduces an array of font names in the config instead FONT and allows to cycle through them with Ctrl-PgUp at runtime. I also need multiple fonts, but I find keeping several builds of st around works fine for me. I have 5 of them. Works fine: they live in separate dirs with only Makefile an config.h not symlinked to the master-st dir. Some features are fun to implement, but then you use them a day or two and forget. But since some days ago, every day I like this font switching on the fly more and more. And it comes effectively at no cost -- neither conceptual, nor syntactical. cheers --s_
[dev] [st] toggle font
Hi, This patch (against tip) introduces an array of font names in the config instead FONT and allows to cycle through them with Ctrl-PgUp at runtime. I missed this feature a lot when light conditions and distance to display change, often so with a notebook, even more when different displays plugged. Of course, tmux helps -- kill, start new st, attach to the right session --, but I like this approach more. Someone might find it useful. cheers, --s_ diff -r ba208156a8af config.def.h --- a/config.def.h Tue Oct 09 19:40:37 2012 +0200 +++ b/config.def.h Tue Oct 09 22:33:55 2012 +0200 @@ -1,5 +1,9 @@ -#define FONT Liberation Mono:pixelsize=12:antialias=false:autohint=false +static char* fonts[] = { + Liberation Mono:pixelsize=12:antialias=false:autohint=false, + Liberation Mono:pixelsize=14:antialias=false:autohint=false, + Liberation Mono:pixelsize=24:antialias=false:autohint=false +}; /* Space in pixels around the terminal buffer */ #define BORDER 2 diff -r ba208156a8af st.c --- a/st.c Tue Oct 09 19:40:37 2012 +0200 +++ b/st.c Tue Oct 09 22:33:55 2012 +0200 @@ -73,6 +73,7 @@ #define Y2ROW(y) (((y) - BORDER)/xw.ch) #define VT102ID \033[?6c +#define FONT fonts[currfont] enum glyph_attribute { ATTR_NULL = 0, @@ -335,6 +336,8 @@ static void selpaste(void); static void selscroll(int, int); +static void togglefont(void); + static int utf8decode(char *, long *); static int utf8encode(long *, char *); static int utf8size(char *); @@ -378,6 +381,7 @@ static char *opt_embed = NULL; static char *opt_class = NULL; static char *opt_font = NULL; +static unsigned int currfont = 0; void * xmalloc(size_t len) { @@ -2566,6 +2570,20 @@ } void +togglefont(){ + int col, row; + + currfont = (++currfont) % LEN(fonts); + initfonts(FONT); + col = (xw.w - 2*BORDER) / xw.cw; + row = (xw.h - 2*BORDER) / xw.ch; + tresize(col, row); + xresize(col, row); + ttyresize(); + draw(); +} + +void kpress(XEvent *ev) { XKeyEvent *e = ev-xkey; KeySym ksym; @@ -2574,11 +2592,13 @@ int len; int meta; int shift; + int ctrl; Status status; if (IS_SET(MODE_KBDLOCK)) return; + ctrl = e-state ControlMask; meta = e-state Mod1Mask; shift = e-state ShiftMask; len = XmbLookupString(xw.xic, e, buf, sizeof(buf), ksym, status); @@ -2589,6 +2609,11 @@ /* 2. hardcoded (overrides X lookup) */ } else { switch(ksym) { + case XK_Prior: + case XK_Next: + if(ctrl) + togglefont(); + break; case XK_Up: case XK_Down: case XK_Left:
Re: [dev] [st] Removing timeouts in main loop
* Roberto E. Vargas Caballero k...@shike2.com [2012-09-16 09:48]: The main loop waits until there is some data to read in file descriptors of the X server or the pseudo tty. But it uses a timeout in select(), which causes that st awake each 20 ms, even it doesn't have something to do. This patch removes this problem removing the timeout, which is not needed. I think this was supposed to make st faster, since it doesn't need to draw things you'll never be able to read, i.e. anything faster than 20ms. --s_
Re: [dev] [surf] eval() not needed?
{ CTRL, GDK_c, eval, STRING(removeHints()) eval expects arg-v to be char**, so your STRING resolves to sth like { .v = (const char *[]){simplyread(false, false) } } right? cheers --s_
Re: [dev] [surf] eval() not needed?
* Troels Henriksen at...@sigkill.dk [2012-07-06 09:31]: eval() was never needed per se. I put it in because you need it if you want robust keybindings to functions defined in script.js, and you need Ok. Didn't know. And still don't really get it... Can you give a hint? search of 'eval' within surf.suckless.org yields the Link hints page. The js code invokes eval. Is this the same eval? some time ago someone shared some js code to extract the important textual part of a page based on counting number of paragraphs, called simplyread. I use this quite often but to activate it I neeed to go into insert mode to let surf not eat the keys, then press the key which the script bound itself to (FWIW F3). I found myself binding some xdotool magic to a regular surf keybinding as in xdotool key -window $0 i key -window $0 F3 key -window $0 Esc which is sommewhat ugly. Is eval somehow related to that? --s_
Re: [dev] [surf] eval() not needed?
* Troels Henriksen at...@sigkill.dk [2012-07-06 12:06]: sta...@cs.tu-berlin.de writes: * Troels Henriksen at...@sigkill.dk [2012-07-06 09:31]: I'm not sure what you mean by insert mode. the insert mode patch would let you have 2 modes of ui: - in normal mode, keystrokes are interpreted as if you were holding MODKEY pressed, even if you don't, i.e. are not passed through, and you can't type in to text fields, for instance, but you can use j,k,l,h,p without MODKEY; - in insert mode, your keystrokes are passed through unless you explicitly hold MODKEY, i.e. for navigation you need to hold MODKEY before typing hjkl. I use eval() for Conkeror-style numbered link navigation. The actual logic is defined in Javascript in my script.js, and I have the following bindings in my config.h: { CTRL, GDK_f, eval, STRING(hintMode()) }, { CTRL|SHIFT, GDK_f, eval, STRING(hintMode(true)) }, { CTRL, GDK_c, eval, STRING(removeHints()) }, That's great, thank you. --s_
[dev] [surf] eval() not needed?
Seems like eval() is not needed for some time now. The trivial patch against tip to remove it is attached. --s_ diff -r e59e78e072e1 surf.c --- a/surf.cFri Jul 06 00:59:17 2012 +0200 +++ b/surf.cFri Jul 06 01:04:04 2012 +0200 @@ -827,12 +827,6 @@ } void -eval(Client *c, const Arg *arg) { - WebKitWebFrame *frame = webkit_web_view_get_main_frame(c-view); - evalscript(webkit_web_frame_get_global_context(frame), ((char **)arg-v)[0], ); -} - -void stop(Client *c, const Arg *arg) { webkit_web_view_stop_loading(c-view); }
Re: [dev] dwm tip changes
* Arian Kuschki arian.kusc...@googlemail.com [2012-06-23 23:52]: half/half editor/pdf file), it makes sense to put an app into full screen and then make it smaller again. +1 fullscreen often just happens to be the window mode which provides the best view. It is helpful to be able to tile the window in this mode just as in any other. fullscreen windows *are* floating, aren't they? so the question is whether you allow to tile/monocle them, right? --s_
Re: [dev] dwm tip changes
* Anselm R Garbe garb...@gmail.com [2012-06-24 11:06]: The problem with floating is that it toggles the client state. If initially treated as floating window, it will toggle to the tiled/monocle/.. layout. If then toggled back to floating, it won't be resized to fullscreen mode. This sucks more imho. I see your point. Thanks for clarifying. From your answer to Arian I see you mean mouse resize only. This doesn't bother me at all. I just want to be able to tile/monocle fullscreen windows, ant that seems to stay as is. thanks --s_
Re: [dev] [surf] crash when leaving a page containing java
* pancake panc...@youterm.com [2012-06-15 18:07]: it is possible to disable all plugins (flash/java..) in surf? That't how I browse around most of the time. I posted a toggle patch a week or two ago; search for message id 20120602113939.GA26438 or look here http://lists.suckless.org/dev/1206/11716.html the relevant webkit settings are called enable-plugins and enable-scripts g_object_set(G_OBJECT(settings), name, false, NULL); --s_
[dev] [surf] generic toggle patch
Hi, Here is a simple patch to toggle binary webkit features by name. --s_ diff -r 51a6d05c2c84 config.def.h --- a/config.def.h Mon Mar 26 09:33:42 2012 +0200 +++ b/config.def.h Thu May 31 09:31:38 2012 +0200 @@ -42,4 +42,8 @@ { MODKEY, GDK_f, spawn, SETPROP(_SURF_FIND, _SURF_FIND) }, { MODKEY, GDK_n, find, { .b = TRUE } }, { MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } }, +{ MODKEY, GDK_v, toggle, { .v = enable-plugins } }, +{ MODKEY|GDK_SHIFT_MASK,GDK_i, toggle, { .v = auto-load-images } }, +{ MODKEY, GDK_c, toggle, { .v = enable-caret-browsing } }, +{ MODKEY|GDK_SHIFT_MASK,GDK_s, toggle, { .v = enable-scripts } }, }; diff -r 51a6d05c2c84 surf.c --- a/surf.cMon Mar 26 09:33:42 2012 +0200 +++ b/surf.cThu May 31 09:31:38 2012 +0200 @@ -106,6 +106,7 @@ static void eval(Client *c, const Arg *arg); static void stop(Client *c, const Arg *arg); static void titlechange(WebKitWebView *v, WebKitWebFrame* frame, const char* title, Client *c); +static void toggle(Client *c, const Arg *arg); static void update(Client *c); static void updatewinid(Client *c); static void usage(void); @@ -796,6 +797,20 @@ } void +toggle(Client *c, const Arg *arg) { + WebKitWebSettings *settings; + char *name = (char *)arg-v; + gboolean value; + Arg a = { .b = FALSE }; + + settings = webkit_web_view_get_settings(c-view); + g_object_get(G_OBJECT(settings), name, value, NULL); + g_object_set(G_OBJECT(settings), name, !value, NULL); + + reload(c,a); +} + +void update(Client *c) { char *t;
[dev] [surf] alternate style patch
I use this as a simple heuristic to make some broken web pages more readable. It's proven very useful for reading news, docs, all sorts of long text, where the content is more important than what the author assumes is the best appearance. The patch just alternates the default and text_style css. For longer readings I prefer, as evident in text_style.css, reading light on dark with modest contrast --s_ diff -r 51a6d05c2c84 config.def.h --- a/config.def.h Mon Mar 26 09:33:42 2012 +0200 +++ b/config.def.h Thu May 31 19:18:35 2012 +0200 @@ -42,4 +42,6 @@ { MODKEY, GDK_f, spawn, SETPROP(_SURF_FIND, _SURF_FIND) }, { MODKEY, GDK_n, find, { .b = TRUE } }, { MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } }, +{ MODKEY, GDK_t, setstyle, { .v = .surf/text_style.css } }, +{ MODKEY|GDK_SHIFT_MASK,GDK_t, setstyle, { .v = (const char *)NULL} }, }; diff -r 51a6d05c2c84 surf.c --- a/surf.cMon Mar 26 09:33:42 2012 +0200 +++ b/surf.cThu May 31 19:18:35 2012 +0200 @@ -99,6 +99,7 @@ static void scroll(Client *c, const Arg *arg); static void setatom(Client *c, int a, const char *v); static void setcookie(SoupCookie *c); +static void setstyle(Client *c, const Arg *v); static void setup(void); static void sigchld(int unused); static void source(Client *c, const Arg *arg); @@ -702,6 +703,17 @@ } void +setstyle(Client *c, const Arg *arg){ + WebKitWebSettings *settings; + char *uri, *customstylefile; + + customstylefile = arg-v==NULL?stylefile:(char *)arg-v; + settings = webkit_web_view_get_settings(c-view); + uri = g_strconcat(file://, customstylefile, NULL); + g_object_set(G_OBJECT(settings), user-stylesheet-uri, uri, NULL); +} + +void setup(void) { char *proxy; char *new_proxy; body{ width:98% !important; } /* .navigation, .nav { display:none !important; } #navigation, #nav { display:none !important; } *8 */ * { max-width:100% !important; background-color:#3f3f3f !important; text:#acac8c !important; color:#acac8c !important; /*font-weight:bold !important;*/ /*font-family:Ubuntu, Calibri, Helvetica, sans-serif !important;*/ font-family:serif !important; text-align:justify; } code { font-family:monospace !important; } h1,h2,h3,h4 { text:#efefdf !important; color:#efefdf !important; } a { text:#bfbfdc !important; color:#bfbfdc !important; text-decoration:none !important; /*border-bottom:dashed 1px !important; */ } a:hover { text:#dcdcff !important; color:#dccdff !important; text-decoration:none !important; } /* fnally! color of highlighted search matches*/ *::selection { background:#56 !important; color:#343434 !important; }
[dev] [surf] insert mode patch
Most of this code is certainly not by me, but I couldn't find such patch, and I tought it could be useful to have around. Surf starts in 'normal' mode, where all your keybindings have effect with and without pressing the modkey, e.g. both 'j' and '^j' scroll down a line. Pressing 'i' in 'normal mode' brings you to 'insert mode', where your keybindings take effect only when modkey is pressed. Without modkey, keypress come through and are being processed by the engine (by the website), so you can write to text elements or control an web application. 'Esc' brings you again to 'normal mode'. --s_ diff -r 51a6d05c2c84 config.def.h --- a/config.def.h Mon Mar 26 09:33:42 2012 +0200 +++ b/config.def.h Thu May 31 19:39:00 2012 +0200 @@ -42,4 +42,5 @@ { MODKEY, GDK_f, spawn, SETPROP(_SURF_FIND, _SURF_FIND) }, { MODKEY, GDK_n, find, { .b = TRUE } }, { MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } }, +{ 0,GDK_i, insert, { 0 } }, }; diff -r 51a6d05c2c84 surf.c --- a/surf.cMon Mar 26 09:33:42 2012 +0200 +++ b/surf.cThu May 31 19:39:00 2012 +0200 @@ -63,7 +63,9 @@ static char winid[64]; static char *progname; static gboolean loadimage = 1, plugin = 1, script = 1; +static gboolean insert_mode = FALSE; +static void insert(Client *c, const Arg *arg); static char *buildpath(const char *path); static void cleanup(void); static void clipboard(Client *c, const Arg *arg); @@ -353,21 +355,49 @@ return FALSE; } +void +insert(Client *c, const Arg *arg) { + insert_mode = TRUE; + update(clients); +} + gboolean keypress(GtkWidget* w, GdkEventKey *ev, Client *c) { guint i; gboolean processed = FALSE; + guint state; updatewinid(c); + + /* turn off insert mode */ + if (insert_mode (ev-keyval == GDK_Escape)) { + insert_mode = FALSE; + update(c); + return TRUE; + } + + if (insert_mode ( ((ev-state MODKEY) != MODKEY) || !MODKEY ) ) { + return FALSE; + } + + if (ev-keyval == GDK_Escape) { + webkit_web_view_set_highlight_text_matches(c-view, FALSE); + return TRUE; + } + for(i = 0; i LENGTH(keys); i++) { - if(gdk_keyval_to_lower(ev-keyval) == keys[i].keyval -(ev-state keys[i].mod) == keys[i].mod -keys[i].func) { - keys[i].func(c, (keys[i].arg)); - processed = TRUE; - } + if(!insert_mode (MODKEY keys[i].mod) ) + state = ev-state | MODKEY; + else + state = ev-state; + + if(gdk_keyval_to_lower(ev-keyval) == keys[i].keyval keys[i].func) + if(state == keys[i].mod){ + keys[i].func(c, (keys[i].arg)); + processed = TRUE; + } } - return processed; + return processed; } void
[dev] [surf] zoom text patch
This patch enables zooming text only, i.e. increase/decrease font size and preserve other elements' sizes. --s_ diff -r 51a6d05c2c84 config.def.h --- a/config.def.h Mon Mar 26 09:33:42 2012 +0200 +++ b/config.def.h Thu May 31 19:30:14 2012 +0200 @@ -32,6 +32,9 @@ { MODKEY|GDK_SHIFT_MASK,GDK_j, zoom, { .i = -1 } }, { MODKEY|GDK_SHIFT_MASK,GDK_k, zoom, { .i = +1 } }, { MODKEY|GDK_SHIFT_MASK,GDK_i, zoom, { .i = 0 } }, +{ MODKEY, GDK_underscore, zoomtext, { .i = -1 } }, +{ MODKEY, GDK_plus,zoomtext, { .i = +1 } }, +{ MODKEY, GDK_parenright, zoomtext, { .i = 0 } }, { MODKEY, GDK_l, navigate, { .i = +1 } }, { MODKEY, GDK_h, navigate, { .i = -1 } }, { MODKEY, GDK_j, scroll, { .i = +1 } }, diff -r 51a6d05c2c84 surf.c --- a/surf.cMon Mar 26 09:33:42 2012 +0200 +++ b/surf.cThu May 31 19:30:14 2012 +0200 @@ -111,6 +111,7 @@ static void usage(void); static void windowobjectcleared(GtkWidget *w, WebKitWebFrame *frame, JSContextRef js, JSObjectRef win, Client *c); static void zoom(Client *c, const Arg *arg); +static void zoomtext(Client *c, const Arg *arg); /* configuration, allows nested code to access above variables */ #include config.h @@ -828,6 +829,19 @@ } void +zoomtext(Client *c, const Arg *arg) { + WebKitWebSettings *settings; + gint fontsize; + + settings = webkit_web_view_get_settings(c-view); + g_object_get(G_OBJECT(settings), default-font-size, fontsize, NULL); + //default size according to webkit docs is 12; + //FIXME: figure out how to get setting defaults + fontsize = (arg-i == 0 ? 12 : fontsize + arg-i); + g_object_set(G_OBJECT(settings), default-font-size, fontsize, NULL); +} + +void zoom(Client *c, const Arg *arg) { c-zoomed = TRUE; if(arg-i 0) /* zoom out */
Re: [dev] [surf] status area patch
* Kurt Van Dijck kurt.van.di...@eia.be [2012-06-02 19:48]: Have you tought on indicating the normal/insert mode of your earlier patch? Kurt yes. but then the patch depends on the insert mode patch. I would avoid dependencies where not needed. It is straightforward to add, though. togglestat[5] = '\0'; togglestat[4] = insert_mode?'+':'-'; --s_
Re: [dev] [surf]keybind to scroll left/right
* Thuban thu...@singularity.fr [2012-05-24 07:53]: I was wondering if there is any way to have a keybind to scroll left or right, just like you can scroll up and down with C-k and C-j? sure. Here an example: - config.h - { MODKEY, GDK_j, scroll_v, { .i = +1 } }, { MODKEY, GDK_k, scroll_v, { .i = -1 } }, { MODKEY, GDK_g, scroll_v, { .i = -2 } }, { MODKEY|GDK_SHIFT_MASK,GDK_g, scroll_v, { .i = +2 } }, { MODKEY, GDK_b, scroll_v, { .i = -1 } }, { MODKEY, GDK_space, scroll_v, { .i = +1 } }, { MODKEY, GDK_l, scroll_h, { .i = +1 } }, { MODKEY, GDK_h, scroll_h, { .i = -1 } }, - - -- surf.c -- void scroll_h(Client *c, const Arg *arg) { scroll(gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(c-scroll)), arg); } void scroll_v(Client *c, const Arg *arg) { scroll(gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(c-scroll)), arg); } void scroll(GtkAdjustment *a, const Arg *arg) { gdouble v; v = gtk_adjustment_get_value(a); switch (arg-i){ case +1: case -1: v += gtk_adjustment_get_page_increment(a) * (arg-i / 1); break; case +2: case -2: default: v += gtk_adjustment_get_step_increment(a) * arg-i; } v = MAX(v, 0.0); v = MIN(v, gtk_adjustment_get_upper(a) - gtk_adjustment_get_page_size(a)); gtk_adjustment_set_value(a, v); } - - --s_
[dev] recommend suckless mail server
Hi, Can anyone suggest a suckless mail server? We need encrypted IMAP and SMTP. Or a suckless tool chain which achieves the above (e.g. instead SSL aware IMAP server, rsync a maildir from server machine to local machine) Thanks for any suggestions where to look into or if you share your experience.. cheers --s_
Re: [dev] regarding surf and cookie handling
userbase of 5 ;) the age of understatement... -- s.
Re: mouse tag switching with alternative keyboard layout (was [dev] Re: skype gui interface)
What versions of dwm are you using? Patched dwm based on changeset 64eb02a74f2b (Tip from end of September 2010). Wouldn't bother to apply the fix anyway, but thanks for replying -- I couldn't remember discussing such bug on the list. -- s.
Re: [dev] [dwm] Fullscreen programs in tile mode
In my setup and experience fullscreen brings programs to floating, e.g. xpdf, xzgv, flash player. If you then toggle floating for that window (Mod-Shift-Space), they get tiled. Isn't that what you want? * Manolo Martínez man...@austrohungaro.com [2011-11-23 10:11]: The question is, is there any way to convince a program to deploy its fullscreen mode inside a window which I can then tile or monocle as I see fit? -- stanio_
Re: [dev] Suckless Desktop Environment
* Christoph Lohmann 2...@r-36.net [2011-11-07 20:23]: terminology to make suckless more usable for the press. [...] Instead a whole environment could be promoted, which is usable across platforms. Why? Promote to whom? What is your final goal: to educate the masses in order to get better web, better software, better user habits, sth. else? Do you believe it is worth trying? This will lower the user selection we are used to, but it gives us an identity, that can be referred to and used for spreading propaganda / the idea. This suggests, there exists some user selection by making things obscure, hard to find, by hiding something. I rather see the conceptual clarity and cleanness of the suckless concepts to attract people. cheers. -- stanio_
Re: [dev] [surf] downloads
* Nick suckless-...@njw.me.uk [2011-11-04 19:30]: I'll look myself, but if anyone else finds one, please let us know. I've rarely had troubles downloading anything, maybe beacause I rarely do so from crappy places; Untl recently when I repeatedly got this on arxiv.org trying to download a pdf (dillo and others handle it correctly): --2011-11-05 10:48:47-- http://arxiv.org/pdf/nlin/0408040 Resolving arxiv.org... 128.84.158.119 Connecting to arxiv.org|128.84.158.119|:80... connected. HTTP request sent, awaiting response... 403 Forbidden 2011-11-05 10:48:49 ERROR 403: Forbidden. my DOWNLOAD looks like this: #define DOWNLOAD(d) { \ .v = (char *[]){ /bin/sh, -c, \ st -e sh -c \wget \ --no-check-certificate --load-cookies ~/.surf/cookies.txt '$0'; \ pwd; exec ${SHELL}\, d, NULL } } Hm, writing this, I figured out the arxiv folks are afraid of mass deonloads and DoS and just look into the user agent. So adding --user-agent foo solved the problem. I post this anyway, someone might find it useful. Of course, something like Mozilla/5.0 (X11; U; Linux; en-us) AppleWebKit/531.2+ (KHTML, like Gecko, surf-VERSION) Safari/531.2+ would make more sense. Don't know how to use the static char useragent in the macro. Thanks for leading me to that :o) cheers, -- stanio_
Re: [dev] [surf] downloads
* sta...@cs.tu-berlin.de I post this anyway, someone might find it useful. Of course, something like Mozilla/5.0 (X11; U; Linux; en-us) AppleWebKit/531.2+ (KHTML, like Gecko, surf-VERSION) Safari/531.2+ would make more sense. Don't know how to use the static char useragent in the macro. well, works with: #define DOWNLOAD(d) { \ .v = (char *[]){ /bin/sh, -c, \ st -e sh -c \wget \ + --user-agent '$1' \ --no-check-certificate --load-cookies ~/.surf/cookies.txt '$0'; \ - pwd; exec ${SHELL}\, d, NULL } } + pwd; exec ${SHELL}\, d, useragent, NULL } } -- stanio_
Re: [dev] [surf] downloads
* Troels Henriksen at...@sigkill.dk [2011-11-05 12:51]: There is a fix for this that involves using the webkit_download_get_suggested_filename function and passing it to wget's -O option, but I can't figure out how to prevent clobbering of an that might work? fn=$result_of_webkit_download_get_suggested_filename; while test -e $fn; do fn=$fn.1; done; wget -O $fn ... -- stanio_
Re: [dev] [surf] downloads
* Étienne Faure tinou...@gmail.com [2011-11-05 14:29]: I'm afraid not. I tested it quickly for the same vim.org issue: webkit_download_get_suggested_filename(o) returned download_script.php instead of, in this case, TagmaBufMgr.zip. I'm afraid, then curl won't do either. To be honest, while I admit it is not beautiful, I never cared about that. I land in a ${SHELL} after download finishes, see which file has been downloaded, and can immediately rename it to what I consider sane. File type is usually known from context, so ... it doesn't bother me actually. -- stanio_
Re: [dev] [surf] downloads
* Étienne Faure tinou...@gmail.com [2011-11-05 14:59]: On Sat, Nov 5, 2011 at 14:40, sta...@cs.tu-berlin.de wrote: I'm afraid, then curl won't do either. As a matter of fact, it does: great. then use curl. It's acceptable dependence, just as much as wget is. Renaming the file afterwards can lead to failure: if the list of arguments after the .php is too long, the file won't be created, and the rename will fail. In such cases wget returns: Cannot write to `...' (File name too long). Never encountered that myself. And I'm not sure I understand correctly. I would see whether the file was created -- on the last line of wget output: 2011-11-05 15:14:18 (340 KB/s) - `foobar.php?flsjffd' saved [521549/521549] And, of course, rename only if it was downloaded successfully. -- stanio_
Re: [dev] [dwm] 2000 SLOC
* hiro 23h...@googlemail.com [2011-11-02 10:11]: I once envisioned a Plugin to directly go to Print Views of websites, since they tend to have considerably less suck on them. I used to do the same thing, also I processed these pages with a few scripts and htmlfmt. Do you mean, you plug somehow a script in surf (or whatever), before it renders the page? How? Or you process them for offline reading, printing, etc., losing links? I find myself very often spawn a w3m or lynx when I encounter lengthly content worth reading, with one of those 3+ columns layout, without print version, which, to make it more ridiculous, are defined with static width of left and right columns, so that zooming just makes it worse. This doesn't help when there are meaningful images, e.g. formulas, in the text, though. cheers, -- stanio_