Terminalfont: add Apple Terminal support ( macOS )

This commit is contained in:
Carter Li
2022-09-17 15:39:07 +08:00
parent b59227e49f
commit a0a1c04011
4 changed files with 55 additions and 0 deletions
+2
View File
@@ -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()
+26
View File
@@ -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;
+10
View File
@@ -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
+17
View File
@@ -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;
}