mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-12 09:58:03 +02:00
Terminalfont: add Apple Terminal support ( macOS )
This commit is contained in:
@@ -246,6 +246,7 @@ if(APPLE)
|
||||
src/detection/displayserver/displayserver_apple.c
|
||||
src/modules/terminalfont_apple.c
|
||||
src/util/apple/cfdict_helpers.c
|
||||
src/util/apple/osascript.m
|
||||
)
|
||||
elseif(ANDROID)
|
||||
list(APPEND LIBFASTFETCH_SRC
|
||||
@@ -333,6 +334,7 @@ if(APPLE)
|
||||
PRIVATE "-framework CoreGraphics"
|
||||
PRIVATE "-framework OpenGL"
|
||||
PRIVATE "-framework OpenCL"
|
||||
PRIVATE "-framework Cocoa"
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "common/font.h"
|
||||
#include "common/io.h"
|
||||
#include "common/library.h"
|
||||
#include "util/apple/osascript.h"
|
||||
#include "terminalfont.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
@@ -106,11 +107,36 @@ static void printIterm2(FFinstance* instance)
|
||||
#endif
|
||||
}
|
||||
|
||||
static void printAppleTerminal(FFinstance* instance)
|
||||
{
|
||||
FFstrbuf fontName;
|
||||
ffStrbufInit(&fontName);
|
||||
if(!ffOsascript("tell application \"Terminal\" to font name of window frontmost", &fontName))
|
||||
{
|
||||
ffPrintError(instance, FF_TERMFONT_MODULE_NAME, 0, &instance->config.terminalFont, "osascript failed");
|
||||
return;
|
||||
}
|
||||
|
||||
FFstrbuf fontSize;
|
||||
ffStrbufInit(&fontSize);
|
||||
ffOsascript("tell application \"Terminal\" to font size of window frontmost", &fontSize);
|
||||
|
||||
FFfont font;
|
||||
ffFontInitValues(&font, fontName.chars, fontSize.chars);
|
||||
ffPrintTerminalFontResult(instance, fontName.chars, &font);
|
||||
ffFontDestroy(&font);
|
||||
|
||||
ffStrbufDestroy(&fontName);
|
||||
ffStrbufDestroy(&fontSize);
|
||||
}
|
||||
|
||||
bool ffPrintTerminalFontPlatform(FFinstance* instance, const FFTerminalShellResult* shellInfo)
|
||||
{
|
||||
bool success = true;
|
||||
if(ffStrbufIgnCaseCompS(&shellInfo->terminalProcessName, "iterm.app") == 0)
|
||||
printIterm2(instance);
|
||||
else if(ffStrbufIgnCaseCompS(&shellInfo->terminalProcessName, "Apple_Terminal") == 0)
|
||||
printAppleTerminal(instance);
|
||||
else
|
||||
success = false;
|
||||
return success;
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef FASTFETCH_INCLUDED_osascript
|
||||
#define FASTFETCH_INCLUDED_osascript
|
||||
|
||||
#include "fastfetch.h"
|
||||
|
||||
bool ffOsascript(const char* input, FFstrbuf* result);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,17 @@
|
||||
#include "osascript.h"
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <AppKit/AppKit.h>
|
||||
#import <CoreData/CoreData.h>
|
||||
|
||||
bool ffOsascript(const char* input, FFstrbuf* result) {
|
||||
NSString* appleScript = [NSString stringWithUTF8String: input];
|
||||
NSAppleScript* script = [[NSAppleScript alloc] initWithSource:appleScript];
|
||||
NSDictionary* errInfo = nil;
|
||||
NSAppleEventDescriptor* descriptor = [script executeAndReturnError:&errInfo];
|
||||
if (errInfo)
|
||||
return false;
|
||||
|
||||
ffStrbufSetS(result, [[descriptor stringValue] cStringUsingEncoding:NSUTF8StringEncoding]);
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user