Menu

Tree [dea209] main /
 History

HTTPS access


File Date Author Commit
 README.txt 2009-10-20 gaelicWizard gaelicWizard [8bfd04] minor edit, no new content
 gnu.screen.plist 2021-07-12 John D Pell John D Pell [080ad8] Modernize launchd plist
 screenAppAttach.sh 2021-07-12 John D Pell John D Pell [dea209] Merge screen.bash and screenAppAttach.sh in to ...

Read Me

#!/usr/bin/open -e

UPDATE: PRELIMINARY Snow Leopard support has been hacked in, pending resolution of a bug report. This support is experimental. The launchd(1) plist is disabled for this hack.

IMPORTANT: The last time tested, this package is non-functional on Mac OS X v10.6 Snow Leopard. This is due to a change in Apple's libraries which cause screen(1) to exit prematurely when its attempt to move itself to a different bootstrap namespace fails, due to a change in Apple's libraries which prevent changing bootstrap namespace from a job started non-anonymously (i.e., via a plist instead of via LaunchServices or whatever).

INSTALLATION:
    Double-click on SetupScreen.command and THAT'S IT!
    
    This will install three files in your home:
        ~/Tools/screenAppAttach.sh
        ~/.rc.d/screen_app_rc
        ~/Library/LaunchAgents/gnu.screen.plist
    Then, two preferences will be changed:
        com.apple.Terminal/Shell will be set to ~/Tools/screenAppAttach.sh
        "source ~/.rc.d/screen_app_rc" will be added to the end of .bashrc


INFO:

My name is John. I use screen(1) constantly. I wrote a few little tid-bits to make it work a little bit better for me. I hope these help you to. If you make any improvements, please post bugs and patches on http://sourceforge.net/projects/screen-osx .


There are three files in this project:

Screen/screenAppAttach.sh
Screen/screen
Screen/gnu.screen.plist

Screen/screenAppAttach.sh is the heart of the project. Set this as the command to run in Terminal.app (or whatever you use). Then, every time you open a new Terminal window you get attached into your screen session automatically. Ok. Big deal, right? You could just do /usr/bin/screen as your command to run and you'll get the same thing, right? Almost. By attaching through this script, your pre-screen-environment is actually saved into a file before attaching. That's where the second file comes in.

Screen/screen is a snippit from .bashrc. In particular, it sets the PROMPT_COMMAND variable so that the environment saved by screenAppAttach.sh is loaded *inside* screen. Who cares?! Well, if you leave screen running in the background for long periods of time, then you do! If not, then you don't need this package. A little bit smarter: what if you have DISPLAY set differently in different situations, such as... when logging in via ssh(1)? Well, that's taken care of right here!

Screen/gnu.screen.plist is a launchd(1) plist (for Mac OS X, required) which starts screen such that it isn't a child of your shell, but actually running independently. Sort of a screen-server in the background. This protects against things breaking when you close the first terminal window, due to a broken "bootstrap namespace" (used on Mac OS X for efficient IPC). Note: Mac OS X 10.6 resolves this bug, so this plist becomes much less useful but it is still required due to the architecture of this package.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.