Slashdot Mirror


Network Aware Screensavers?

borgquite asks: "Does anyone know of any network aware screensavers? I am running a school network and would love to be able to have a screensaver where the other computers communicate with each other in some way - for example, if you could have a marquee where the message gets passed from screen to screen. The best I can find is n 0 time, but is there anything else a bit more exciting?"

16 of 76 comments (clear)

  1. DIY by Permission+Denied · · Score: 5, Interesting
    As usual, my response is to search google for a half hour. If google doesn't turn up anything, do it yourself.

    I did this a few years ago. I wrote a screensaver that bounced a logo around. The whole reason for the screen saver was that it sent a UDP packet to a central logging server noting the time that the screen saver came on and went off. This allowed us to log each machine's idle time, and I had various awk scripts that made nice little reports (win32 screen saver, but server stuff is kept on Unix of course).

    This was a really trivial program - one C file, took me maybe an hour or two to write. It would be extremely easy to extend it so that it sent a UDP packet to the "next" machine (where each machine has an ordered list of machines, saved in the registry), and waited for a reply. If no reply, send the packet to the machine after that, and so on. Once you get a reply, turn off the marquee; if no reply, wrap marquee around. The screen saver also listens for UDP packets when it's running. If it receives a packet when it doesn't have a marquee, it sends a reply, and scrolls in the marquee from the left. The only tough part is some sort of synchronization mechanism to ensure the marquee doesn't skip around; this synchronization would happen when the machine starts up the screen saver (this part is cloudy, the rest of the design is clear in my head).

    I can't find my old code - this is a while ago, like five or six disk crashes - and the code was so trivial, I didn't put it in CVS (I only back up my CVS repositories, everything else I lose whenever a disk fails).

    I might write this after dinner, since it sounds kind of cool. If I do, I'll base64 encode it and put it in my journal, so check my journal tomorrow morning (can't post directly to slashdot because of lameness filter, but it seems lameness filter doesn't apply to journal entries). I try to write my win32 stuff using gcc (cygwin environment for development, avoid cygwin libraries in final product) - if cygwin is missing the screensaver headers or something, I might use the MS .NET SDK (which is free and comes with fully-functional C and C++ compilers, nmake, and everything you really need to write win32 programs, just no lame IDE). If that won't work, I'll use VS 6.0.

    I challenge anyone else on slashdot to write a better version, from scratch, by tommorow (2002-12-13). Should get interesting if anyone takes me up on this. I have to go to work tomorrow (which limits the time I can put into it), but you college kids should have plenty of free time since you should be on winter break by now.

    1. Re:DIY by lexarius · · Score: 2, Interesting

      Use a server machine. The server determines the marquees and contains the ordered list of machines. When a screensaver comes on, it asks the server (broadcast, perhaps? or in the registry) if there are any available things to display. If not, it waits for some marquee or bouncing object to be passed to it, either from a nearby machine or the server. The server should also be periodically notified about the state of any objects in circulation, so that it can start them again if they get lost for some reason. For convenience, the "server" could be the same program configured differently in the screensaver settings, so anyone could set up a server that responds to nearby udp broadcasts. Or something like that.

  2. Primordial Life by pythorlh · · Score: 5, Interesting

    Primordial Life is a great network aware screensaver. It creates little creatures that evolve as the screensaver runs. Using the network, creatures that reach the edge of the screen can be sent to other computers, for a much larger virtual world.

    --
    Do not confuse duty with what other people expect of you; they are utterly different.Duty is a debt you owe to yourself.
  3. Electric Sheep by Matthias+Wiesmann · · Score: 3, Interesting

    I don't know if this project fits your idea of network aware, but there is electric sheep. In this screen saver, computer join a collaborative task to calculate the next fractal to display. I think there are Linux, BSD and Mac OS X ports.

  4. "Would, you, like, to, play, a, game?" by E1v!$ · · Score: 5, Interesting

    It would be neat to setup a game server, and have a small game launch as the screen saver running a bot. The idle computers could compete against each other.

    (people could write bot plugins...)

    1. Re:"Would, you, like, to, play, a, game?" by zero_offset · · Score: 3, Interesting
      I wish I had some mod points to give you.

      Every time id comes out with a new version of Quake, I wonder why they don't offer a screensaver mode. It should take one of them maybe two hours of keyboard time... maybe a day if they do network-bot-autoplay (they'd need some kind of autodiscovery, fairly trivial). On slower PCs the load/shutdown times would suck until the average gamer's PC caught up with the high-end of the target platforms (and now, god-knows-how-many-years-later, something like Q1 ought to load up pretty damned fast).

      Of course, Carmack reads /. sometimes... let's keep our fingers crossed for Doom III... :)

      Heck, I'd probably pay a little extra, now that I think about it.

      --

      Slashdot quality declines as the number of hot grits posts decreases. - Provolt's Law, Apr-09-2005

  5. Bounce.. by BigZaphod · · Score: 4, Interesting

    I bounced a few random shapes around an entire lab my last year at college. It was pretty cool and took maybe 4 hours at most to write (I did it in front of the computer club on a projector as a two-meeting presentation series :-)).

    I used OpenGL, SDL, and SDL_net to make things easy. If you're at all a programmer, it shouldn't take much to pull those tools together and do something simple. In my case, I actually had a file that would load informing the program which computer was to its left and right so the shape could move properly. But for an actual screensaver, I imagine something more random would be fine. Maybe using some broadcast packets to discover each other.

    Fun stuff. Too bad I can't find the code anymore.

  6. Another idea by Catskul · · Score: 4, Interesting

    What I think would be neat is if you did some measuring and found the distance and relative angles of a set of monitors and integrated the measurements into views of a (3d)video game. It would be as if you had windows into the game. I.e. the monitors would be displaying geometricly correct views of the same world. It would be an awesome effect and not too difficult.

    --

    Im not here now... Im out KILLING pepperoni
    1. Re:Another idea by zonix · · Score: 2, Interesting

      The original Doom game actually had a feature similar to this, only it was fixed to your 1st person viewpoint.

      You could set up two other network clients with a special command line switch, and they would show you your left and right 90 degree angle views respectively - really neat too!

      Being a 4 player network game you could still frag one of you friends at the same time, and they'd have a hard time sneaking up on you. :-)

      z
      --
      What would an EWOULDBLOCK block, if an EWOULDBLOCK could block would? -- me
  7. Yet Another Network Screensaver Coding Idea by i_am_nitrogen · · Score: 3, Interesting

    Here's an idea:

    In the initial setup process (and also in a configuration tool or file somewhere), each system's screensaver would ask for its physical position. Either absolute coordinates in a lab, or relative positioning to other machines could be used. In the case of relative positioning, you could either have each computer check those computers next to it if they're running the screensaver, and if those computers are currently displaying an object. If not, that screensaver would spawn an object. It would probably be easier to have a master server that knows which machines are currently idle and where they're at, and have each node send a message to the server/next node whenever an object is about to leave the screen, and in which direction it's going (forward, back, left, right, maybe up and down if there are monitors in a rack). For example, in a scrolling banner, as soon as the text touches the right side of the screen, it would send a message to the next node containing the text itself, the text velocity, and which side of the screen to begin it on. Since they're at the same velocity, the second node should have the text fully appear at the same time the text fully disappears from the first node. You could also have the server keep a pool of objects, and when a node's screensaver is deactivated, the object is sent back to the pool and displayed somewhere else. If only one computer in the lab is running the screensaver, it could have all the objects bouncing around, and as soon as other computers turn on, the objects would be distributed or sent to them as the server desires. You could even add manual control for objects, too.

  8. Sonar by jes5199 · · Score: 2, Interesting

    this may take a little time with a copiler to make run with windows, but Xscreensaver has a SONAR screensaver

    part of a screenshot / description of entire package

    there's not much to it, but it can render network ping times of other computers as if they were boats on the sonar display.
    simple but cute

    --
    monkeys.
  9. WebPage as screensaver by MeerCat · · Score: 3, Interesting

    I wrote (you're going to hate this) a very small VB screensaver that just runs an IE window (no nav bar etc) so that I can have a screen-saver showing a webpage, and point it at a web page that has a META tag to refresh every 60 seconds.

    We run this on a machine plugged into a plasma screen so that our "latest build status" web page is always on display in the corner of the room, but the machine it's running on is locked against casual prying eyes.

    I don't know why IE doesn't have a screen-saver mode built-in itself, and as far as I know Mozilla or similar don't do this...

    Anyway, it's about 300 lines of VB which you're welcome to (contact me via schmerg.com), and then you can just write webpages to co-ordinate any action between machines.... get each client to request a page and add it's local machine name as a CGI parameter and you're away...

    --
    T

    --
    I spent a lot of money on booze, birds and fast cars. The rest I just squandered. - George Best
  10. I hate to be a nay-sayer ... by Glonoinha · · Score: 1, Interesting

    12 mid range network servers : $36,000 apiece.
    Network infrastructure : $20,000.
    100 end user workstations : $125,000
    Clueless Network Admin : $24,000 / year.

    Bringing the network to its knees by running screen savers on the servers : Priceless.

    Take a few seconds, open your Task Manager and go to the graph page (last tab.) Let it settle down until the CPU graph has calmed down and bottomed out. Start up your Screen Saver (3d Flowerbox seems to be popular in offices) and let it run for 20 seconds. Ditch the screen saver, look at TaskMan - the entire time the screen saver was up your CPU utilization was pegged at 100%.

    It doesn't matter if your server is crunching numbers, cracking RSA, or running a screen saver - if your server is running a program that is taking every available CPU cycle it is going to run like a dog. Might as well be running Unreal Tournament 2003 on all the servers - if you are going to use all the available CPU cycles at least have a good time doing it.

    Understand that these 'screen savers' really don't save your screen, current monitors die before any real burn in happens, but that is a different story.

    1. Log off of your servers.
    2. Turn off their monitors.
    3. ???
    4. Profit (*)

    (*) This will extend the monitor lifespan, reduce your energy consumption, reduce the heat given off by each system, reducing your cooling needs. Also, your network will run a LOT faster than a network with all the servers running screen savers, giving you a faster network for free (or increasing the interval between needing to upgrade your servers, thus ... more profit.)

    --
    Glonoinha the MebiByte Slayer
  11. Re:DIY - done by Permission+Denied · · Score: 4, Interesting
    OK, so I should post this before I go to work. I had some fun with it - it's about three or four hours worth of work. I didn't go with a client-server design as I only have two machines at home that can boot into windows. It should work OK for any reasonably large number of hosts. No point-and-click configuration - I don't have time for dialog design.

    Yet again, slashcode is pissing me off. I have this 100K base64 file I want to post, and it won't let me do it, not even in my journal. It lets me do it if I split it up into tiny chunks, but I don't have time for this. This has happened a few times before. Great thing is, you don't get an error message or anything when your journal entry is too big - you just get dropped into some other page with no explanation.

    OK, it works if I make it smaller by removing the built executable and split it in two. You'll need to compile yourself, and you'll need MS VS 6.0 to do it. Still pisses me off. I guess I'm not encouraged to share code on slashdot, eh?

    Below are the contents of the README:

    PDSV - Permission Denied Screensaver

    To install:

    1. copy pdsv.scr to your system32 directory.
    2. Edit pdsv.reg (this must be done separately for each individual machine)
    3. Double-click on pdsv.reg

    You need to define all of the hosts which will be running pdsv in the
    .reg file. The order of the hosts in the file is supposed to match
    physical order, left to right. It's OK if a host is in the .reg file
    but can't be reached or isn't running the screensaver: it will just skip
    over unreachable hosts, and work with them once the host joins in.

    IMPORTANT: Each machine must have a unique value for "thishost."
    "thishost" is used as an index into host0, host1, etc.

    You won't be able to move the mouse to escape the screensaver since I'm
    lazy. Hit a key or button instead.

    To compile, you'll need Visual Studio 6.0. Open up cmd.exe and type
    "nmake" to build. You may also be able to compile this with the MS
    .NET SDK, but I don't have time to download it and try right now.
    You will need to recompile if you want to change the image since the
    .bmp is built into the executable.

    Read the source for all other questions.

    This is a really stupid program, but it was fun. I spent more time
    struggling with MS Paint trying to get the .bmp file to look OK than I
    spent coding. The actual drawing stuff is six lines of code. Have fun
    with it.
  12. DALiWorld by Hank+Reardon · · Score: 5, Interesting
    How about DALiWorld

    It's a giant, multiple machine aquarium. You'll not only get fish swimming across machines in your network, but across the Internet. Here's a blurb from their site:

    At DALi we are not just building software that will allow you to have a localized world and ecology, we are building systems that will engender truly ubiquitous artificial life. We are not targeting any particular platform. Instead, we are targeting all of them. Our universe will be everywhere - bits of DALi scattered across millions of computing devices the world-over. In personal computers, portable devices, automobiles, airplanes, even your television. Our aim is to be the first company to realize the living global digital Gaia: a virtual ocean distributed across machines that span the entire non-virtual world; a community of millions of users all taking part in building this virtual ocean, creating the ecology and the life forms that inhabit it; the life forms seamlessly swimming from one machine to the next... And we want you to be our co-creator.

    The only drawback for me is that it's written in Java, so getting it to run on the FreeBSD servers in the data center didn't work.

    Have fun!

    --
    There's so little difference between politics and jihad lately...
  13. Xinerama is a bunch of X displays glued together by adb · · Score: 3, Interesting

    Currently it works in a way that means it can span multiple video cards in a single machine, but not multiple machines. X itself lets you have many pointers, but only one window can have the keyboard focus.

    The way I use these things is to have a big desktop that spans a couple of monitors along with both a mouse and a trackball for different kinds of work. But I was envisioning a giant shared desktop with many people working in it: not only could you get nitfy screen-saver effects, you could do things like passing windows or icons around between people's desktops directly. "Here are my changes to the code. Look them over before I commit them." The seamless collaboration part of the idea really floors me, and after some thought I really think Someone Should Do It (i.e., I should get off my lazy ass and code it unless someone else kindly decides to do it for me).