Re: [dev] [dwm] New software: swm & infobar
On 11/05/24 08:34AM, Raymond Cole wrote: > On second thought, I think that's awful in terms of readability so I've > just renamed it "button". I may have been hallucinating, but when I saw "butt...tock" it occured to me that it was clearly the opposite of a tick-tok in a butt/tick duality. I can't speak for anyone else, but for me, it helped with readability. > I had a look at your bar program. So it has background scripts that > output to files independently and depends on inotify to wait for updates. > One of my first ideas of infobar is the same in essense, but with > scripts writing to FIFOs instead of files and without use of inotify. Thanks for checking it out. I think I used inotify because I didn't know how to write concurrent programs effectively. > But with that approach, if multiple scripts update per minute or per > second independently, the moment they output won't be aligned, resulting > in more updates of the bar. I took a different approach also for reducing > the number of processes and making it easier to respond to input. > I envy the format string in the single-script approach, because the bar-widgets-as-scripts necessitates: 50-memory.sh, 51-music.sh, 2-date.sh, 1-time.sh I do not like the "_" prefixes in function variables, and do not care too much about extra processes running or bar-updates. The update alignment brings up an interesting topic which I've been thinking about: Should X clients dispose of graphical updates if they're overwritten shortly after? Right now, in st, before writing updates to the screen, it waits for a very brief period of time, to see if there are more updates from the TTY, and then sends the draw commands. Though there are some understandable constraints(the X client library) that prevent different approachs, I've been thinking that this has been the cause of flickering & other race conditions. I'd curious as to your thoughts on this if it is a topic of interest for you. Jeremy
Re: [dev] [dwm] New software: swm & infobar
On 10/25/24 08:11AM, Raymond Cole wrote: > May someone check them out and share opinions? > I like this if [ "$butt" -eq 1 ]; then I did my bar a similar way, except each widget is a script responsible for its own formatting, like: mpc status -f '%artist% ~ %title%' | if read -r song && read -r state rest; then case "$state" in '[playing]') echo "$song ►";; *) echo "$song ◼";; esac else echo "◼" fi; mpc idle >/dev/null And then the main bar program loops each script. Only problem is when I fuck myself & create 90 processes for no reason then my bar stops working. I did a shorter version of fifolog(conccat) without line-delimiting a little while back - see below. Jeremy --- #include #include #include #include #include #include int main(int argc, char **argv) { int i, j, n, w, eof; fd_set rs; char buf[BUFSIZ]; for (i = 1; i < argc; i++) { // close any "accidently" open file descriptors close((i+2)+(argc-1)); if ((n = open(argv[i], O_RDONLY)) == -1) { fprintf(stderr, "pselect: %s\n", strerror(errno)); return 1; } } for (eof = 0; !eof;) { FD_ZERO(&rs); for (i = 3; i < argc+2; i++) { FD_SET(i+(argc-1), &rs); } if ((n = select(i+argc, &rs, NULL, NULL, NULL)) == -1) { fprintf(stderr, "pselect: %s\n", strerror(errno)); return 1; } for (i = 3; i < argc+2; i++) { if (!FD_ISSET(i+(argc-1), &rs)) { continue; } if ((n = read(i+(argc-1), &buf[0], sizeof(buf))) == -1) { fprintf(stderr, "failed reading from fd %d: %s\n", i+(argc-1), strerror(errno)); return 1; } else if (n == 0) { eof = 1; } for (j = 0; j < n; j += w) { if ((w = write(i, &buf[j], n-j)) == -1 || w == 0) { fprintf(stderr, "failed: %s\n", strerror(errno)); return -1; } } } } }
Re: [dev] alternatives to C: Ada, Rust, Pascal
Hello Friend, On 06/21/24 10:45AM, Greg Reagle wrote: > I am not a fan of C because of problems like buffer overflows; weakly typed > arrays; lack of (built-in) range checking for enumerations, numeric types, > arrays; lack of overflow checking; string handling being too complex. > Basically what you might call "safety and ease issues." I am not comparing C > to garbage-collected languages because they are different domains. I am > comparing to other compiled and high-performance languages that lack garbage > collection. What if C & Rust were in different domains? For example - C is a language designed to describe how to operate on a fixed address space - Rust is a macro preprocessor & type system that allows you to generate code by providing a minimal set of trait & lifetime constraints In this case, saying "C lets you overflow a buffer" is like saying "Rust lets you write types that do way too much behind the scenes". Given that the implementing the right data structures are a significant part of what makes an application performant, I don't think there's a replacement for C. You might say "alternatives to grep: awk, ripgrep... ripgrep can browse the whole filesystem using multiple threads. awk can add" but wants to write '/' everytime they write a regex? sometimes I just want to run a single regex over a stream of input. I wish Rust would have stuck with persuing being a safe language. You can still overflow the stack. You can still go OOM. There's nothing novel. Lifetimes in rust was a cool idea to see implemented, but I really wish they'd gotten weird with it. Imagine Lifetimes for stuff on the stack. Then "yeild" is no-cost. Modern-day Coroutines(rhymes with Goroutines, which upsets some people). Everything's recursive now because who gives a shit - you don't have a stack to blow out because you've got "stack-safety" too. Oops, forgot something: files have a lifetime beyond the scope of main. Program doesn't compile if the file doesn't exist on the FS. We only support NixOS now. DNS resolution is now free since it happens at compile time. don't run the program after DNS expiration. it's undefined behavior. Jeremy
Re: [dev][Quark] Big problem
Hi Fossy Dnmx, I'm re-opening this thread & I'm Hoping your health has returned. I want to say "cd ~; httpd" & then see everything in ~ from my Web Browser on port 8080. This is hard & I can't figure out all of these http servers recommended from suckless.org. "permission denied becuase of chroot" and then say when run as root, "refusing to run as root". which makes me start to question things. I did this instead: curl https://raw.githubusercontent.com/emikulic/darkhttpd/master/darkhttpd.c | cc -x c -o ./darkhttpd And it works flawlessly and intinuitively. it does what I want to do (`./darkhttpd ~/.local/bin`). I sympathize with your socket connections closing unexpectedly. Darkhttpd should work for your usecase on the Darkweb, without the scheduler mangling all your socket connections. darkhttpd uses select which I personally. am against bc I struggle to ever remember which arguments goes where, so actually I don't recommend darkhttpd anymore. So In closing, i prefer fork/dup for a lot of things, and the Processses are just goroutines under the hood anyway & so Fork/dup is light-weight. Jeremy On 02/26/23 03:36PM, fo...@dnmx.org wrote: > By the way, are there connections being made to Quark that aren't logged, > like some sort of silent handling? > I am trying to come up with possible answer without reading code lol is fun. > > Like how does it drop connection after only 3 connections? I restarted the > jail, which is like a computer restart, memory should be reset.. > >
Re: [dev] I didn't know that you could use the shell like this: compound pipe?
I hate to assume your motives are bad-hearted, but I'm not sure if you're trolling or something? On 01/17/24 07:00PM, 201009-suckl...@planhack.com wrote: > Use files. > > ./program-cli | ( > read -r > printf "%s\n" "$REPLY" > /tmp/a > ) > /tmp/b > fooify /tmp/a > barify /tmp/b > > To correct the above program: ``` ./program-cli | ( read -r printf "%s\n" "$REPLY" > /tmp/a cat ) > /tmp/b fooify /tmp/a barify /tmp/b ``` If you don't add `cat`, the body of the output is consumed by the dead subshell & you'd end up with nothing to barify, and that's a fact. but why add cat if you can barify right there? to further correct the above program, assuming barify reads from stdin: ``` ./program-cli | ( read -r printf "%s\n" "$REPLY" > /tmp/a barify ) > /tmp/b fooify /tmp/a ``` "Use files" - I will never forget this. Jeremy
Re: [dev] I didn't know that you could use the shell like this: compound pipe?
On 01/15/24 03:14PM, Greg Reagle wrote: > I didn't know that you could use the shell like this. What a delightful > surprise. Here is the code for bash/dash: > > command | (read -r; printf "%s\n" "$REPLY"; sort) > Thanks for sharing. This is neat, however, it gets really gay when multiple processes buffer stdin. For example, to comma-deliminate the header & sort output: ``` ./program-cli --with-header --no-pager --output-file=/dev/stdout | (awk '{ IFS="\t"; OFS=","; print; exit }'; sort) ``` :( It's pretty clear that "header" information is just noise & should EITHER be written: - if stdout is a tty OR - only to standard error Jeremy
Re: [dev] Suckless DNS server
On 07/20/23 04:57AM, NRK wrote: > > C standard defines shift operator as multiplication and division by > powers of 2. And the result of `x * 256` never depend on the system's > byte order and so neither does `x << 8`. > > Rob Pike already has an excellent article on this, so I'll just refer to > that: https://commandcenter.blogspot.com/2012/04/byte-order-fallacy.html > I now realize that I was not right. You're correct. > > Instead, one can use htons(byteorder.3). > > If anything, those functions are precisely the source of confusion like > these and should be avoided for this reason. > I meant `ntohs`... and this further proves your point. Thank you for your insight & for the article. Jeremy
Re: [dev] Suckless DNS server
On 07/20/23 12:09AM, NRK wrote: > FYI I'm not exactly interested in defending dq because I know nothing > about it, but the above criticism at least seems more like knee jerk > reaction due to something being different rather than actual/technical > criticism. > > - NRK > Thanks for your response. Though it was a knee-jerk response, in my experience, reimplementing libc(being different) without acknowledging it is pretty effective heuristic for spotting non-portable code. For example, in the ip_packet function, the author writes: numanswers = uint16_unpack_big(data + 6); ... while (numanswers--) { ... } The uint16_unpack_big definition: crypto_uint16 uint16_unpack_big(const unsigned char *x) crypto_uint16 y; y = x[0]; y <<= 8; y |= x[1]; return y; } As you're probably already aware, if there were 3 answers, and you were running this on a Big Endian machine, the program would attempt to iterate over 768 answers. Instead, one can use htons(byteorder.3). That may be another knee-jerk criticism, but I have trouble seeing any point looking further. Jeremy
Re: [dev] Suckless DNS server
On 07/19/23 04:20PM, Sergey Matveev wrote: > >Which DNS server do you recommend to use? > > https://github.com/janmojzis/dq is pretty lightweight and simple. I respect the endeavour but this author seems to dine pretty heavy on thick paint chips. Before returning from strtoip4, he does the following: int strtoip4(unsigned char *ip, const char *x) ... byte_copy(ip, 12, "\0\0\0\0\0\0\0\0\0\0\377\377"); return 1; } And here is byte_copy: void byte_copy(void *yv, long long ylen, const void *xv) { long long i; const char *x = xv; char *y = yv; for (i = 0; i < ylen; ++i) y[i] = x[i]; } Of course, byte_copy is superior to memcpy & strncpy here because he's copying some pretty long(!) strings. Also, your binary IPv4 address buffer needs to be at 16-bytes long so the author can populate the first 12-bytes with a mysterious string literal. Another excerpt: #define X(e,s) if (i == e) return s; const char *e_str(int i) { X(0,"no error"); X(EINTR,"interrupted system call") X(ENOMEM,"out of memory") X(ENOENT,"file does not exist") X(ETXTBSY,"text busy") X(EIO,"input/output error") ... return "unknown error"; } Maybe this is just comedy? In all seriousness, this project seems moreso exploratory than lightweight & simple. Either that or I do not understand the author's objectives here. Jeremy
Re: [dev] Simpler WiFi alternatives
On 05/13/23 10:55AM, NRK wrote: > On Fri, May 12, 2023 at 10:10:31PM +0200, Yan Doroshenko wrote: > > Hello everyone, > > > > I'd like to take a moment and thank everyone for an extremely polite, > > respectful and to the point discussion regarding the topic at hand. I was > > immensely pleased to have witnessed such a splendid display of a real > > community spirit as well as an immense level of professionalism. No doubt > > everyone involved is absolutely content with himself as well as his actions > > and would have no doubt conducted the same way were it a face to face > > discussion. > > It is true that this thread has been a massive cesspool. But > passive-aggressive replies like this does not help the situation - it > only contributes more to the cesspool. > > - NRK > Have a look at the comment which Mr. Doroshenko was replying to. Personally, I couldn't agree more with Yan. It may seem passive-agressive but I believe English is not Mr. Doroshenko's first language, so I wouldn't be surprised by the "over-the-top" language. (your English is very good, by the way, Mr. Doroshenko) Anselm & Hiltjo, suckless veterens(or at least the ones I see most often in the suckless threads), kept a cool head & have always refused to engage divisive rhetoric(name calling, all-caps, appeals to 1940s facism, etc). The name-calling does make me a little sad("troll", "loser", "Nazi"), along with the characterizations of people's contributions to this thread("troll post", "garbage"). I'd like to think that there are feds(the "glow-in-the-dark" variety) or "competitors" sent to this mailing-list to try to trigger our insecurities & cause suckless to fragment, but that suckless is already inoculated & preoccupied with its own inner-self-criticism to be affected by outside forces. Moderation in this mailing list is highly disciplined & I'm unironically impressed. Thank you. Jeremy
Re: [dev] organizing programs
On 05/12/23 02:11PM, LM wrote: > I'd be curious to know what tools other people use on the list to > handle organizational jobs such as time and task scheduling, todo > lists, habit tracking, displaying/printing calendars, etc. Any > recommendations? If you use more than one application, which programs > work together or chain well? Thanks. > Because my deadlines tend to be more fluid, I've found "todo trees" to be helpful in terms of managing tasks & task dependencies. One of my recent "todo trees": curl jer.cx/pasta/QtA | dot -Tpng /dev/stdin -o o.png && sxiv o.png We're using graphviz' "dot" for the visualization here. In the example, I need a downtime window before I can goto the DC, as well as some hardware brackets, then when we're there, we can install the hardware, etc; Not sure how one would visualize(& make it easy to express) deadlines, dependencies & conditionals, but I suspect there's a very lucrative market oppurtunity for someone who could.
Re: [dev] Simpler WiFi alternatives
On 05/12/23 08:27AM, Lee Phillips wrote: > Since the administrators of this list are unable or unwilling to block access > to this loser, I'm unsubscribing. I don't need this kind of garbage in my > inbox. I have plenty of other kinds of garbage already. > > > Lee Though I don't appreciate Mr. Fossy sexualizing children, I wouldn't call him a loser. Tough to argue he contributes less to this mailing list than some of the patches that come through(my own, included). Even if we agreed that Fossy has nothing to contribute here, I believe they are physically unable to block Mr. Fossy, simply because this kind of moderation is costly. You can always donate to suckless through PayPal using their teasurer's address: fina...@suckless.org Jeremy
Re: [dev] Logical abilities of routers
On 05/01/23 10:10AM, David Brooke wrote: > You might not have NAT (I don't) so a firewall is likely to be useful. > > The OP specified IPv6, here you require Neighbour Discovery and there is > no NAT so definitely consider a firewall. > Pretty neat that you don't use NAT. I had a public IP on my laptop once(ONCE) & the Chinese kept sending garbage to any port that was open & it made my laptop hot(almost burned my thighs!) What's your secret to avoid this?? As I'm sure you're aware, iptables & nftables allow you to configure NAT for IPv6. I couldn't seem to find any useful critisisms of NAT for IPv6. IPv4 isn't going anywhere anytime soon & I doubt any commercial enterprise will write software soley for publicly-addressable, consumer PCs. > Well, you'll also want ARP for MAC address discovery and ICMP to report > errors. > ... > Also consider the internet connection, you may need to run PPPoE to a > xDSL modem or similar. I hadn't thought to mention this - thank you. - Jeremy
Re: [dev] Logical abilities of routers
Hi, For a typical at-home router, everything Mr. Fossy Dinx wrote is correct. The router runs a DHCP server, which assigns IP addresses to hosts on the network(laptops, printers, coffee maker(this is ok), TV, etc). I know it's typically called a "smart-TV". Please understand that I'm trying to be sensitive to the insecurities of everyone on this mailing list. The router also translates the local IP addresses(192.168.1.2, 192.168.1.3, ...) to your public IP address(typically assigned to your router by your ISP), mapping the connection by port, so: 1. Coffee maker(192.168.1.2:1234) makes HTTP request to nsa.gov(23.65.34.113:80) 2. HTTP Packet goes from coffee maker to router 3. Router changes the source address on the HTTP packet - from 192.168.1.2 to router's public address, 50.50.50.50 4. Router sends the packet to nsa.gov: - from 50.50.50.50:2345 to 23.65.34.133:80 5. nsa.gov sends back HTTP response to 50.50.50.50:2345 6. Router knows it sent the coffee maker's IP packet from port 2345, so: - router redirects nsa.gov packet to 192.168.1.2:1234 (coffee maker) That's NAT. With that, we can drop all other packets(packets which are NOT responses to connections that you(or your coffee maker) initiated). This is the ONLY measure necessary protect a network from REMOTE threats. Port forwarding is just an (OPTIONAL)exception to NAT... or "reverse" NAT. Say your coffee maker exposed a web interface that allowed you to start making coffee remotely. All you need to do is tell your router to accept requests to 50.50.50.50:80 & send them to 192.168.1.2:80. This allows you to enter 50.50.50.50:80 into your webbrowser(from anywhere) & access your coffee maker's web interface. Nothing more to a home router than that - hope it helps. Jeremy
Re: [dev] ipaddr - script friendly ifconfig/ip replacement
This is the output on my machine: 10.0.1.176 (enp0s25) 10.0.1.176 (enp0s25) 10.0.0.3 (wg0) Notice the duplicate addresses for enp0s25. As I'm sure you know, as per the IP spec, a NIC can have multiple addresses, so long as they're on different subnets. Output of `ip -br address show enp0s25`: enp0s25 UP 10.0.1.176/24 metric 50 172.20.1.1/24 The underlying issue is that you call getifaddrs.3, which gives you a list of addresses(unique), and their corresponding NIC names(not necessarily unique), iterating over that & calling SIOCSIFADDR by ifname. One alternative is to just get the address from ifaddrs->ifa_addr. Jeremy On 03/26/23 01:08PM, Sean MacLennan wrote: > I started writing ipaddr almost 20 years ago after the umpteenth > time trying to parse ifconfig (and later ip) output in scripts. The > original version was get only and Linux only. > > It now supports Linux, QNX, and most BSDs. However, I rarely use BSD > these days... so the set functions may not work 100%. > > I thought there might be somebody in the suckless community that finds > it helpful. > > You need just the ip address of eth0? > % ipaddr eth0 > 192.168.1.173 > > Nice simple output. All error output goes to stderr, so you can get > just the IP or nothing. No awk/sed/cut needed. > > Also need the bitmask? > % ipaddr -b eth0 > 192.168.1.173/24 > > Maybe the netmask instead? > % ipaddr -im eth0 > 192.168.1.173 255.255.255.0 > > It can also be used to setup an interface: > % ipaddr eth0 192.168.0.33/24 192.168.0.1 > Will set the ip, netmask and default gateway. I could have also > specified the netmask the old way: 255.255.255.0. > > You can see ipaddr.c on github: > https://github.com/smaclennan/samtools/blob/master/ipaddr.c > > I can email the file to anybody who wants it. It is only 6k gzipped. > > Cheers, >Sean >
Re: [dev] sshd?
On 07/25/21 01:25AM, Martin Tournoij wrote: > Minimalism isn't a goal in itself, but means to a goal. > Throwing your spear into the belly of the elk isn't the goal. Though surviving & reproducing may be the goal, maiming the elk gets you pretty damn close. If you were the ask the man hunting the elk, "What are you trying to do right now"? What does he say? A. "Trying to survive & reproduce" B. "Trying to kill this elk" Though readability, maintainability & utility may be the goals of your project, minimalism will lead you there. I agree that minimalism a means to an end, but if the means is the same as the end, why draw the distinction? Jeremy
Re: [dev] sshd?
On 07/07/21 08:55AM, Patrick wrote: > What's a good minimal sshd? > > Or should we just run stunnel + telnetd? Thank you for bringing this up - I've been thinking about this a lot lately. It seems silly to run interactive terminal applications remotely, as, the remote machine: - won't have your configs - won't import/append to your bash_history - may have a different OS My gut tells me to use (N|FTP|SSH)FS, but this is a real pain in the ass when compiling shit programs... $ find bash| stest -f | wc -l 1605 $ find ncurses | stest -f | wc -l 1996 $ find linux | stest -f | wc -l 66520 Maybe y'all have a better solution? Jeremy
Re: [dev] less lines of code suck less
On 05/03/21 04:28PM, Greg Reagle wrote: > Would sbase suck less if the program head, which is currently a C program of > 77 lines, were replaced with something like > #!/bin/sh > sed "$1"q > Great job. > I know that it would need to be a bit more elaborate than that to handle the > -n flag, but still. Is there any advantage to having a separate C program? > The spec gets a bit tricky when handling multiple files - see: seq 3 | awk '{ print $1 > $1 }' head -n1 $(seq 3) This is simple enough to do in awk, with very few lines of code. I'd argue that requiring awk to use `head` would create more complexity(for the end user) than it would solve for the developer. Jeremy
Re: [dev] svtm
On 04/24/21 04:46AM, Greg Reagle wrote: > All of your programs/libraries get installed into /usr/local/bin except svtm > which gets installed into $(HOME)/.local/bin Why is that? If you are going > to stay with $HOME, then remove "sudo" from the last step of your > installation instruction: > [[git clone https://github.com/jeremybobbin/libst && \ > cd libst && make && sudo make install && \ > cd examples/svt && make && sudo make install && cd ../../../ && \ > git clone https://github.com/jeremybobbin/sthkd && \ > cd sthkd && make && sudo make install && cd ../ && \ > git clone https://github.com/martanne/abduco && \ > cd abduco && ./configure && make && sudo make install && \ > git clone https://github.com/jeremybobbin/svtm && \ > cd svtm && sudo make install > ]] > Thanks for pointing that out - fixed. > You have sthkd as both its own git repo and as a subdirectory of libst. I > think you ought to choose one or the other. > You may be confusing it with sthkd with svt. svt is just an ANSI state keeper for scrolling, dumping & re-attaching. sthkd is a play on sxhkd. It just allows you to run commands when you do certain key strokes. svt reads commands(like redraw, dump, scoll) from a fifo. svtm brings these together - giving key bindings similar to dvtm: - ^Gc: create a new window - ^Gj: next window - ^Gk: previous window - ^Ge: dump buffer into editor - ^Gu: scroll up - ^Gd: scroll down
Re: [dev] Ada not Rust
On 04/26/21 03:43PM, Ross Mohn wrote: > > Ross Mohn wrote: > > > I and my entire team have been actively and successfully using dvtm for > > > years. I haven't had it crash in a long while now, and I regularly keep > > > sessions alive for months. However, I am very interested in using > > > something as you describe above, with a library version of st that is > > > kept up-to-date. I didn't get your svtm to work out-of-the-box, but I > > > will continue to debug it myself. I got all the programs to compile > > > fine, but did go into each Makefile and, where necessary, added the '?' > > > character to this line "PREFIX ?= /usr/local". > > Why do you need `?=`. The only difference between `=` and `?=`? > > > > Apart from `=` beginning the only assignment operator defined by POSIX, > > is that `?=` has no effect if the variable is already defined wheras > > `=` does not have any effect if the variable is set in the command line. > > I have PREFIX defined in my environment and make use if it in scripts as > well as in Makefiles, so I don't generally have to pass it in on the > commandline. I could certainly run it as `PREFIX=$PREFIX make`. I have to > use my own PREFIX on the several shared servers I use where I compile and > install my own apps local to just me. It's fine to make a decision to not > use `?=` because of POSIX or whatever. > "because of POSIX or whatever" XD It should work out of the box now.
Re: [dev] Ada not Rust
On 04/20/21 10:23AM, Greg Reagle wrote: > On Tue, Apr 20, 2021, at 09:45, Jeremy wrote: > I gave up on using dvtm a while ago (now I use tmux which is good) because it > would keep crashing. And I could not figure out how to debug the crashes or > get > specific information about the cause of the crashes. If I had known about > these > options then I would have compiled dvtm with them and maybe gave better bug > reports. (Though I know C, I am not an expert in C.) I know what you're talking about & it's a pain in the ass. I believe this is due to the ANSI parser implementation(vt.c) that DVTM uses. I wrote a library, libst(a fork of st), and modified st, dvtm to link against it: https://github.com/jeremybobbin/libst Try compiling & installing libst, then compile & run dvtm in libst/examples. As much as I love dvtm, I believe it's a captive user interface, and lacks the extensibility that a terminal multiplexer could/should provide. Attempting to address this, I wrote, what I believe to be, a suckless approach to terminal multiplexing - svtm: https://github.com/jeremybobbin/svtm svtm is a composition of primarily 4 programs: - abduco - {at,de}tach - svt- TTY state/dumping/scrolling - bmac - byte-for-byte macros - itty - lets you run TTY input through a filter(such as bmac) I'd like to add a "paner" program to that list, but for now, the above is all you need to express any terminal-oriented workflow in a UNIX environment. I'm curious as to what y'all think. Jeremy
Re: [dev] Ada not Rust
On 04/20/21 10:56AM, Laslo Hunhold wrote: > The strong point over Rust is readability, stronger guarantees, built-in > concurrency and the fact that it's ISO-standardized, among many other > things. To see how far you can go with Ada (using SPARK, a very close > subset), read chapter 2.2 in [0]. All the tooling is GPL licensed, but > they also make money with professional-tier packages. > Regarding readability: in terms of the just the standard libraries, I agree that Rust is more readable than C, especially it comes to iterating and generics. The barriers to entry for hacking the compiler, however, increase as these features are added. etywyniel has suggested an implementation of generics in C that use M4: https://github.com/etwyniel/c-generics For example: VEC(int) v; v = VEC_NEW(int); printf("capacity: %zu\n", v.cap); PUSH(v, 55, 95, 88, 1, 2, 3, 4); SLICE(int) sl = VEC_SLICE(int, &v, :4); printf("Slice length: %zu\n", sl.size); Note that, M4's utility is not restricted to C preprocessing, it has applications in many other languages. M4 is a simple syntax and can be implmented in very few lines of code: $ git clone https://github.com/eunuchs/heirloom-project $ wc -l heirloom-project/heirloom/heirloom-devtools/m4/* | grep total 2578 total Regarding ISO-standardization: could you explain a bit more about the value of this? Regarding built-in concurrency: I would argue that pipe(3) & select(3) is sufficient for built-in concurrency, though I understand this debate is on-going. > Which stronger guarantees am I talking about? You can do contractual > programming, guarantee there are no runtime-errors statically (!, i.e. > at compile time), prove statically that there are no data-races (even > in concurrent programs, how nice is that?) and Ada has had a proper > memory ownership model since the 80's which Rust is selling us like > this big new invention. And such guarantees are good to have when you > write a program responsible for actuating nuclear-reactor-control-rods > or the avionics of an aeroplane. > I agree that Rust is better at marketing memory ownership. I'd argue that Rust is better at marketing as a whole. Have a look at the arguments you can pass to "-fsanitize=" in gcc(1). > > Rationally, there is nothing better than C. I wish all the other > > things did not exist, so that people would stop piling crap on top of > > crap. It takes a solid engineering discipline, which is long forgotten. > > But is the C-ecosystem really so light? We're using a slew of static > analyzers, debuggers, etc. to fix our C programs, and even though I've > been programming in C for a decade and would call myself relatively > good at it, I still keep on making mistakes. > Isn't this the essence of UNIX? Rust is an incredibly fun language to write in, and I believe that the enthusiasm for it is unparalleled, however, I'm not certain it's doing anything better in terms of debugging & static analysis compared to the C ecosystem. Jeremy
Re: [dev] Ada not Rust
On 04/19/21 04:19PM, Greg Reagle wrote: > Okay, I did. Very interesting. I briefly studied Ada many years ago. Do > you think that Ada is a viable alternative to Rust? Do you think it is a > decent alternative to C for things like operating systems or utilities like > sbase or ubase? > > I made a Hello World program in Ada. Very fast and small. However, it > depends on libgnat-8.so.1. Is there a way to build it so that it does not? > Like statically linked? > What does Ada(or Rust for that matter) do better than C? Surely, you have all of the tools for static analysis, debugging, macros for C that you would for any other language, no? I could understand generics, interfaces, iterators, OOP and all of that from a masturbatory standpoint, but that aspect aside, what utility do these provide over C? Jeremy
Re: [dev] Completeness suckless
On 04/09/21 10:12PM, Hadrien Lacour wrote: > On Fri, Apr 09, 2021 at 01:07:01PM -0700, Jeremy wrote: > > On 04/09/21 09:07PM, Hadrien Lacour wrote: > > > On Fri, Apr 09, 2021 at 08:24:35PM +0200, Sagar Acharya wrote: > > > > I have studied Engineering Physics at IIT Delhi. There, Computer > > > > Science guys are insane geniuses. They don't bother to set their system > > > > up. Very few do. Most use dual boot Ubuntu and Windows. Now that I have > > > > completed my Bachelor degree, I do not know a single person in my > > > > surroundings who uses GNU/Linux or BSD OSes. > > > Which goes on to show that Computer Science has nothing to do with > > > computers and > > > that scientists aren't necessarily the same as engineers/programmers, > > > nor are they wiser than average. > > > (I say that coming from one of the best universities in France; I didn't > > > have > > > very much respect left for the word "scientist" when I left). > > > > > > > Do architects lay brick? > > > > No, but they better understand how bricks work. Unless "architect" just means > "designer", nowadays, and I'm just being out of touch with the times. > I would think that the difference between a designer and an architect is the level of detail involved. The architect may consider power & water lines, the durability of the structure, cost of the materials. Offloading the work of configuring the desktop doesn't negate the theoretical knowledge. The practical knowledge of computer science comes from experience in a consumer-driven, market environment. Acedamia is not that environment.
Re: [dev] Completeness suckless
On 04/09/21 09:07PM, Hadrien Lacour wrote: > On Fri, Apr 09, 2021 at 08:24:35PM +0200, Sagar Acharya wrote: > > I have studied Engineering Physics at IIT Delhi. There, Computer Science > > guys are insane geniuses. They don't bother to set their system up. Very > > few do. Most use dual boot Ubuntu and Windows. Now that I have completed my > > Bachelor degree, I do not know a single person in my surroundings who uses > > GNU/Linux or BSD OSes. > Which goes on to show that Computer Science has nothing to do with computers > and > that scientists aren't necessarily the same as engineers/programmers, > nor are they wiser than average. > (I say that coming from one of the best universities in France; I didn't have > very much respect left for the word "scientist" when I left). > Do architects lay brick? Jeremy
Re: [dev] Completeness suckless
On 04/09/21 08:24PM, Sagar Acharya wrote: > > >I think, the user's turn to try to understand them to the fullest, even > if it means learning a bit of a programming language. - Laslo > Majority of users in this world would never learn a low level programming > language like C. They are incapable. > Where would you say their capacities are lacking? Jeremy
Re: [dev] st: enlarge font
On 03/22/21 03:15PM, Sebastian LaVine wrote: > > The Suckless community is international, and many of course do not speak > English -- in particular American English -- as a primary language. But as > an American, the word used in that email address is beyond vulgar, and > extremely -- uniquely -- offensive. I agree with Wesley that that email > address should be removed from the list. > As an American myself, if you're going to make an appeal to American sensibilities, I believe removing someone from the mailing list on the basis of skin tone would be considered offensive. Personally, I don't care much either way & I know you(and Wesley) probably have good intentions - just wanted to offer my input as an American.
Re: [dev] Build system: redo
Hey Sergey, Thank you for this in-depth example. This is helpful. Would you happen to know why $3 is necessary, and why one can't write to $1 directly? I'm working on a project that involves cloning & compiling musl-gcc, and am cuious whether redo could be a good fit. I've cloned musl, and I have the following in /bin/musl-gcc.do: cd /usr/src/musl find . -name '*.[ch]' | xargs redo-ifchange ./configure --prefix=/usr && make install syslibdir=/lib If I `redo /bin/musl-gcc.do`, it will complain that I am overwriting the target(redo-python) or it will just truncate the target(redo-c). Maybe this usecase is irrelevant to the scope of redo, though I'm not sure. What do you think? Jeremy
Re: [dev] [dwm] systray in upstream dwm?
On Thu, Apr 5, 2012 at 2:12 AM, KIMURA Masaru wrote: >> however in my opinion a system tray is >> not necessary and should not be added to mainline. > > if you don't mind my asking, explain why? > just curious. > Necessity needs justification, not the other way around.
Re: [dev] regarding surf and cookie handling
On Tue, Feb 21, 2012 at 1:13 PM, Nick wrote: > userbase of < 5 ;) Hey, just because we're quiet doesn't mean we aren't here.
Re: [dev] network usage graphs
On Thu, Jan 26, 2012 at 11:05:19PM -, Bjartur Thorlacius wrote: > What use is bloatware such as ed when you have sed and sponge? Not sure if sarcasm...
Re: [dev] [st] Drawing optimizations
On Sat, Jan 21, 2012 at 3:54 PM, Aurélien Aptel wrote: > Hi all, > > I've made st ~10x faster on my computer. If there are no major bugs I > will tag tip as version 0.2. > Here's the relevant commit message: > > * add a timeout value (SELECT_TIMEOUT) of 20ms in the select() call > * wait at least 20ms (DRAW_TIMEOUT) between draw() calls > * only copy dirty lines from the buffer to the screen > > what draw() does: > * clears dirty lines in the buffer > * draws the longest same-attributes string of each > dirty line to the buffer with multiple xdraws() call > * copies the current dirty line from buffer to the screen with a single > xcopy() call > > this changeset makes st run ~10x faster. > Thanks for this! The speed increase is very noticable over here.
Re: [dev] Patch for st tabbed
> Patch for st tabbed > also adds bindable function to instantly exit tabbed (I bind to ^c). Don't you ever want to interrupt a program without closing all your terminals?
Re: [dev] st: Font problem
On Tue, Jan 17, 2012 at 4:17 AM, Aurélien Aptel wrote: > On Tue, Jan 17, 2012 at 10:38 AM, François Chaix wrote: >> So, it works, st launches, but it is very slow. 1s to display a full >> man page, 3s to display a ncurses-based interface (tested with mocp). >> What do you think this comes from ? > > st is slow, yes, but it should be faster than that. What is the size > (columns*rows) of your term? Also, try the tip of the repo, I > implemented few optimisations since 0.1.1. > Btw, I think I'll tag the next changeset as 0.2. This has been brought up here before and if I believe it was blamed on the free ATI driver. I have this issue on my desktop, which uses said driver, not on my laptop with intel graphics.
Re: [dev] [surf] hover fix
> this Sorry, this one can actually be applied. hover3.diff Description: Binary data
Re: [dev] [surf] hover fix
On Mon, Jan 16, 2012 at 4:38 AM, wrote: > Hello, > > Surf doesn't "update" when hovering link, > removing an else fixes it. I think this has the same effect but avoids a redundant print. This has really bothered me a few times, that I couldn't hover a link while the page was loading. hover2.diff Description: Binary data
Re: [dev] network usage graphs
Is there a reason for using a stream editor when you want to edit in-file? echo '1d w' | ed original.dat
Re: [dev] PARENT_XID environment variable.
>> > I would like to add support for surf, zathura and others I use >> > daily. >> >> I already use it with surf, and I didn't have to add any support. >> > > Are you using PARENT_XID environment variable enabled surf? That was > the point of my mail. Ah, I fear I skimmed through your mail too quickly and misunderstood, sorry.
Re: [dev] PARENT_XID environment variable.
> I would like to add support for surf, zathura and others I use daily. I already use it with surf, and I didn't have to add any support.
Re: [dev] [dwm] 2000 SLOC
> The current list of unclear removal candidates is: > > * surf (seems dead, please shout if you disagree or if anyone wants to > take this on, it doesn't make sense if it is not maintained, as > webkitgtk carries away) > * ii (Nion, are you still maintaining it?) I'm fine with the other ones, but I'd like to cast my vote on keeping these two, I use and love them. I would offer to maintain if necessary but I haven't exactly been around long enough to earn the trust of anyone. Jeremy
Re: [dev] [dwm] ncol layout
> So in other words, if we can say tha majority use cases are: > > nmaster: 1-2 > ncol (slave cols): 1-2 Hm, so are we no longer considering bstack? I agree that mod-shift-t would be a nice way to do nmaster=2, but this means that with more than two windows I'm stuck a stack on the side and I've lost horizontal screen space on my small netbook screen.
Re: [dev] [dwm] ncol layout
> keybinding), so increasing nmaster and moving that window into the s/increasing/decreasing/ > ... Anyway it seems like my > explanation isn't clear so I'll try to implement it and post a patch Okay, so not knowing the dwm source very well I'm having trouble implementing this, but I think these excerpts illustrate what I'm TRYING to do (and I would appreciate it if someone more knowledgeable than myself could help me fix it). And I'm not really suggesting we change what mod+shift+enter does, I just thought it would help clarify that my idea is to replace two incnmaster keybindings with one keybinding which is a second form of zoom. config.def.h: static Key keys[] = { /* modifier keyfunctionargument */ { MODKEY, XK_p, spawn, {.v = dmenucmd } }, - { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, + { MODKEY, XK_n, spawn, {.v = termcmd } }, { MODKEY, XK_b, togglebar, {0} }, { MODKEY, XK_j, focusstack, {.i = +1 } }, { MODKEY, XK_k, focusstack, {.i = -1 } }, - { MODKEY, XK_i, incnmaster, {.i = +1 } }, - { MODKEY, XK_d, incnmaster, {.i = -1 } }, { MODKEY, XK_h, setmfact, {.f = -0.05} }, { MODKEY, XK_l, setmfact, {.f = +0.05} }, - { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Return, zoom, {.i = 0 } }, + { MODKEY|ShiftMask, XK_Return, zoom, {.i = 1 } }, dwm.c: void zoom(const Arg *arg) { Client *c = selmon->sel; + int inc = arg->i; + /* if the selected client is in the stack, increment nmaster, otherwise decrement */ + // inc *= instack(c) ? +1 : -1; if(!selmon->lt[selmon->sellt]->arrange || (selmon->sel && selmon->sel->isfloating)) return; if(c == nexttiled(selmon->clients)) if(!c || !(c = nexttiled(c->next))) return; + incnmaster(inc); pop(c); }
Re: [dev] [dwm] ncol layout
> But, how would you be able to decrease the nmaster number? Focus a window in master and press alt+shift+enter (or whatever keybinding), so increasing nmaster and moving that window into the stack. Instead of choosing the nmaster number and letting the windows arrange themselves appropriately, you choose which windows to move into master or which to move back into the stack. Maybe this would go against the 'dynamic' part of dwm's name... Anyway it seems like my explanation isn't clear so I'll try to implement it and post a patch Jeremy
Re: [dev] [dwm] ncol layout
I'm sure someone has thought of this before but it came to me as a nice way to allow multiple clients in master: Pretending for a moment that mod+shift+return didn't spawn a terminal by default, what if we had something like: - mod+return switches focused window in and out of master, like normal - mod+shift+return (or whatever keybinding is chosen) does the same except instead of forcing another window out of master or stack, it increases/decreases nmaster so that the focused window is added to master or added to the stack without bumping out another window Now we are only adding one more keybinding and can put an arbitrary number of windows in both master and stack, in a way that is intuitive (to me at least). Jeremy
Re: [dev] [dwm] 2000 SLOC
> First I want many projects removed from suckless.org, only the real key > projects should survive. I plan to set up suckmore-graveyard.org or something > similar in a couple of weeks to allow for an archive of those non fitters, as Aside from wmii, what other projects do you have in mind? I'm suddenly nervous that my favorite software is going to start to disappear... Jeremy
Re: [dev] Linux sucks!
> condolences on your shitty university Makes me appreciate mine a bit more, where the windows section of the main undergrad lab is a dank little corner mainly populated by students from other departments who were forced into taking a CS course.
Re: [dev] [dwm] merging bottom stack?
On Mon, Sep 26, 2011 at 3:29 PM, Connor Lane Smith wrote: > Hey, > > On 26 September 2011 21:43, Nick wrote: >> Just wondering what people think about the idea of merging the >> bstack layout patch to the plain vanilla dwm? It's pretty >> non-intrusive, and a very useful layout for small screens (where the >> regular tiled layout results in excess line wrapping). > > How about using an 'ntile' layout instead? Attached is patch similar > nmaster [1], but a bit simpler (+1 LOC). It replaces tile; I don't > know. > > [1]: http://dwm.suckless.org/patches/nmaster > > Thanks, > cls > Connor, in your patch the variable nmaster is initialized to 0, which causes a crash (division by zero) if the incnmaster function is not called before launching a window.
[dev] Missing hg repo after move?
hg clone http://hg.suckless.org/sandy gives abort: HTTP Error 500: Internal Server Error and it also doesn't appear in the repositories list at hg.suckless.org. I'm guessing this has something to do with the hosting move.
Re: [dev] [st]100% cpu in some cases
I experience this also, using the free radeon driver. I have no idea what this firmware-linux-nonfree is though...
Re: [dev] wmii unicode in the status?
On Sun, Jan 23, 2011 at 6:26 PM, Eitan Goldshtrom wrote: > So I had already done that, which made me wonder why you were suggesting > it, because obviously I must have done something wrong when I tried to hg > that URL. I hadn't realized that I needed to build that after getting it. I > did and everything worked. I built wmii-3.9.2. Which leaves me now > wondering, what next? I'm using Ubuntu. When I installed from the Ubuntu > Software Center it added an option at the login for me to change desktop > environments. Will this new build override that or do I need to do something > else? I am under the impression that putting the expected line of code to > start wmii with startx will not work for Ubuntu? If this is reaching outside > the realm of wmii I can ask elsewhere. > -Eitan Yes, you might want to take some of these questions to something like the Ubuntu IRC channel. You can use startx with Ubuntu but it's not really the Ubuntu way of doing things. Really, if you want to be using software like wmii maybe Ubuntu is not the right place for you...
Re: [dev] [dwm] dwm for windows?
This may be the closet thing, a set of authotkey scripts that emulate dwm functionality: http://www.autohotkey.com/forum/topic33189.html&sid=c0298a688006a9d57a2f6239f6091cf2 On Thu, Jul 8, 2010 at 10:51 AM, Yue Wu wrote: > On Thu, 08 Jul 2010 21:32:36 +0800, Pascal Wittmann > wrote: > >> On 07/08/2010 03:09 PM, Yue Wu wrote: >>> >>> Hi, I'm using bblean[http://bb4win.sourceforge.net/bblean/] on windows, >>> but I miss dwm, is there a port for it on windows? >>> >> >> There is a dwm-port[1], but imo it is not very usable. >> >> [1] http://www.brain-dump.org/projects/dwm-win32/ > > Thanks, it looks to be what I'm finding, but after have a try with HashTWM, > I realise what I really need is a light weight DE, not a light weight WM, > because I need tasktray, etc. dwm-win32 is much closer to what I want than > HashTWM, if I can find a light weight tasktray, I will have a try, but it's > not in development now, and have some serious bugs(mensioned by author), so > maybe bblean still be the best I can find at present. > > -- > Regards, > Yue Wu > > Key Laboratory of Modern Chinese Medicines > Department of Traditional Chinese Medicine > China Pharmaceutical University > No.24, Tongjia Xiang Street, Nanjing 210009, China > > -- Jeremy Wolff
[dev] [surf] searchengines patch 0.4 update
I've updated the searchengines patch for surf, the patch on the site only works for 0.3. diff -up surf-0.4/config.def.h surf-0.4-mychanges/config.def.h --- surf-0.4/config.def.h 2010-05-30 16:05:25.0 -0400 +++ surf-0.4-mychanges/config.def.h 2010-06-05 14:23:36.0 -0400 @@ -38,3 +38,7 @@ static Key keys[] = { { MODKEY, GDK_n, find, { .b = TRUE } }, { MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } }, }; + +static SearchEngine searchengines[] = { +{ NULL, NULL }, +}; diff -up surf-0.4/surf.c surf-0.4-mychanges/surf.c --- surf-0.4/surf.c 2010-05-30 16:05:25.0 -0400 +++ surf-0.4-mychanges/surf.c 2010-06-05 14:23:36.0 -0400 @@ -55,6 +55,11 @@ typedef struct { const Arg arg; } Key; +typedef struct { + char *token; + char *uri; +} SearchEngine; + static Display *dpy; static Atom atoms[AtomLast]; static Client *clients = NULL; @@ -85,6 +90,7 @@ static gboolean initdownload(WebKitWebVi static gboolean keypress(GtkWidget *w, GdkEventKey *ev, Client *c); static void linkhover(WebKitWebView *v, const char* t, const char* l, Client *c); static void loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c); +static gchar *parseuri(const gchar *uri); static void loaduri(Client *c, const Arg *arg); static void navigate(Client *c, const Arg *arg); static Client *newclient(void); @@ -380,6 +386,18 @@ loadstatuschange(WebKitWebView *view, GP } } +gchar * +parseuri(const gchar *uri) { + guint i; + for (i = 0; i < LENGTH(searchengines); i++) { + if (searchengines[i].token == NULL || searchengines[i].uri == NULL || *(uri + strlen(searchengines[i].token)) != ' ') + continue; + if (g_str_has_prefix(uri, searchengines[i].token)) + return g_strdup_printf(searchengines[i].uri, uri + strlen(searchengines[i].token) + 1); + } + return g_strrstr(uri, "://") ? g_strdup(uri) : g_strdup_printf("http://%s";, uri); +} + void loaduri(Client *c, const Arg *arg) { char *u; @@ -388,8 +406,9 @@ loaduri(Client *c, const Arg *arg) { if(strcmp(uri, "") == 0) return; - u = g_strrstr(uri, "://") ? g_strdup(uri) - : g_strdup_printf("http://%s";, uri); + //u = g_strrstr(uri, "://") ? g_strdup(uri) + // : g_strdup_printf("http://%s";, uri); + u = parseuri(uri); /* prevents endless loop */ if(c->uri && strcmp(u, c->uri) == 0) { reload(c, &a);
Re: [dev] last request for a dev-only list
Again, I know how easy it is to set up filters, and I've done it before, but unsubscribing is an even more simple solution. I think dev@ is pretty self-explanatory, it should be for bug reports, patches, and other _DEV_elopment-related topics. Most people interested in one of these are interested in all of them. Most people interested in these are NOT necessarily interested in european politics, german computer shops, or obscure linux disributions/software. Yes, there is certainly overlap, but that doesn't mean the list should bombard dev-only people with it. If people knew when to take discussions off-list I'd be happy, but when it comes down to 2 or 3 people arguing points that none of them will concede, they don't need to CC the list every time. I don't subscribe to lkml for a reason, but even if I did the archives show it to be mostly on-topic. Occasional chatter is fine by me. When the 10% turns to 90% is where I take issue. I agree wholeheartedly with your web forum rant, I hate them. But I also think that mailing lists should have a more narrow focus. Saves everyone from dealing with the chaff. Again, this is just my .02, Jeremy On Thu 11 Jun 2009 - 07:32PM, Uriel wrote: > The set of emails that every member of a list wants to read is > different, the only solution to make everyone happy would be to have > one list per-email (or perhaps one list per-thread, if you are really > optimistic and tolerant). > > As an alternative one can setup filters or use the Delete button (or > don't even bother to open threads you aren't interested in, if I read > every single email posted to every single list I'm subscribed to it > would take me more than 24/7 of email reading just to keep up). > > Peace > > uriel > > P.S.: Perhaps having chat@ for random crap and relegating dev@ for > only technical discussions would work, but often it is hard to know > where to draw the line, and two lists with very low traffic are really > a waste of time. Really given the insanely low traffic levels in this > list I don't see why people complains so much, have you ever been > subscribed to lkml or any other high volume list? > > I'm starting to suspect that all the stupid web forums > and shit have created a whole generation of users that don't even know > how to deal with email (recently somebody posted to the xiph list > unsure of how mailing lists worked and asking why they didn't use a > web forum instead, a few weeks back some moron posted to reddit asking > about all this stupid open source projects that used this dumb mailing > list technology instead of web forums. *sigh* > > On Thu, Jun 11, 2009 at 7:14 PM, Jeremy Jay wrote: > > As much as I love dwm and suckless projects in general, I could really > > do without all the off-topic conversations by the same 10 people. ??If > > there will not be split suckless-dev/suckless-discussion lists I will be > > unsubscribing. ??I hate to miss all the good code and patches, but I also > > hate dealing with the other 90% of the emails and their associated egos. > > I'm sure there are others listening who agree. > > > > Before anyone says to just add a filter, I do not have any filters set > > up (other than spam), to me the point of getting the emails is to READ > > them so if I do not want to read them, then I should not be subscribed > > in the first place. > > > > Jeremy > > > > >
[dev] last request for a dev-only list
As much as I love dwm and suckless projects in general, I could really do without all the off-topic conversations by the same 10 people. If there will not be split suckless-dev/suckless-discussion lists I will be unsubscribing. I hate to miss all the good code and patches, but I also hate dealing with the other 90% of the emails and their associated egos. I'm sure there are others listening who agree. Before anyone says to just add a filter, I do not have any filters set up (other than spam), to me the point of getting the emails is to READ them so if I do not want to read them, then I should not be subscribed in the first place. Jeremy
Re: [dev] dwm: XComposite patch
On Thu 04 Jun 2009 - 03:55PM, thomasspur...@gmail.com wrote: > On 16:07 Thu 04 Jun , pancake wrote: > > isn't meta-0 the exposee you are looking for? didnt check your patch but > > I prefer not to depend on composite or gl extensions that never work fine > > Thanks, but meta-0 is not what I am looking for; when I have a cluttered > X session: > 1) I can't actually see much of the individual windows > 2) Any floating windows (gimp etc.) occlude the windows underneath > 3) Selecting and jumping to one of the windows is a pain I must be missing something here You're using dwm, but you're using the tags as virtual screens instead of tags? The whole point of tiling window managers like dwm is that you don't have to do window management (ie expose-like features)... If you have too many windows on your tags, add more tags! If you can't find a window then you're doing it wrong. I suggest kicking your virtual-screen habits and using it as it was intended, you'll save yourself a lot of time and effort. Jeremy
Re: [dev] How to make R's windows floating?
I guess I should have been more explicit: { NULL, NULL, "R Graphics", 0,True }, On Tue 26 May 2009 - 08:10PM, Wu, Yue wrote: > On Mon, May 25, 2009 at 03:39:11PM -0400, Jeremy Jay wrote: > > > > use "R Graphics" instead of "R*". it's only substrings, not pattern matching > > > > Unfortunitely it doesn't work: > > { "R Graphics", NULL, NULL, 0,True }, > > maybe I need to use "R Graphics: Device 2 (ACTIVE)"? But I have to create much > rules for them since the device number can be altered. > > -- > Hi, > Wu, Yue >
Re: [dev] How to make R's windows floating?
use "R Graphics" instead of "R*". it's only substrings, not pattern matching On Mon 25 May 2009 - 02:04PM, Wu, Yue wrote: > On Sun, May 24, 2009 at 09:51:59AM +0800, bill lam wrote: > > On Sun, 24 May 2009, Wu, Yue wrote: > > > Hi, I tried to make all of R[www.r-project.org] relative stuffs, like > > > graph it > > > produces by graphic device x11(), floating, the method I've tried are: > > > > > > { NULL, "R",NULL, 0,True }, > > > { NULL, "R*",NULL, 0,True }, > > > { NULL, NULL,"R", 0,True }, > > > { NULL, NULL,"R*", 0,True }, > > > { "R", NULL,NULL, 0,True }, > > > { "R*", NULL,NULL, 0,True }, > > > > > > But all of them failed, what's wrong? > > > > use `xprop' to get the class name or instance name of R. > > xprop > > I got this, but I don't know what's wrong with my configure, 'R*' should > match it I think. > > WM_STATE(WM_STATE): > window state: Normal > icon window: 0x0 > WM_PROTOCOLS(ATOM): protocols WM_DELETE_WINDOW > WM_NAME(STRING) = "R Graphics: Device 2 (ACTIVE)" > WM_NORMAL_HINTS(WM_SIZE_HINTS): > program specified location: 0, 0 > program specified size: 598 by 598 > > -- > Hi, > Wu, Yue >
Re: [dev] dwm only?
You know, if people stopped complaining or responding to complaints there would be a lot less chatter on the list Jeremy On Sun 24 May 2009 - 11:12AM, Thayer Williams wrote: > On Sun, May 24, 2009 at 1:44 AM, Dusan wrote: > > Is there a way to get only dwm related emails? Since lists are merged I > > get bunch of wmii related ones and frankly I don't need them at all. > > > > Thanks. > > If your email client has the capability, you should be able to create > a filter which trashes emails containing the subject [wmii] though it > isn't foolproof and certainly won't catch the off-topic threads. For > what it's worth, the dwm list is one of the quietest I've been > subscribed to so it shouldn't be too noisy even with the merger. >