├── Elementary OS Install utility ├── Elementary OS Install utility.xcodeproj │ ├── xcuserdata │ │ └── samuel.xcuserdatad │ │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ └── Elementary OS Install utility.xcscheme │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ └── samuel.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ └── Elementary OS Install utility.xccheckout │ └── project.pbxproj └── Elementary OS Install utility │ ├── Images.xcassets │ └── AppIcon.appiconset │ │ ├── icon.png │ │ ├── icon-1.png │ │ ├── icon-2.png │ │ ├── icon-3.png │ │ ├── icon-4.png │ │ ├── icon-5.png │ │ ├── icon-6.png │ │ ├── icon-7.png │ │ ├── icon-8.png │ │ ├── icon-9.png │ │ └── Contents.json │ ├── main.m │ ├── Info.plist │ ├── AppDelegate.applescript │ └── Base.lproj │ └── MainMenu.xib ├── HUMANS.txt ├── INSTRUCTIONS.md ├── README.md └── LICENSE.md /Elementary OS Install utility/Elementary OS Install utility.xcodeproj/xcuserdata/samuel.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-1.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-2.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-3.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-4.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-5.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-6.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-7.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-8.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/icon-9.png -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility.xcodeproj/project.xcworkspace/xcuserdata/samuel.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sdaitzman/elementary-os-install-utility/HEAD/Elementary OS Install utility/Elementary OS Install utility.xcodeproj/project.xcworkspace/xcuserdata/samuel.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Elementary OS Install utility 4 | // 5 | // Created by Sam Daitzman on 8/16/14. 6 | // Copyright (c) 2014 Sam Daitzman. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | int main(int argc, const char * argv[]) { 13 | [[NSBundle mainBundle] loadAppleScriptObjectiveCScripts]; 14 | return NSApplicationMain(argc, argv); 15 | } 16 | -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility.xcodeproj/xcuserdata/samuel.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Elementary OS Install utility.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 7E2AAA7219A03EE3002B9C43 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /HUMANS.txt: -------------------------------------------------------------------------------- 1 | /* TEAM */ 2 | Founder/creator, developer, designer, documentation-er: Sam Daitzman 3 | Looking for help with project: yes 4 | Twitter: @sdaitzman 5 | Github: @sdaitzman 6 | Codepen: @llamaswill 7 | Email: samuel@daitzman.com 8 | From: Boston, Massachusetts 9 | 10 | /* THANKS */ 11 | Inspiration, help with BOOT vs refind names: Avi Romanoff 12 | Github: @aroman 13 | 14 | Some thumb drive burning code inspired by: Christopher Silvertooth 15 | Website: http://musings.silvertooth.us 16 | 17 | Actual useful number code from: http://www.macosxautomation.com/applescript/sbrt/sbrt-02.html 18 | 19 | getIntValue code from: http://macscripter.net/viewtopic.php?id=25830 20 | 21 | Testing: Carter McDivvit 22 | 23 | Elementary OS creators: Daniel Foré and the Elementary OS developers 24 | 25 | rEFInd developer: Roderick W. Smith 26 | 27 | Ubuntu developers: Everyone that developed Ubuntu 28 | 29 | Markdown editor: Mou 30 | 31 | Minimal markdown editor: iA Writer 32 | -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | org.sdaitzman.$(PRODUCT_NAME:rfc1034identifier) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | beta6.0.2 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 0 25 | LSMinimumSystemVersion 26 | $(MACOSX_DEPLOYMENT_TARGET) 27 | NSHumanReadableCopyright 28 | Copyright © 2014 Sam Daitzman and the Elementary OS team. This software is under a Creative Commons version 4.0 license available on the project page. 29 | NSMainNibFile 30 | MainMenu 31 | NSPrincipalClass 32 | NSApplication 33 | 34 | 35 | -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "icon.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "icon-9.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "icon-8.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "icon-7.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "icon-6.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "icon-5.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "icon-4.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "icon-3.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "icon-2.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "icon-1.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility.xcodeproj/project.xcworkspace/xcshareddata/Elementary OS Install utility.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | ECB7894F-5AA6-4722-9B66-0568172AA983 9 | IDESourceControlProjectName 10 | Elementary OS Install utility 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 742321CA278F88C3F577DF15627680F214520FC9 14 | https://github.com/sdaitzman/elementary-os-install-utility.git 15 | 16 | IDESourceControlProjectPath 17 | Elementary OS Install utility/Elementary OS Install utility.xcodeproj 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 742321CA278F88C3F577DF15627680F214520FC9 21 | ../../.. 22 | 23 | IDESourceControlProjectURL 24 | https://github.com/sdaitzman/elementary-os-install-utility.git 25 | IDESourceControlProjectVersion 26 | 111 27 | IDESourceControlProjectWCCIdentifier 28 | 742321CA278F88C3F577DF15627680F214520FC9 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 742321CA278F88C3F577DF15627680F214520FC9 36 | IDESourceControlWCCName 37 | elementary-os-install-utility 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /INSTRUCTIONS.md: -------------------------------------------------------------------------------- 1 | # Instructions: 2 | ## Assumptions about your Mac 3 | 4 | Your Mac must be fairly recent, with a core-i3/i5/i7 processor (64-bit EFI only). Hackintosh, Filevault, and Bootcamp are not officially supported - though Filevault and Bootcamp will work with additional setup. 5 | 6 | ## Installation: 7 | 8 | 1. Back everything up. No, really. Back. Everything. Up. This has been tested multiple times but anywhere there's code, there could be bugs. 9 | 2. [Download](http://cl.ly/380C3v3X0m1I/download/Elementary%20OS%20Install%20utility.app.zip) the app and open it 10 | 11 | 3. Click “Full install” and click "OK" to get started, then enter an admin name and password 12 | 4. Choose how much space to give Elementary OS in GB (Gigabytes) - slightly more than this much will be lost from your Mac and given to Elementary OS 13 | 5. Wait; this could take a while, do not stop or restart until the operation is complete. 14 | 6. Choose an ISO file downloaded from the [Elementary OS website](http://elementaryos.org) - the version must be at least Freya (0.3) which, as of this writing, is in beta 15 | 7. Click "OK" and restart your computer - you'll see the boot picker on startup 16 | 8. Press "ESC" and use the arrow keys to select the icon with the label "Boot EFI\BOOT\grubx64.efi" then select "Try Elementary OS without installing" and press enter 17 | 9. Click "Applications" in the top left and type "Terminal" then press enter. Type "`$ ubiquity -b`" into the Terminal and press enter (the dollar sign should not be typed; it just means it's for entering into a Terminal) 18 | 10. Click "Continue" then check "Install this third-party software." This will include closed-source software to allow you to play media files. You do not need to connect to a network. 19 | 11. Continue again and choose the disk you created earlier. It will be formatted fat32 with very little space used; it's probably at /dev/sda3 or /dev/sda4 20 | 12. Click "Change" in the bottom left and select "Use as: Ext4 journaling filesystem," check "Format the partition" and set the mount point to "/" then click "OK" and "Continue" if prompted 21 | 13. Click "Install now," ignoring any warnings about swap space, and select your time zone and keyboard layout (which should be auto-detected) 22 | 14. Fill out the prompts for name, username, password, etc. then continue 23 | 15. After installation is complete, click "Restart now" 24 | 16. Pray 25 | 17. When you see the boot picker, choose the icon that looks like an Elementary OS logo or a penguin 26 | 18. Have fun! 27 | 19. Boot into OS X and launch Elementary OS Install Utility again. Click "Erase installer" and enter your password - this will erase the installer so it never shows up again 28 | 29 | ## Troubleshooting 30 | - If you're unsure if your Mac has 64-bit EFI, type `$ ioreg -l -p IODeviceTree | grep firmware-abi` into the OS X Terminal - if it spits out something along the lines of `firmware-abi" = <"EFI64">` then your EFI is 64-bit! 31 | - If the boot picker stops showing up (e.g. after updating), launch the app again and click "Install Boot picker" - it should fix this 32 | - If your computer fails to restart from Elementary OS, hold down the power button for five seconds to force a shutdown - this is a known bug with a fix being worked on 33 | - If you run into any other issues, please report them! Email samuel@daitzman.com or go to http://github.com/sdaitzman/elementary-os-install-utility and click issues on the right hand side 34 | 35 | 36 | This file references Install Elementary OS Utility version 6.0.2 -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility.xcodeproj/xcuserdata/samuel.xcuserdatad/xcschemes/Elementary OS Install utility.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Elementary OS Install utility 2 | 3 | *** This tool is kept around for historical purposes. It is no longer maintained. *** 4 | 5 | ***TO RUN THIS TOOL YOU WILL NEED SYSTEM INTEGRITY PROTECTION DISABLED*** 6 | 7 | Easy-to-use utility that installs [Elementary OS](http://elementaryos.org) on your Mac and helps you boot it. 8 | This file references Install Elementary OS Utility version 6.0.2 which can be downloaded [here](http://cl.ly/380C3v3X0m1I/download/Elementary%20OS%20Install%20utility.app.zip). This tool is heavily based on [@aroman](http://github.com/aroman)'s manual [freya-on-a-mac](http://github.com/aroman/freya-on-a-mac) guide. 9 | ![Screenshot](http://f.cl.ly/items/393Y071E1W1G3z0s190M/Screen%20Shot%202014-09-04%20at%203.54.11%20PM.png) 10 | ## Instructions 11 | See [INSTRUCTIONS.md](INSTRUCTIONS.md) 12 | ## App Guide: 13 | 14 | Elementary OS Install Utility is divided into four main functions. These 15 | four functions will prepare your Mac for Elementary OS. The "Full 16 | install” button partitions your computer with space for Elementary and 17 | the installer, installs the boot picker, adds the Elementary installer, 18 | and offers to show the complete instructions. 19 | 20 | ### Partition 21 | 22 | Before installing Elementary OS, you’ll need to give it a place to 23 | install to. This step shrinks your Mac partition, and adds an empty 24 | partition for Elementary OS and an empty partition for the Elementary OS 25 | Installer. You should not perform this step multiple times; if your Mac 26 | is partitioned already and you’d like to remove the partitions, you 27 | should use Disk Utility. 28 | 29 | ### Install Boot picker 30 | 31 | When you turn on your Mac, the boot picker will ask you whether you want 32 | to boot Elementary OS or OS X. If you’ve already installed the boot 33 | picker, it’ll upgrade it to the latest version. If you stop seeing the 34 | boot picker (for example, after updating your Mac) hold the option key 35 | while booting, boot into OS X, open this app and run this step again. 36 | 37 | ### Add installer 38 | 39 | You’ll need an Elementary OS ISO file downloaded from the [Elementary 40 | OS](http://elementaryos.org) website. The ISO file must be at least version Freya (0.3). This 41 | step must be run after partitioning; it will put the installer onto the 42 | Elementary OS installer partition. 43 | 44 | ### Erase installer 45 | 46 | This step will remove the installer created in the “Add installer” step 47 | and format the partition so you don’t see the option to install 48 | Elementary OS every time you turn on your Mac. 49 | 50 | ## Building from source: 51 | 52 | Should support OOTB building from source using Xcode ≥6 - sometimes works in >6 but not reliably. 53 | 54 | The built app has been tested for OS X ≥10.9 55 | 56 | ## Credits: 57 | 58 | See HUMANS.txt 59 | 60 | ## Technical Details: 61 | 62 | Elementary OS Install Utility is a Cocoa-Applescript App created using 63 | Xcode. It uses mostly shell scripts to perform its tasks. An upcoming port to Python is planned - contact samuel@daitzman.com if you are interested :) 64 | 65 | ## Boring stuff: 66 | 67 | This tool is licensed under the file contained in LICENSE.md. The contents of LICENSE.md take priority over the following non-legalese: 68 | 69 | I will not prosecute, sue, or send grumpy emails to anyone using any 70 | part of this project for a fully open-source project. I ask that you 71 | mention me in credits, or your README, or somewhere like that if you do 72 | use this. If you make money with this, it's cool as long as you've made 73 | some changes. You absolutely may not sell this on its own. By using this 74 | project you surrender your immortal souls, now and forevermore, to Me 75 | and Me alone. They shall be claimable within one week of notification by 76 | Me or any divine or mortal representative of Me. 77 | 78 | 79 | [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/sdaitzman/elementary-os-install-utility/trend.png)](https://bitdeli.com/free "Bitdeli Badge") 80 | 81 | -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 7E2AAA7719A03EE3002B9C43 /* AppleScriptObjC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E2AAA7619A03EE3002B9C43 /* AppleScriptObjC.framework */; }; 11 | 7E2AAA7C19A03EE3002B9C43 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E2AAA7B19A03EE3002B9C43 /* main.m */; }; 12 | 7E2AAA7E19A03EE3002B9C43 /* AppDelegate.applescript in Sources */ = {isa = PBXBuildFile; fileRef = 7E2AAA7D19A03EE3002B9C43 /* AppDelegate.applescript */; }; 13 | 7E2AAA8019A03EE3002B9C43 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7E2AAA7F19A03EE3002B9C43 /* Images.xcassets */; }; 14 | 7E2AAA8319A03EE3002B9C43 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7E2AAA8119A03EE3002B9C43 /* MainMenu.xib */; }; 15 | /* End PBXBuildFile section */ 16 | 17 | /* Begin PBXFileReference section */ 18 | 7E2AAA7319A03EE3002B9C43 /* Elementary OS Install utility.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Elementary OS Install utility.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 19 | 7E2AAA7619A03EE3002B9C43 /* AppleScriptObjC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppleScriptObjC.framework; path = System/Library/Frameworks/AppleScriptObjC.framework; sourceTree = SDKROOT; }; 20 | 7E2AAA7A19A03EE3002B9C43 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 21 | 7E2AAA7B19A03EE3002B9C43 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 22 | 7E2AAA7D19A03EE3002B9C43 /* AppDelegate.applescript */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.applescript; path = AppDelegate.applescript; sourceTree = ""; }; 23 | 7E2AAA7F19A03EE3002B9C43 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 24 | 7E2AAA8219A03EE3002B9C43 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; 25 | /* End PBXFileReference section */ 26 | 27 | /* Begin PBXFrameworksBuildPhase section */ 28 | 7E2AAA7019A03EE3002B9C43 /* Frameworks */ = { 29 | isa = PBXFrameworksBuildPhase; 30 | buildActionMask = 2147483647; 31 | files = ( 32 | 7E2AAA7719A03EE3002B9C43 /* AppleScriptObjC.framework in Frameworks */, 33 | ); 34 | runOnlyForDeploymentPostprocessing = 0; 35 | }; 36 | /* End PBXFrameworksBuildPhase section */ 37 | 38 | /* Begin PBXGroup section */ 39 | 7E2AAA6A19A03EE3002B9C43 = { 40 | isa = PBXGroup; 41 | children = ( 42 | 7E2AAA7819A03EE3002B9C43 /* Elementary OS Install utility */, 43 | 7E2AAA7519A03EE3002B9C43 /* Frameworks */, 44 | 7E2AAA7419A03EE3002B9C43 /* Products */, 45 | ); 46 | sourceTree = ""; 47 | }; 48 | 7E2AAA7419A03EE3002B9C43 /* Products */ = { 49 | isa = PBXGroup; 50 | children = ( 51 | 7E2AAA7319A03EE3002B9C43 /* Elementary OS Install utility.app */, 52 | ); 53 | name = Products; 54 | sourceTree = ""; 55 | }; 56 | 7E2AAA7519A03EE3002B9C43 /* Frameworks */ = { 57 | isa = PBXGroup; 58 | children = ( 59 | 7E2AAA7619A03EE3002B9C43 /* AppleScriptObjC.framework */, 60 | ); 61 | name = Frameworks; 62 | sourceTree = ""; 63 | }; 64 | 7E2AAA7819A03EE3002B9C43 /* Elementary OS Install utility */ = { 65 | isa = PBXGroup; 66 | children = ( 67 | 7E2AAA7D19A03EE3002B9C43 /* AppDelegate.applescript */, 68 | 7E2AAA7F19A03EE3002B9C43 /* Images.xcassets */, 69 | 7E2AAA8119A03EE3002B9C43 /* MainMenu.xib */, 70 | 7E2AAA7919A03EE3002B9C43 /* Supporting Files */, 71 | ); 72 | path = "Elementary OS Install utility"; 73 | sourceTree = ""; 74 | }; 75 | 7E2AAA7919A03EE3002B9C43 /* Supporting Files */ = { 76 | isa = PBXGroup; 77 | children = ( 78 | 7E2AAA7A19A03EE3002B9C43 /* Info.plist */, 79 | 7E2AAA7B19A03EE3002B9C43 /* main.m */, 80 | ); 81 | name = "Supporting Files"; 82 | sourceTree = ""; 83 | }; 84 | /* End PBXGroup section */ 85 | 86 | /* Begin PBXNativeTarget section */ 87 | 7E2AAA7219A03EE3002B9C43 /* Elementary OS Install utility */ = { 88 | isa = PBXNativeTarget; 89 | buildConfigurationList = 7E2AAA8619A03EE3002B9C43 /* Build configuration list for PBXNativeTarget "Elementary OS Install utility" */; 90 | buildPhases = ( 91 | 7E2AAA6F19A03EE3002B9C43 /* Sources */, 92 | 7E2AAA7019A03EE3002B9C43 /* Frameworks */, 93 | 7E2AAA7119A03EE3002B9C43 /* Resources */, 94 | ); 95 | buildRules = ( 96 | ); 97 | dependencies = ( 98 | ); 99 | name = "Elementary OS Install utility"; 100 | productName = "Elementary OS Install utility"; 101 | productReference = 7E2AAA7319A03EE3002B9C43 /* Elementary OS Install utility.app */; 102 | productType = "com.apple.product-type.application"; 103 | }; 104 | /* End PBXNativeTarget section */ 105 | 106 | /* Begin PBXProject section */ 107 | 7E2AAA6B19A03EE3002B9C43 /* Project object */ = { 108 | isa = PBXProject; 109 | attributes = { 110 | LastUpgradeCheck = 0600; 111 | ORGANIZATIONNAME = "Sam Daitzman"; 112 | TargetAttributes = { 113 | 7E2AAA7219A03EE3002B9C43 = { 114 | CreatedOnToolsVersion = 6.0; 115 | }; 116 | }; 117 | }; 118 | buildConfigurationList = 7E2AAA6E19A03EE3002B9C43 /* Build configuration list for PBXProject "Elementary OS Install utility" */; 119 | compatibilityVersion = "Xcode 3.2"; 120 | developmentRegion = English; 121 | hasScannedForEncodings = 0; 122 | knownRegions = ( 123 | en, 124 | Base, 125 | ); 126 | mainGroup = 7E2AAA6A19A03EE3002B9C43; 127 | productRefGroup = 7E2AAA7419A03EE3002B9C43 /* Products */; 128 | projectDirPath = ""; 129 | projectRoot = ""; 130 | targets = ( 131 | 7E2AAA7219A03EE3002B9C43 /* Elementary OS Install utility */, 132 | ); 133 | }; 134 | /* End PBXProject section */ 135 | 136 | /* Begin PBXResourcesBuildPhase section */ 137 | 7E2AAA7119A03EE3002B9C43 /* Resources */ = { 138 | isa = PBXResourcesBuildPhase; 139 | buildActionMask = 2147483647; 140 | files = ( 141 | 7E2AAA8019A03EE3002B9C43 /* Images.xcassets in Resources */, 142 | 7E2AAA8319A03EE3002B9C43 /* MainMenu.xib in Resources */, 143 | ); 144 | runOnlyForDeploymentPostprocessing = 0; 145 | }; 146 | /* End PBXResourcesBuildPhase section */ 147 | 148 | /* Begin PBXSourcesBuildPhase section */ 149 | 7E2AAA6F19A03EE3002B9C43 /* Sources */ = { 150 | isa = PBXSourcesBuildPhase; 151 | buildActionMask = 2147483647; 152 | files = ( 153 | 7E2AAA7E19A03EE3002B9C43 /* AppDelegate.applescript in Sources */, 154 | 7E2AAA7C19A03EE3002B9C43 /* main.m in Sources */, 155 | ); 156 | runOnlyForDeploymentPostprocessing = 0; 157 | }; 158 | /* End PBXSourcesBuildPhase section */ 159 | 160 | /* Begin PBXVariantGroup section */ 161 | 7E2AAA8119A03EE3002B9C43 /* MainMenu.xib */ = { 162 | isa = PBXVariantGroup; 163 | children = ( 164 | 7E2AAA8219A03EE3002B9C43 /* Base */, 165 | ); 166 | name = MainMenu.xib; 167 | sourceTree = ""; 168 | }; 169 | /* End PBXVariantGroup section */ 170 | 171 | /* Begin XCBuildConfiguration section */ 172 | 7E2AAA8419A03EE3002B9C43 /* Debug */ = { 173 | isa = XCBuildConfiguration; 174 | buildSettings = { 175 | ALWAYS_SEARCH_USER_PATHS = NO; 176 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 177 | CLANG_CXX_LIBRARY = "libc++"; 178 | CLANG_ENABLE_MODULES = YES; 179 | CLANG_ENABLE_OBJC_ARC = YES; 180 | CLANG_WARN_BOOL_CONVERSION = YES; 181 | CLANG_WARN_CONSTANT_CONVERSION = YES; 182 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 183 | CLANG_WARN_EMPTY_BODY = YES; 184 | CLANG_WARN_ENUM_CONVERSION = YES; 185 | CLANG_WARN_INT_CONVERSION = YES; 186 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 187 | CLANG_WARN_UNREACHABLE_CODE = YES; 188 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 189 | CODE_SIGN_IDENTITY = "-"; 190 | COPY_PHASE_STRIP = NO; 191 | ENABLE_STRICT_OBJC_MSGSEND = YES; 192 | GCC_C_LANGUAGE_STANDARD = gnu99; 193 | GCC_DYNAMIC_NO_PIC = NO; 194 | GCC_OPTIMIZATION_LEVEL = 0; 195 | GCC_PREPROCESSOR_DEFINITIONS = ( 196 | "DEBUG=1", 197 | "$(inherited)", 198 | ); 199 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 200 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 201 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 202 | GCC_WARN_UNDECLARED_SELECTOR = YES; 203 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 204 | GCC_WARN_UNUSED_FUNCTION = YES; 205 | GCC_WARN_UNUSED_VARIABLE = YES; 206 | MACOSX_DEPLOYMENT_TARGET = 10.7; 207 | MTL_ENABLE_DEBUG_INFO = YES; 208 | ONLY_ACTIVE_ARCH = YES; 209 | SDKROOT = macosx; 210 | }; 211 | name = Debug; 212 | }; 213 | 7E2AAA8519A03EE3002B9C43 /* Release */ = { 214 | isa = XCBuildConfiguration; 215 | buildSettings = { 216 | ALWAYS_SEARCH_USER_PATHS = NO; 217 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 218 | CLANG_CXX_LIBRARY = "libc++"; 219 | CLANG_ENABLE_MODULES = YES; 220 | CLANG_ENABLE_OBJC_ARC = YES; 221 | CLANG_WARN_BOOL_CONVERSION = YES; 222 | CLANG_WARN_CONSTANT_CONVERSION = YES; 223 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 224 | CLANG_WARN_EMPTY_BODY = YES; 225 | CLANG_WARN_ENUM_CONVERSION = YES; 226 | CLANG_WARN_INT_CONVERSION = YES; 227 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 228 | CLANG_WARN_UNREACHABLE_CODE = YES; 229 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 230 | CODE_SIGN_IDENTITY = "-"; 231 | COPY_PHASE_STRIP = YES; 232 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 233 | ENABLE_NS_ASSERTIONS = NO; 234 | ENABLE_STRICT_OBJC_MSGSEND = YES; 235 | GCC_C_LANGUAGE_STANDARD = gnu99; 236 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 237 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 238 | GCC_WARN_UNDECLARED_SELECTOR = YES; 239 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 240 | GCC_WARN_UNUSED_FUNCTION = YES; 241 | GCC_WARN_UNUSED_VARIABLE = YES; 242 | MACOSX_DEPLOYMENT_TARGET = 10.7; 243 | MTL_ENABLE_DEBUG_INFO = NO; 244 | SDKROOT = macosx; 245 | }; 246 | name = Release; 247 | }; 248 | 7E2AAA8719A03EE3002B9C43 /* Debug */ = { 249 | isa = XCBuildConfiguration; 250 | buildSettings = { 251 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 252 | COMBINE_HIDPI_IMAGES = YES; 253 | INFOPLIST_FILE = "Elementary OS Install utility/Info.plist"; 254 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; 255 | MACOSX_DEPLOYMENT_TARGET = 10.7; 256 | PRODUCT_NAME = "$(TARGET_NAME)"; 257 | }; 258 | name = Debug; 259 | }; 260 | 7E2AAA8819A03EE3002B9C43 /* Release */ = { 261 | isa = XCBuildConfiguration; 262 | buildSettings = { 263 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 264 | COMBINE_HIDPI_IMAGES = YES; 265 | INFOPLIST_FILE = "Elementary OS Install utility/Info.plist"; 266 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks"; 267 | MACOSX_DEPLOYMENT_TARGET = 10.7; 268 | PRODUCT_NAME = "$(TARGET_NAME)"; 269 | }; 270 | name = Release; 271 | }; 272 | /* End XCBuildConfiguration section */ 273 | 274 | /* Begin XCConfigurationList section */ 275 | 7E2AAA6E19A03EE3002B9C43 /* Build configuration list for PBXProject "Elementary OS Install utility" */ = { 276 | isa = XCConfigurationList; 277 | buildConfigurations = ( 278 | 7E2AAA8419A03EE3002B9C43 /* Debug */, 279 | 7E2AAA8519A03EE3002B9C43 /* Release */, 280 | ); 281 | defaultConfigurationIsVisible = 0; 282 | defaultConfigurationName = Release; 283 | }; 284 | 7E2AAA8619A03EE3002B9C43 /* Build configuration list for PBXNativeTarget "Elementary OS Install utility" */ = { 285 | isa = XCConfigurationList; 286 | buildConfigurations = ( 287 | 7E2AAA8719A03EE3002B9C43 /* Debug */, 288 | 7E2AAA8819A03EE3002B9C43 /* Release */, 289 | ); 290 | defaultConfigurationIsVisible = 0; 291 | defaultConfigurationName = Release; 292 | }; 293 | /* End XCConfigurationList section */ 294 | }; 295 | rootObject = 7E2AAA6B19A03EE3002B9C43 /* Project object */; 296 | } 297 | -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/AppDelegate.applescript: -------------------------------------------------------------------------------- 1 | -- 2 | -- AppDelegate.applescript 3 | -- Elementary OS Install utility 4 | -- 5 | -- Created by Sam Daitzman on 3/29/14. 6 | -- Copyright (c) 2014 Sam Daitzman. All rights reserved. License available at project page. 7 | -- 8 | 9 | script AppDelegate 10 | property parent : class "NSObject" 11 | 12 | -- IBOutlets 13 | property window : missing value 14 | 15 | -- For getting disk space for Elementary 16 | property intGetterTitle : "Total space for Elementary" 17 | 18 | on applicationWillFinishLaunching_(aNotification) 19 | -- Insert code here to initialize your application before any files are opened 20 | end applicationWillFinishLaunching_ 21 | 22 | -- all of the below 23 | on ButtonHandlerInstallAll_(sender) 24 | display dialog "This Utility will set up your computer to boot both Elementary OS and OS X. Click OK to begin!" 25 | do shell script "" with administrator privileges 26 | 27 | partitionMac() 28 | installRefind() 29 | mkFrugalInstaller() 30 | display dialog "It's now safe to reboot your computer and install Elementary OS - click OK to open the instructions. You should print them if you aren't familiar with the process!" 31 | openInstructions() 32 | end ButtonHandlerInstallAll_ 33 | 34 | -- partitions the Mac with space for Elementary OS 35 | on ButtonHandlerPartition_(sender) 36 | partitionMac() 37 | display dialog "Your Mac has been successfully partitioned for Elementary OS and the Elementary OS installer" 38 | end ButtonHandlerPartition_ 39 | 40 | -- Install or update rEFInd 41 | on buttonHandlerInstallRefind_(sender) 42 | display dialog "Click OK to install the boot picker or upgrade it if it's already installed" 43 | installRefind() 44 | display dialog "The boot picker has been installed and is up-to-date!" 45 | end buttonHandlerInstallRefind_ 46 | 47 | -- DEPRECATED: creates a thumb drive to install 48 | on ButtonHandlerMkThumbDrive_(sender) 49 | display dialog "Insert your thumb drive and click \"OK\" - the thumb drive will be erased and its contents lost." 50 | delay 5 51 | -- make the thumb drive installer 52 | mkThumbDriveInstaller() 53 | display dialog "Finished! It is now safe to remove the thumb drive." 54 | end ButtonHandlerMkThumbDrive_ 55 | 56 | -- put installer on installer partition created in other step 57 | on ButtonHandlerMkInstall_(sender) 58 | display dialog "Choose the downloaded ISO file to create the installer" 59 | mkFrugalInstaller() 60 | display dialog "Installer created!" 61 | end ButtonHandlerMkInstall_ 62 | 63 | -- remove installer from installer partition 64 | on ButtonHandlerRmInstall_(sender) 65 | do shell script "diskutil reformat /Volumes/EOSINSTALL/" with administrator privileges 66 | display dialog "Installer volume reformatted" 67 | end ButtonHandlerRmInstall_ 68 | 69 | 70 | -- open Elementary OS support page 71 | on ButtonHandlerSupport_(sender) 72 | do shell script "open http://elementaryos.org/support" 73 | end ButtonHandlerSupport_ 74 | 75 | -- open instructions and app guide 76 | on ButtonHandlerOpenInstructions_(sender) 77 | openInstructions() 78 | end ButtonHandleropenInstructions_ 79 | 80 | -- quit install utility 81 | on ButtonHandlerQuit_(sender) 82 | quit 83 | end ButtonHandlerQuit_ 84 | on applicationShouldTerminate_(sender) 85 | -- Insert code here to do any housekeeping before your application quits 86 | do shell script "rm -rf ~/eosinstall" 87 | return current application's NSTerminateNow 88 | end applicationShouldTerminate_ 89 | 90 | 91 | 92 | 93 | 94 | -- BEGIN HELPER FUNCTIONS 95 | 96 | -- make space for Elementary by partitioning 97 | on partitionMac() 98 | set elementarySpace to my getIntValue() * 1073741824 99 | 100 | tell application "Finder" to set diskCapacity to capacity of startup disk 101 | 102 | -- current disk space - elementary space - a little over 2gb 103 | set newMacSpace to number_to_string(diskCapacity - elementarySpace - 2147484648) 104 | 105 | do shell script "diskutil resizeVolume / " & newMacSpace & "B 2 MS-DOS ELEMENTARY " & elementarySpace & "B MS-DOS EOSINSTALL 2G" with administrator privileges 106 | 107 | log "Mac has been partitioned" 108 | end partitionMac 109 | 110 | -- install bootpicker (rEFInd) 111 | on installRefind() 112 | 113 | -- just in case script failed earlier (even though that has never happened) erase our directory 114 | do shell script "rm -rf ~/eosinstall" with administrator privileges 115 | 116 | -- make our own directory so as not to mess up others 117 | do shell script "mkdir -p ~/eosinstall" 118 | 119 | -- download latest version of rEFInd 120 | do shell script "curl -L -o ~/eosinstall/refind.zip \"http://sourceforge.net/projects/refind/files/latest/download?source=files\"" 121 | 122 | -- unzip said rEFInd 123 | do shell script "unzip ~/eosinstall/refind* -d ~/eosinstall" 124 | 125 | -- clean up zip file 126 | do shell script "rm ~/eosinstall/refind.zip" 127 | log "downloaded and unzipped refind" 128 | 129 | -- unmount ESP 130 | do shell script "diskutil unmount /Volumes/EFI &> /dev/null &" 131 | do shell script "diskutil unmount /Volumes/ESP &> /dev/null &" 132 | log "unmounted ESP locations" 133 | 134 | -- installs rEFInd on ESP with all drivers 135 | delay 3 136 | do shell script "~/eosinstall/refind-bin*/install.sh --alldrivers --usedefault /dev/disk0s1" with administrator privileges 137 | log "ran install script" 138 | 139 | -- removes refind install folder 140 | do shell script "rm -rf ~/eosinstall/refind-bin*" 141 | 142 | -- deletes entire install folder 143 | do shell script "rm -rf ~/eosinstall" 144 | log "got rid of scratch directory" 145 | 146 | -- mount partition and erase 32-bit versions 147 | do shell script "mkdir -p /Volumes/ESP" 148 | do shell script "mount -t msdos /dev/disk0s1 /Volumes/ESP &> /dev/null &" with administrator privileges 149 | do shell script "rm /Volumes/ESP/EFI/BOOT/bootia32.efi" with administrator privileges 150 | do shell script "rm -rf /Volumes/ESP/EFI/BOOT/drivers_ia32/" with administrator privileges 151 | log "erased 32-bit rEFInd" 152 | 153 | -- bless rEFInd and unmount 154 | do shell script "bless --mount /Volumes/ESP --setBoot --file /Volumes/ESP/EFI/BOOT/bootx64.efi" with administrator privileges 155 | do shell script "diskutil unmount force /Volumes/ESP &> /dev/null &" 156 | 157 | log "unmounted ESP - rEFInd installed and blessed" 158 | end installRefind 159 | 160 | -- DEPRECATED: make thumb drive 161 | on mkThumbDriveInstaller() 162 | tell application "Finder" 163 | try 164 | set allDrives to the name of every disk 165 | on error 166 | display dialog "There are no other drives to install on." 167 | return 168 | end try 169 | end tell 170 | 171 | set selectedDrive to "driveForInstallerGoesHere" 172 | set selectedDrive to {choose from list allDrives with prompt "Choose your thumb drive from the list:"} as text 173 | set selectedDrive to "\"" & selectedDrive & "\"" 174 | 175 | # get the name of the ISO 176 | 177 | set isoFile to (choose file with prompt "Choose an Elementary OS ISO for conversion, then wait a while:" of type {"public.iso-image"}) 178 | 179 | do shell script "rm -rf ~/eosinstall &> /dev/null &" 180 | do shell script "mkdir -p ~/eosinstall" 181 | do shell script "hdiutil convert -format UDRW -o ~/eosinstall/elementary.img " & POSIX path of isoFile 182 | do shell script "mv ~/eosinstall/elementary.img.dmg ~/eosinstall/elementary.img" 183 | 184 | # select thumb drive, wipe it, and put installer on it 185 | 186 | set devicePath to POSIX path of "/Volumes/" & selectedDrive & ";" 187 | set mainDrive to do shell script "diskutil list | grep " & selectedDrive & " | grep -oh \"\\w*disk*\\w\";" 188 | 189 | do shell script "diskutil partitionDisk " & mainDrive & " 1 GPT fat32 FLASHDISK 100%" 190 | 191 | set devPath to "/dev/r" & mainDrive 192 | 193 | do shell script "diskutil unmountDisk " & devPath 194 | set userName to (short user name of (system info)) 195 | do shell script "dd if=/Users/" & userName & "/eosinstall/elementary.img of=" & devPath & " bs=1m" with administrator privileges 196 | do shell script "rm ~/eosinstall/elementary.img" 197 | do shell script "rm -rf ~/eosinstall" 198 | end mkThumbDriveInstaller 199 | 200 | -- make frugal install 201 | on mkFrugalInstaller() 202 | set isoFile to (choose file with prompt "Choose an Elementary OS ISO:" of type {"public.iso-image"}) 203 | do shell script "diskutil reformat /Volumes/EOSINSTALL/" with administrator privileges 204 | do shell script "hdiutil mount " & POSIX path of isoFile 205 | do shell script "cp -R /Volumes/elementary\\ OS/ /Volumes/EOSINSTALL/" 206 | do shell script "diskutil unmount force /Volumes/elementary\\ OS" 207 | end mkFrugalInstaller 208 | 209 | -- open complete instructions 210 | on openInstructions() 211 | tell application "Safari" 212 | activate 213 | open location "https://gitprint.com/sdaitzman/elementary-os-install-utility/blob/master/INSTRUCTIONS.md" 214 | end tell 215 | end openInstructions 216 | 217 | 218 | 219 | 220 | -- asks for integer - credit to http://macscripter.net/viewtopic.php?id=25830 221 | on getIntValue() 222 | set dlgmsg to "How many GB do you want to give Elementary OS? Slightly more than this much space will be lost from OS X." 223 | try 224 | display dialog dlgmsg default answer "15" buttons {"Cancel", "Enter"} default button 2 with title intGetterTitle 225 | on error 226 | -- User canceled 227 | return missing value 228 | end try 229 | set dlgresult to result 230 | set usrinput to text returned of dlgresult 231 | -- the user did not enter anything... 232 | if usrinput is "" then 233 | my getIntValue() 234 | else 235 | -- let's check if the user entered numbers only 236 | set nums to {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"} 237 | set invalidchars to "" 238 | repeat with char in usrinput 239 | if char is not in nums then 240 | set invalidchars to invalidchars & char & space 241 | end if 242 | end repeat 243 | -- we found invalid characters 244 | if invalidchars is not "" then 245 | set errmsg to "The following characters were in your input. Please enter numbers only." & return & return & invalidchars & return 246 | my dsperrmsg(errmsg, "--") 247 | my getIntValue() 248 | else 249 | -- let's try to transform the user input into an integer 250 | try 251 | set intvalue to usrinput as integer 252 | return intvalue 253 | on error 254 | set errmsg to "We could not coerce the given input into an integer:" & return & return & usrinput & return 255 | my dsperrmsg(errmsg, "--") 256 | my getIntValue() 257 | end try 258 | end if 259 | end if 260 | end getIntValue 261 | 262 | -- I am displaying error messages to the user 263 | on dsperrmsg(errmsg, errnum) 264 | tell me 265 | activate 266 | display dialog errmsg & " (" & errnum & ")" buttons {"OK"} default button 1 with title intGetterTitle with icon stop 267 | end tell 268 | end dsperrmsg 269 | 270 | -- converts number to string without worrying about scientific notation - credit to http://www.macosxautomation.com/applescript/sbrt/sbrt-02.html 271 | on number_to_string(this_number) 272 | set this_number to this_number as string 273 | if this_number contains "E+" then 274 | set x to the offset of "." in this_number 275 | set y to the offset of "+" in this_number 276 | set z to the offset of "E" in this_number 277 | set the decimal_adjust to characters (y - (length of this_number)) thru ¬ 278 | -1 of this_number as string as number 279 | if x is not 0 then 280 | set the first_part to characters 1 thru (x - 1) of this_number as string 281 | else 282 | set the first_part to "" 283 | end if 284 | set the second_part to characters (x + 1) thru (z - 1) of this_number as string 285 | set the converted_number to the first_part 286 | repeat with i from 1 to the decimal_adjust 287 | try 288 | set the converted_number to ¬ 289 | the converted_number & character i of the second_part 290 | on error 291 | set the converted_number to the converted_number & "0" 292 | end try 293 | end repeat 294 | return the converted_number 295 | else 296 | return this_number 297 | end if 298 | end number_to_string 299 | 300 | end script -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Creative Commons Attribution-ShareAlike 4.0 International Public License 2 | 3 | By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. 4 | 5 | Section 1 – Definitions. 6 | 7 | Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. Licensor means the individual(s) or entity(ies) granting rights under this Public License. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. Section 2 – Scope. 8 | 9 | License grant. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: reproduce and Share the Licensed Material, in whole or in part; and produce, reproduce, and Share Adapted Material. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. Term. The term of this Public License is specified in Section 6(a). Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. Downstream recipients. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). Other rights. 10 | 11 | Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. Patent and trademark rights are not licensed under this Public License. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. Section 3 – License Conditions. 12 | 13 | Your exercise of the Licensed Rights is expressly made subject to the following conditions. 14 | 15 | Attribution. 16 | 17 | If You Share the Licensed Material (including in modified form), You must: 18 | 19 | retain the following if it is supplied by the Licensor with the Licensed Material: identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); a copyright notice; a notice that refers to this Public License; a notice that refers to the disclaimer of warranties; a URI or hyperlink to the Licensed Material to the extent reasonably practicable; indicate if You modified the Licensed Material and retain an indication of any previous modifications; and indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. ShareAlike. In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. 20 | 21 | The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. Section 4 – Sui Generis Database Rights. 22 | 23 | Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: 24 | 25 | for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. Section 5 – Disclaimer of Warranties and Limitation of Liability. 26 | 27 | Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. Section 6 – Term and Termination. 28 | 29 | This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: 30 | 31 | automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or upon express reinstatement by the Licensor. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. Section 7 – Other Terms and Conditions. 32 | 33 | The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. Section 8 – Interpretation. 34 | 35 | For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. 36 | -------------------------------------------------------------------------------- /Elementary OS Install utility/Elementary OS Install utility/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | This tool will help you dual-boot Elementary OS and Mac OS X. Save all your work, back up, and get started! Some steps may take a while. 112 | 113 | 114 | 115 | 116 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 148 | 159 | 170 | 181 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 247 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 277 | 278 | 279 | 280 | 281 | 282 | 290 | 291 | 292 | 293 | 294 | 295 | --------------------------------------------------------------------------------