mirror of
				https://github.com/alacritty/alacritty.git
				synced 2025-10-30 23:36:53 -04:00 
			
		
		
		
	Remove the launcher and set the locale/current directory in alacritty (#879)
This commit is contained in:
		
							parent
							
								
									9bdac6b50a
								
							
						
					
					
						commit
						94caa7667d
					
				
					 7 changed files with 67 additions and 18 deletions
				
			
		
							
								
								
									
										1
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -28,6 +28,7 @@ dependencies = [
 | 
			
		|||
 "mio 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "mio-more 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "notify 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "objc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "parking_lot 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "serde 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "serde_derive 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,6 +40,9 @@ env_logger = "0.4"
 | 
			
		|||
[target.'cfg(any(target_os = "linux", target_os = "freebsd", target_os="dragonfly", target_os="openbsd"))'.dependencies]
 | 
			
		||||
x11-dl = "2"
 | 
			
		||||
 | 
			
		||||
[target.'cfg(target_os = "macos")'.dependencies]
 | 
			
		||||
objc = "0.2.2"
 | 
			
		||||
 | 
			
		||||
[features]
 | 
			
		||||
default = []
 | 
			
		||||
# Enabling this feature makes shaders automatically reload when changed
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,9 +5,9 @@
 | 
			
		|||
    <key>CFBundleDisplayName</key>
 | 
			
		||||
    <string>Alacritty</string>
 | 
			
		||||
    <key>CFBundleExecutable</key>
 | 
			
		||||
    <string>launcher</string>
 | 
			
		||||
    <!-- <key>CFBundleIdentifier</key> -->
 | 
			
		||||
    <!-- <string>alacritty</string> -->
 | 
			
		||||
    <string>alacritty</string>
 | 
			
		||||
    <key>CFBundleIdentifier</key>
 | 
			
		||||
    <string>io.alacritty</string>
 | 
			
		||||
    <key>CFBundleName</key>
 | 
			
		||||
    <string>Alacritty</string>
 | 
			
		||||
    <key>CFBundleIconFile</key>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,15 +0,0 @@
 | 
			
		|||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# Dynamically discover canonical path to alacritty binary
 | 
			
		||||
BIN_DIR=$(cd "$(dirname "$0")"; pwd)
 | 
			
		||||
 | 
			
		||||
# Query OS for locale and setup alacritty shell to conform
 | 
			
		||||
ALACRITTY_LOCALE="$(osascript -e "return user locale of (get system info)")"
 | 
			
		||||
export LANG="${ALACRITTY_LOCALE}.UTF-8"
 | 
			
		||||
export LC_CTYPE="${ALACRITTY_LOCALE}.UTF-8"
 | 
			
		||||
 | 
			
		||||
# Start alacritty in user's home directory
 | 
			
		||||
cd "$HOME"
 | 
			
		||||
 | 
			
		||||
# Engage
 | 
			
		||||
exec "$BIN_DIR/alacritty"
 | 
			
		||||
| 
						 | 
				
			
			@ -29,6 +29,10 @@
 | 
			
		|||
#[cfg(any(target_os = "linux", target_os = "freebsd", target_os="dragonfly", target_os="openbsd"))]
 | 
			
		||||
extern crate x11_dl;
 | 
			
		||||
 | 
			
		||||
#[cfg(target_os = "macos")]
 | 
			
		||||
#[macro_use]
 | 
			
		||||
extern crate objc;
 | 
			
		||||
 | 
			
		||||
extern crate arraydeque;
 | 
			
		||||
extern crate cgmath;
 | 
			
		||||
extern crate copypasta;
 | 
			
		||||
| 
						 | 
				
			
			@ -61,6 +65,7 @@ pub mod event_loop;
 | 
			
		|||
pub mod grid;
 | 
			
		||||
pub mod index;
 | 
			
		||||
pub mod input;
 | 
			
		||||
pub mod locale;
 | 
			
		||||
pub mod logging;
 | 
			
		||||
pub mod meter;
 | 
			
		||||
pub mod renderer;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										47
									
								
								src/locale.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								src/locale.rs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,47 @@
 | 
			
		|||
// Copyright 2016 Joe Wilm, The Alacritty Project Contributors
 | 
			
		||||
//
 | 
			
		||||
// Licensed under the Apache License, Version 2.0 (the "License");
 | 
			
		||||
// you may not use this file except in compliance with the License.
 | 
			
		||||
// You may obtain a copy of the License at
 | 
			
		||||
//
 | 
			
		||||
//     http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
//
 | 
			
		||||
// Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
// distributed under the License is distributed on an "AS IS" BASIS,
 | 
			
		||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
			
		||||
// See the License for the specific language governing permissions and
 | 
			
		||||
// limitations under the License.
 | 
			
		||||
#![cfg(target_os = "macos")]
 | 
			
		||||
use std::os::raw::c_char;
 | 
			
		||||
use std::slice;
 | 
			
		||||
use std::str;
 | 
			
		||||
use std::env;
 | 
			
		||||
 | 
			
		||||
use objc::runtime::{Class, Object};
 | 
			
		||||
 | 
			
		||||
pub fn set_locale_environment() {
 | 
			
		||||
    let locale_id = unsafe {
 | 
			
		||||
        let locale_class = Class::get("NSLocale").unwrap();
 | 
			
		||||
        let locale: *const Object = msg_send![locale_class, currentLocale];
 | 
			
		||||
        msg_send![locale_class, release];
 | 
			
		||||
        let identifier: *const Object = msg_send![locale, localeIdentifier];
 | 
			
		||||
        msg_send![locale, release];
 | 
			
		||||
        let identifier_str = nsstring_as_str(identifier).to_owned();
 | 
			
		||||
        msg_send![identifier, release];
 | 
			
		||||
        identifier_str
 | 
			
		||||
    };
 | 
			
		||||
    let locale_id = locale_id + ".UTF-8";
 | 
			
		||||
    env::set_var("LANG", &locale_id);
 | 
			
		||||
    env::set_var("LC_CTYPE", &locale_id);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const UTF8_ENCODING: usize = 4;
 | 
			
		||||
 | 
			
		||||
unsafe fn nsstring_as_str<'a>(nsstring: *const Object) -> &'a str {
 | 
			
		||||
    let cstr: *const c_char = msg_send![nsstring, UTF8String];
 | 
			
		||||
    let len: usize = msg_send![nsstring, lengthOfBytesUsingEncoding:UTF8_ENCODING];
 | 
			
		||||
    str::from_utf8(slice::from_raw_parts(cstr as *const u8, len)).unwrap()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(not(target_os = "macos"))]
 | 
			
		||||
pub fn set_locale_environment() {}
 | 
			
		||||
| 
						 | 
				
			
			@ -24,12 +24,15 @@ extern crate log;
 | 
			
		|||
 | 
			
		||||
use std::error::Error;
 | 
			
		||||
use std::sync::Arc;
 | 
			
		||||
use std::env;
 | 
			
		||||
 | 
			
		||||
use alacritty::cli;
 | 
			
		||||
use alacritty::config::{self, Config};
 | 
			
		||||
use alacritty::display::Display;
 | 
			
		||||
use alacritty::event;
 | 
			
		||||
use alacritty::event_loop::{self, EventLoop, Msg};
 | 
			
		||||
#[cfg(target_os = "macos")]
 | 
			
		||||
use alacritty::locale;
 | 
			
		||||
use alacritty::logging;
 | 
			
		||||
use alacritty::sync::FairMutex;
 | 
			
		||||
use alacritty::term::{Term};
 | 
			
		||||
| 
						 | 
				
			
			@ -41,6 +44,11 @@ fn main() {
 | 
			
		|||
    let options = cli::Options::load();
 | 
			
		||||
    let config = load_config(&options);
 | 
			
		||||
 | 
			
		||||
    // Switch to home directory
 | 
			
		||||
    env::set_current_dir(env::home_dir().unwrap()).unwrap();
 | 
			
		||||
    #[cfg(target_os = "macos")]
 | 
			
		||||
    locale::set_locale_environment();
 | 
			
		||||
 | 
			
		||||
    // Run alacritty
 | 
			
		||||
    if let Err(err) = run(config, &options) {
 | 
			
		||||
        die!("Alacritty encountered an unrecoverable error:\n\n\t{}\n", Red(err));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue