├── 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 | 
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 | [](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 |
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 |
--------------------------------------------------------------------------------