
Show HN: Universal Pause Button - RyanRies
https://github.com/ryanries/UniversalPauseButton
======
tomkinstinch
This is nice! On OSX, processes can be paused and continued too (by name via
killall, and by PID via kill):

    
    
      kill -STOP 1234
      kill -CONT 1234
    
      killall -STOP -c "Pandora"
      killall -CONT -c "Pandora"
    

A more nuanced control is to throttle down the CPU, via cputhrottle[1].

If I'm running a CPU-intensive calculation and don't want to bog down the rest
of my system I will use it to give me enough cycles for Sublime Text to work
smoothly.

It's easy to call:

    
    
      sudo cputhrottle PID cpuUsage%

ex.

    
    
      sudo cputhrottle 12345 400
    

1\.
[http://www.willnolan.com/cputhrottle/cputhrottle.html](http://www.willnolan.com/cputhrottle/cputhrottle.html)

~~~
rsync
"This is nice! On OSX, processes can be paused and continued too"

Every once in a while I am reminded how wonderful, and perhaps unlikely, it is
that I have a nice, slick, mass market consumer device (apple computer running
OS X) that is honest to god UNIX underneath.

And then sad, knowing that this is a brief golden age that will probably pass.

~~~
bbcbasic
Don't worry. Linux is slicker.

~~~
vonklaus
As someone who just switched to Linux from OS X, it is really hard to migrate.
I miss the subtleties of the apple ecosystem. Sure Linux is awesome, but I
have been battling trackpad support issues, keymapping the super_key to CMD,
and just general battling the UX.

tl;dr a more powerful operating system with worse UI, which is the obvious
trade. A less powerful system with a fantastic UI.

~~~
dripton
UI is subjective. I get mildly annoyed whenever I use a Mac. Little things
like having to click on a window to give it focus, or having to use command
instead of control in many programs, break my flow. I'd probably get used to
those if I only used a Mac, but since I use Linux 95% of the time and Mac 5%,
I never do.

~~~
globuous
Honestly, i don't mind the window focusing on mac. What I absolutely fucking
hate though, is working on Windows and not being able to scroll on a window
that's not active. By default on Mac, if a window's focused, you can scroll
another (unfocused) window by scrolling when you mouse is over it. Without
having to refocus windows, which is really nice when you're typing something
on the focused window.

As for the cmd button replacing the ctrl button. Never going back to
ctrl+<key> for shortcuts. The command button is so much nicer to use, it's
your thumb vs you pinky. You don't need to stretch you pinky/move you hand
slightly to have access to shortcuts and that's so nice. VERY desturbing at
first (I hated it), but never going back. Or maybe I've just gotten used to
using my thumb. Ultimately, I think it makes a lot more sense though. No more
alt-F4 to close windows, its cmd+Q, no more ctrl+B to bold a text, it's cmd+b,
cmd+h minimizes/hides your window etc etc.

Also, what i found infinitely annoying at first and that I really like now on
Mac, is the window switching with the keyboard. On Windows, alt+tab switches
between all windows (including different instances of same program). on Mac,
alt+tab switches between applications and alt+` switches between different
instances of a said program. I find that more elegant when you have a lot of
windows opened, which i always have.

But all these are tiny little things that add up to something really nice to
use, but each individually don't and will never justify OS X being _the best
OS in the world blah blah_. You can probably achieve a similar behavior on
windows/Linux/whatever. What's nice about it though is that it's the default
setup, no third party app needed/config files. You install it and it makes
sense. That's why I'm not switching from OS X anytime soon, it's ergonomic,
the UI is sick, power user features everywhere, and a real unix. I see it as a
linux that works perfectly out of the box. I remember the first month I spent
on OS X (coming from 4 years of linux, 2 yr Ubuntu and 2 yr Arch, using both
full desktop env (KDE mostly) and lightweigth window managers), everything
works and works well and everything is ergonomic and makes sense. Put simply,
a Mac never (or very rarely) gets in the way of your work. And that makes a
big difference.

But then, I just like Macs because of how I use my computer. I get it that
some might prefer a Linux or Windows, and I respect that. I'm just extremely
thankful OS X answers exactly what I expect from a computer.

~~~
e_proxus
For Windows, Katmouse alleviates some of the pain of scroll focus:
[http://ehiti.de/katmouse/](http://ehiti.de/katmouse/)

------
NamTaf
Great app but I have one request. Can you please modify it so instead of
pausing the game until my SO is done talking, it pauses my SO until my game is
done its cutscene? Thanks in advance.

~~~
JetSpiegel
Ah, I didn't know Adam Sandler posted on Hacker News.

------
samspot
This should be a basic requirement for all games. Even before I was married my
mom would call or someone would ring the doorbell. And when I was a kid I had
to go down to dinner or take out the trash.

~~~
fixermark
"Tricks of the Mac Game Programming Gurus [[http://www.amazon.com/Tricks-Mac-
Game-Programming-Gurus/dp/1...](http://www.amazon.com/Tricks-Mac-Game-
Programming-Gurus/dp/1568301839\]") actually dedicated about a paragraph or
two to the topic, driving home the point that a game that cannot be paused is
leaving N% of potential players on the table right out of the starting gate
(and I believe they even had a hypothetical about "little Jimmy" not being
able to pause to take out the trash and therefore his parents uninstall the
game).

These days of MMOs and other coordinated time-sinks make me miss the
simplicity of pausable single-player and turn-based multiplayer sometimes.

~~~
freehunter
That is probably 90% of the reason I stopped playing multiplayer games. Which
sucks because the number of single player games I want to play is, I feel,
getting smaller over the years. There was a day when first person shooters, no
matter how good the multiplayer was, had a single player campaign as well.
There was a day (even when processors were absolute shit) when you could add
bots into the game and they would play like humans with personalities.

Hell, even the single player games are getting to be unpausable. How many cut
scenes are there in GTAV? And if other duties are at hand, the only option is
to skip the story line so you can pause.

------
frik
Great idea, will be helpful.

Now, I only need a similar tool that kills the process with the highest CPU
and MEMORY load with a short cut. Reasons: Sometimes a process leaks memory
and fills up 16GB RAM and opening a new process like taskmgr is impossible to
severe paging-IO. Sometimes a full screen application crash and spawns a modal
crash dialog behind the full screen window so only taskmgr and keyboard usage
works (as the mouse is hidden by the crashed full screen app).

~~~
Hello71
Magic SysRq-F

~~~
arebours
Wooow, thanks a lot! I'm going to test it now.

Edit: Not working as expected :(

Run python script that allocated a couple of gigabytes of RAM effectively
causing my machine to freeze. And OOM killer figured out the best thing it can
do is this:

    
    
      [2889118.406439] Out of memory: Kill process 11878 (SpotifyHelper) score 302 or sacrifice child
      [2889118.406442] Killed process 11878 (SpotifyHelper)

~~~
simias
Such are the ways of the OOM killer:
[http://lwn.net/Articles/104185/](http://lwn.net/Articles/104185/)

------
RyanRies
You can also download the executable (if you don't want to compile it) from
[https://www.myotherpcisacloud.com/post/universal-pause-
butto...](https://www.myotherpcisacloud.com/post/universal-pause-button)

~~~
nacs
You should consider uploading that file to the Github repo in the "Releases"
section so people can find it easier.

~~~
RyanRies
Good idea.

------
scandinavian
"I've already gotten great value out of the program, as there are lots of cut
scenes in The Witcher 3, that I don't want to skip."

The Witcher 3 pauses cutscenes when the window is not in focus. So the example
is probably not the greatest.

~~~
unoti
My son has been playing Witcher 3 for the last few weeks, and literally every
time I walk by, there's a cutscene. I'm pretty sure I have yet to see anything
_but_ cutscenes. It's all cutscenes. Listening to it in the background, it
sounds more like an episode of Sons of Anarchy than a traditional videogame.

~~~
etcet
The script is apparently ~450,000 words! I have 28 hours of playtime but the
game only shows me at 17% completion - its massive and detailed open world is
stunning.

~~~
geon
450 kwords? That's like 2-3 large novels...

~~~
robbiep
1984 was around 85,000 words (from memory). So 5 times that

~~~
geon
Wolfram Alpha says average word length in English is 5.1 chars.

450000 words * 5.1 bytes ≈ 2.2 MiB

I like to read novels on my phone in plaintext format. 2001 by Clarke is 368
kiB. Red Mars by Kim Stanley Robinson is 1.1 MiB.

1984 would be 423 kiB, which I consider pretty normal, not "large". But that's
subjective, I guess.

------
kozukumi
Nice idea and app. Having a quick look at the code I had forgotten how much
work needed to be done for old-skool Windows applications. They do give you
great lean applications though which is something I miss.

I will always have a soft spot for small, lean single function applications. I
guess it takes me back to my UNIX days. Some of my favourite more modern
programs are SumatraPDF, uTorrent (the older 2.x versions) and Notepad2,
lovely single exe programs that are self-contained. No installers and messy
configs all over the place or in the registry.

~~~
tehwalrus
Sumatra PDF is the best. I actually prefer it, running under wine, to any of
the Linux PDF readers I've tried. I used I to write/preview my thesis.

~~~
veli_joza
Did you try Foxit reader? They actually have a Linux build that is not as
feature-full as other releases, but still better than any native Linux PDF
reader.

------
ubercow13
You can do this to any process in Windows' Resource Monitor too - the one you
can open from task manager. On the CPU tab you can right click any process and
suspend it.

~~~
rip747
not seeing this in Windows 7. Is this specific to Windows 8 and above?

~~~
amadeusw
From Task Manager, open Resource Monitor. That's the one with green charts on
the right hand side. It has different context menu than the Task Manager.
Picture (on windows 8): [http://thewindowsclub.thewindowsclubco.netdna-
cdn.com/wp-con...](http://thewindowsclub.thewindowsclubco.netdna-cdn.com/wp-
content/uploads/2014/01/Wait-Chain-Traversal-resmon.jpg) I'm not sure if
Windows 7 has it, though.

~~~
gnud
Win7 has it. In task manager, go to the Performance tab, and then press the
"Resource Monitor" button.

Or run `perfmon /res`.

------
arcatek
That's interesting. However, I wonder ... don't you think it can be abused in
some games that try to compensate lag? For example, what if they use a code
similar to:

    
    
      delay = currentFrameTime - lastFrameTime
      playerPosition += direction * delay
    

I know that some games (such as Diablo III) may automaticallt ban you if you
happen to run a program that may be used to cheat (they detect that via a
background process check).

~~~
frik
He wrote it's useful for singleplay games that have an intro. If you use it in
multiplayer games you certainly will simply drop out of the game as you will
loose the connection or what you described depending on the server
implementation.

~~~
kedean
That doesn't just apply to multiplayer, though. OP said Diablo 3, which is
multi OR single player. Many games now use those phone-home anti-cheating
measures (or drm measures) even when you aren't actually playing with anyone
else.

~~~
arcatek
Is Diablo III single player? When I played it at the release, connecting to a
remote server was required (which is a shame, btw. I will miss the modding
community that Diablo II had).

~~~
ConAntonakos
It _can_ be single-player, but you still need a connection to do so.

~~~
LMAlVvQjSGj
Is this also true for the console port(s)?

------
savanaly
Now if only there was a Universal Skip Button for those games with unskippable
credits, intros or cutscenes!

~~~
ars
This actually is sort of possible, you have to mess with the system clock as
seen by the program, to make it think much more time has passed than really
passed. It will run those scenes at hyperspeed.

Then give back the time later (if you need the clock to match the real clock)
when it's waiting for input.

~~~
cheepin
There was a program called cheat engine that let you drag a slider for program
speed, as well as generally dig around RAM.

------
ifdefdebug
Indeed some deep nesting here. You made me remember a quickbasic program I
wrote for a class back in early 90s, where I packed the whole program in a
single do-loop with about 20 indent levels at it's deepest, and I loved it.
But... the prof told me to never do that again :( Anyway, thanks a lot for the
flashback :)

~~~
RyanRies
Agreed, it's not the most elegant code, but it's so short and simple I haven't
bothered reorganizing the code yet. I probably will start adding features like
re-bindable pause key, etc., and I will untangle the mess a bit at that time.

~~~
asddubs
quickest way to do it is to negate your if conditions in the loop something
like this:

    
    
        if (ForegroundWindow)
        {
            ...
        }
        else
        {
            MessageBox(NULL, L"Unable to detect foreground window!", L"UniversalPauseButton Error", MB_OK | MB_ICONERROR);
        }
    

becomes

    
    
        if (!ForegroundWindow)
        {
            MessageBox(NULL, L"Unable to detect foreground window!", L"UniversalPauseButton Error", MB_OK | MB_ICONERROR);
            break;
        }
        ...

------
lettergram
Without reading the explanation, immediately my roommate and I figure out how
to do it via the linux terminal by pausing the main thread. It seems so
obvious, don't know why I wasn't doing this myself.... since I have the same
problem as the OP.

------
deevus
@OP

I've added this to the scoop-extras bucket for Scoop[0]. So users with the
extras bucket can install it using:

    
    
      scoop install universalpausebutton
    

EDIT: Do you have a licence?

[0]: [http://scoop.sh](http://scoop.sh)

~~~
RyanRies
Thank you! Added MIT license.

------
ohitsdom
Really clever. What a thoughtful project, too. Hope your SO appreciates the
work you put in on it!

------
snorkel
Wow, coded like a simple old school Win32 API win app, I didn't realize that
was still possible in modern Visual Bloatio. Nicely done.

~~~
RyanRies
My favorite kind of application. Small, lean, close to the metal, and built
like a brick house. :)

------
Drdrdrq
I love this!!! The pause button was incredibly useful when trying to figure
out what went wrong with DOS boot sequence. I wonder if it would be possible
to include support for it in Linux kernel? Sometimes I would like to read
those messages that fly over the screen (no, dmesg is not enough)...

~~~
simias
This program doesn't pause the kernel, just the game's process. Other people
in this thread have given equivalent solutions for un*x.

If you want to actually pause the linux kernel you'll have to use something
like the magic SysRq:
[https://en.wikipedia.org/wiki/Magic_SysRq_key](https://en.wikipedia.org/wiki/Magic_SysRq_key)

Alternatively you can run the operating system in an emulator like qemu.

------
VLM
This specific example is nice although not truly universal.

An interesting startup idea would be a bluetooth thingy (kinda vague, maybe a
necklace?) that when pushed becomes a TRUE universal pause button. Pauses my
DVR, my car audio, my linux mythtv box, everything, silences my phone ringer,
mutes the TV, shuts off the alarm clock, temp-mutes the smoke alarm if its
currently going off, silence the oven timer, car alarm off if its currently
sounding, you name it.

Sounds technologically possible although a huge PITA, which sounds like a
great startup idea.

You might need to ram thru a whole new bluetooth LE broadcast protocol, maybe.
Or just a blind beacon of "anything" thats sniffable (edited: whoops that
wouldn't work so well with silenced burglar alarm systems).

I suspect this would sell pretty well once it gets universal...

~~~
shabble
years and years ago I had some thoughts tumbling around about how I'd design
an automated system for muting/vibrate-mode only for phones in
cinemas/libraries/quiet-zones, etc.

The security implications and UX involved in managing settings in a non-
infuriating fashion rapidly sunk it though, and I daresay it would never have
been practically deployable unless business/landowners/whatever could enforce
its use as a condition of entry.

Also, you forgot the hollow tooth + airbag components + RF magic => remote
operated ball-gag :P

------
frik
Win10Phone/Android/iOS apps are suspended and restored the same ways too. Only
the visible app (and some system processes) is running in iOS1-8 (in iOS9
iPadAir2 two apps). It's usually unused in desktop OS (except for universal
apps in Win10).

------
Carrok
I would love this for Mac, not for games but for all browser tabs. Find
whichever tab I'm playing music in, and pause it, whether it be SoundCloud,
YouTube, or some other streaming something. Fantastic idea though!

~~~
ihuman
At WWDC, they announced that the new Safari version would be able to do
something like that.

~~~
Artemis2
That's only muting tabs, which Chrome has been doing for years.

------
hittudiv
Always used to watch those cutscenes on youtube! Awesome app btw.

------
janinge
Having a modernized pause/break key on your keyboard can also be handy if you
ever have to use software that acts stupid on purpose, like these "Safe Exam
LockDown Browsers" that some schools and universities around here have started
forcing upon their students. Software like this typically just run a timer or
similar to make sure that only their windows are running in the foreground,
but sending them a SIGSTOP stops this annoyance.

------
amelius
But what if the process uses a timer to update an animation? (I.e., the state
of the timer determines the frame in the animation).

In that case, after unpausing, the animation would just skip ahead.

As a remedy, the pause button could also stop the system clock as seen by the
process.

~~~
RyanRies
Yep, different applications are guaranteed to react differently to this,
depending on how they were written. And a lot of games use the _rdtsc
intrinsic straight from the CPU... I can't pause that. :)

~~~
amelius
You could write a virtual machine that compiles all code into essentially the
same code except for the rdtsc instruction (basic-block analysis).

That is a lot of work, but I wonder if there are no debugging or reverse-
engineering tools that work in that way.

------
kilolima
Wouldn't it be easier if your girlfriend would not expect that she can walk in
and interrupt you any time she wants?

~~~
RyanRies
Well, maybe. But then maybe I wouldn't have a girlfriend. And more
importantly, maybe I wouldn't be reminded that sometimes it's OK to peel
myself away from a video game.

------
est
Reminds me of old utility which could resize any DirectX based game and force
them run in windowed mode.

------
murbard2
For a fraction of a second, part of me really hoped it could somehow be a
pause button for life itself.

------
miket
Would love to have this for email.

------
seba_dos1
aka "Windows users discover our CTRL+Z" :) Been doing that very often during
Ludum Dare where the best games have usually very fine gameplay and very poor
everything else, like lack of pause or progress save - surely came handy.

------
72deluxe
On OSX you can use Activity Monitor to use View > Send Signal To Process....

------
jdlyga
It even pauses video studio! It really is universal.

------
mattbgates
Damn, I thought this was for real life.. could've used one of those. Better
than hitting snooze 10 times.

------
Dewie3
It wasn't until MGS4 before the Metal Gear Solid franchise got cutscenes which
you could pause. Which was sorely needed because of how story driven the
series is, and how long some of the cutscenes are -- I think the end of MGS4
was something like 1 hour, 30 min.

------
neutralino1
Can we pause the significant other too?

------
cool-RR
_" I like to play video games. I also have a significant other, and she often
walks into the room to talk to me while I'm playing a video game."_

Looks like the real solution would be to pause your SO ;)

~~~
jerf
I encountered this problem with babies. They _definitely_ don't pause.

My solution was the DS/3DS line of consoles... snap 'em shut, bam, paused.
I've called them the consoles of choice for the discriminating father.

(If you've never had kids and find yourself wondering what horrible father
would be playing video games while taking care of his children, well, you see,
it turns out that sometimes your child wants to sleep on somebody, and will
not sleep any other way... and there's only so many things you can do with a
baby that cries if you move sleeping on you. Both of my kids went through that
phase for different reasons.)

~~~
ConAntonakos
Does the Xbox One not do this? I mean suspend gameplay and resume with just a
touch of a button?

~~~
s_kilk
I believe the PS4 does this too.

------
kpennell
test comment!!

