mirror of
https://github.com/wez/wezterm.git
synced 2024-12-22 21:01:36 +03:00
Add basic install script and icon
The icon comes from "Smoothicons 7" by Corey Marion which I found as a royalty free icon searching the internet. I would love to have a purpose built icon, but this is sufficient for now. The install script sets up a macOS application bundle that references the generated wezterm binary and the icon. The same technique could be used to generate a .desktop file for linux. I've changed the default-prog on macos to be `login -pf $USER` as that is a better default experience on macOS.
This commit is contained in:
parent
967d43d57c
commit
67a57f12af
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
.DS_Store
|
||||
/Cargo.lock
|
||||
/target/
|
||||
**/*.rs.bk
|
||||
|
BIN
assets/icon/terminal.ico
Normal file
BIN
assets/icon/terminal.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
BIN
assets/icon/terminal.png
Normal file
BIN
assets/icon/terminal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.0 KiB |
56
assets/macos/WezTerm.app/Contents/Info.plist
Normal file
56
assets/macos/WezTerm.app/Contents/Info.plist
Normal file
@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>wezterm</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.github.wez.wezterm</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>WezTerm</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.1.0</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>terminal.icns</string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
<true/>
|
||||
<key>NSMainNibFile</key>
|
||||
<string></string>
|
||||
<key>NSSupportsAutomaticGraphicsSwitching</key>
|
||||
<true/>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>WezTerm</string>
|
||||
<key>NSRequiresAquaSystemAppearance</key>
|
||||
<string>NO</string>
|
||||
<key>NSAppleEventsUsageDescription</key>
|
||||
<string>An application launched via WezTerm would like to access AppleScript.</string>
|
||||
<key>NSCalendarsUsageDescription</key>
|
||||
<string>An application launched via WezTerm would like to access calendar data.</string>
|
||||
<key>NSCameraUsageDescription</key>
|
||||
<string>An application launched via WezTerm would like to access the camera.</string>
|
||||
<key>NSContactsUsageDescription</key>
|
||||
<string>An application launched via WezTerm wants to access your contacts.</string>
|
||||
<key>NSLocationAlwaysUsageDescription</key>
|
||||
<string>An application launched via WezTerm would like to access your location information, even in the background.</string>
|
||||
<key>NSLocationUsageDescription</key>
|
||||
<string>An application launched via WezTerm would like to access your location information.</string>
|
||||
<key>NSLocationWhenInUseUsageDescription</key>
|
||||
<string>An application launched via WezTerm would like to access your location information while active.</string>
|
||||
<key>NSMicrophoneUsageDescription</key>
|
||||
<string>An application launched via WezTerm would like to access your microphone.</string>
|
||||
<key>NSRemindersUsageDescription</key>
|
||||
<string>An application launched via WezTerm would like to access your reminders.</string>
|
||||
</dict>
|
||||
</plist>
|
BIN
assets/macos/WezTerm.app/Contents/Resources/terminal.icns
Normal file
BIN
assets/macos/WezTerm.app/Contents/Resources/terminal.icns
Normal file
Binary file not shown.
16
install.sh
Executable file
16
install.sh
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
case $OSTYPE in
|
||||
darwin*)
|
||||
APP=$HOME/Applications/WezTerm.app
|
||||
cargo build --release
|
||||
rm -rf $APP
|
||||
cp -r assets/macos/WezTerm.app $APP
|
||||
cp target/release/wezterm $APP
|
||||
echo "Installed to $APP"
|
||||
;;
|
||||
*)
|
||||
echo "Don't know how to install the app on this system"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
@ -381,10 +381,37 @@ impl Config {
|
||||
cfg
|
||||
}
|
||||
|
||||
/// On macOS, we get launched from: eg: spotlight or alfred
|
||||
/// or the finder with whatever SHELL was set to at login time
|
||||
/// (which have been subsequently changed via `chsh`) and with
|
||||
/// a cwd=/.
|
||||
/// That feels a bit broken, so we follow the lead of
|
||||
/// Terminal.app and use `login -pf $USER` as the default
|
||||
/// program to run.
|
||||
/// This function computes and returns that command.
|
||||
/// We don't do this on Linux because the linux `login`
|
||||
/// program refuses to run except when started by root.
|
||||
#[cfg(target_os = "macos")]
|
||||
fn macos_login() -> Result<Vec<String>, Error> {
|
||||
let ent = unsafe { libc::getpwuid(libc::getuid()) };
|
||||
if ent.is_null() {
|
||||
bail!("unable to resolve my own uid");
|
||||
} else {
|
||||
let name = unsafe { std::ffi::CStr::from_ptr((*ent).pw_name) };
|
||||
let name = name.to_str().map(str::to_owned)?;
|
||||
Ok(vec!["login".to_owned(), "-pf".to_owned(), name])
|
||||
}
|
||||
}
|
||||
|
||||
pub fn default_prog(&self) -> Result<Vec<String>, Error> {
|
||||
if let Some(prog) = self.default_prog.as_ref() {
|
||||
Ok(prog.clone())
|
||||
} else {
|
||||
if cfg!(target_os = "macos") {
|
||||
if let Ok(login) = Self::macos_login() {
|
||||
return Ok(login);
|
||||
}
|
||||
}
|
||||
Ok(vec![get_shell()?])
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user