Re: [dev] [dwm] New software: swm & infobar

2024-11-05 Thread Jeremy
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

2024-11-04 Thread Jeremy
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

2024-06-22 Thread Jeremy
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

2024-06-03 Thread Jeremy
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?

2024-01-17 Thread Jeremy
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?

2024-01-17 Thread Jeremy
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

2023-07-19 Thread Jeremy
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

2023-07-19 Thread Jeremy
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

2023-07-19 Thread Jeremy
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

2023-05-13 Thread Jeremy
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

2023-05-12 Thread Jeremy
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

2023-05-12 Thread Jeremy
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

2023-05-01 Thread Jeremy
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

2023-04-30 Thread Jeremy
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

2023-03-26 Thread Jeremy
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?

2021-07-26 Thread Jeremy
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?

2021-07-06 Thread Jeremy
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

2021-05-03 Thread Jeremy
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

2021-04-28 Thread Jeremy
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

2021-04-28 Thread Jeremy
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

2021-04-23 Thread Jeremy
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

2021-04-20 Thread Jeremy
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

2021-04-19 Thread Jeremy
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

2021-04-09 Thread Jeremy
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

2021-04-09 Thread Jeremy
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

2021-04-09 Thread Jeremy
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

2021-03-30 Thread Jeremy
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

2020-12-20 Thread Jeremy
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?

2012-04-05 Thread Jeremy Jackins
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

2012-02-21 Thread Jeremy Jackins
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

2012-01-27 Thread Jeremy Jackins
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

2012-01-21 Thread Jeremy Jackins
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

2012-01-20 Thread Jeremy Jackins
> 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

2012-01-17 Thread Jeremy Jackins
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

2012-01-16 Thread Jeremy Jackins
> this

Sorry, this one can actually be applied.


hover3.diff
Description: Binary data


Re: [dev] [surf] hover fix

2012-01-16 Thread Jeremy Jackins
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

2011-12-24 Thread Jeremy Jackins
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.

2011-11-06 Thread Jeremy Jackins
>> > 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.

2011-11-05 Thread Jeremy Jackins
> 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

2011-10-31 Thread Jeremy Jackins
> 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

2011-10-31 Thread Jeremy Jackins
> 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

2011-10-30 Thread Jeremy Jackins
> 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

2011-10-30 Thread Jeremy Jackins
> 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

2011-10-30 Thread Jeremy Jackins
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

2011-10-30 Thread Jeremy Jackins
> 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!

2011-10-29 Thread Jeremy Jackins
> 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?

2011-10-05 Thread Jeremy Jackins
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?

2011-09-29 Thread Jeremy Jackins
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

2011-09-18 Thread Jeremy Jackins
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?

2011-01-23 Thread Jeremy Jackins
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?

2010-07-09 Thread Jeremy Wolff
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

2010-06-05 Thread Jeremy Wolff
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

2009-06-11 Thread Jeremy Jay
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

2009-06-11 Thread Jeremy Jay
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

2009-06-04 Thread Jeremy Jay
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?

2009-05-26 Thread Jeremy Jay
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?

2009-05-25 Thread Jeremy Jay

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?

2009-05-24 Thread Jeremy Jay
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.
>