--title-fqdn option

#203
This commit is contained in:
Linus Dierheimer
2022-07-22 19:36:00 +02:00
parent ec1981c545
commit b9d360af97
10 changed files with 59 additions and 31 deletions
+1
View File
@@ -163,6 +163,7 @@ add_library(libfastfetch OBJECT
src/detection/media.c
src/detection/datetime.c
src/detection/temps.c
src/detection/title.c
src/detection/displayserver/displayServer.c
src/detection/displayserver/wayland.c
src/detection/displayserver/xcb.c
+1
View File
@@ -133,6 +133,7 @@ __fastfetch_completion()
"--localip-show-loop"
"--escape-bedrock"
"--pipe"
"--title-fqdn"
)
local FF_OPTIONS_STRING=(
+2
View File
@@ -193,6 +193,8 @@ static void defaultConfig(FFinstance* instance)
ffStrbufInitA(&instance->config.libOSMesa, 0);
ffStrbufInitA(&instance->config.libOpenCL, 0);
instance->config.titleFQDN = false;
ffStrbufInitA(&instance->config.diskFolders, 0);
ffStrbufInitA(&instance->config.batteryDir, 0);
+6
View File
@@ -120,6 +120,12 @@
# Use "fastfetch --help color" to learn more and see examples.
#--color magenta
# Title FQDN option:
# Sets if the title should use the fully qualified domain name.
# Must be true or false.
# Default is false.
#--title-fqdn false
# Separator option:
# Sets the string placed between a key and its value.
# Can be any string.
+1
View File
@@ -82,6 +82,7 @@ Library options: Set the path of a library to load
--lib-opencl <path>
Module specific options:
--title-fqdn <?value>: sets if the title should use fully qualified domain name. Default is false.
--separator-string <str>: Set the string printed by the separator module
--os-file <path>: Set the path to the file containing OS informations
--disk-folders <folders>: A colon separated list of folder paths for the disk output. Default is "/:/home"
+37
View File
@@ -0,0 +1,37 @@
#include "fastfetch.h"
#include <limits.h>
#include <unistd.h>
#include <pthread.h>
#include <netdb.h>
const FFTitleResult* ffDetectTitle(const FFinstance* instance)
{
static FFTitleResult result;
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static bool init = false;
pthread_mutex_lock(&mutex);
if(init)
{
pthread_mutex_unlock(&mutex);
return &result;
}
init = true;
ffStrbufInit(&result.userName);
ffStrbufAppendS(&result.userName, instance->state.passwd->pw_name);
ffStrbufInitA(&result.hostname, HOST_NAME_MAX);
ffStrbufAppendS(&result.hostname, instance->state.utsname.nodename);
ffStrbufInitA(&result.fqdn, HOST_NAME_MAX);
struct hostent* host = gethostbyname(result.hostname.chars);
if(host != NULL)
ffStrbufAppendS(&result.fqdn, host->h_name);
if(result.fqdn.length == 0)
ffStrbufAppend(&result.fqdn, &result.hostname);
pthread_mutex_unlock(&mutex);
return &result;
}
+2
View File
@@ -1154,6 +1154,8 @@ static void parseOption(FFinstance* instance, FFdata* data, const char* key, con
//Module options//
//////////////////
else if(strcasecmp(key, "--title-fqdn") == 0)
instance->config.titleFQDN = optionParseBoolean(value);
else if(strcasecmp(key, "--disk-folders") == 0)
optionParseString(key, value, &instance->config.diskFolders);
else if(strcasecmp(key, "--battery-dir") == 0)
+6 -1
View File
@@ -135,6 +135,8 @@ typedef struct FFconfig
FFstrbuf libOSMesa;
FFstrbuf libOpenCL;
bool titleFQDN;
FFstrbuf diskFolders;
FFstrbuf batteryDir;
@@ -184,6 +186,7 @@ typedef struct FFTitleResult
{
FFstrbuf userName;
FFstrbuf hostname;
FFstrbuf fqdn; //Fully qualified domain name
} FFTitleResult;
typedef struct FFOSResult
@@ -518,6 +521,9 @@ void ffLogoBuiltinListAutocompletion();
// Detection functions //
/////////////////////////
//detection/title.c
const FFTitleResult* ffDetectTitle(const FFinstance* instance);
//detection/os.c
const FFOSResult* ffDetectOS(const FFinstance* instance);
@@ -552,7 +558,6 @@ const FFVulkanResult* ffDetectVulkan(const FFinstance* instance);
//////////////////////
//Common
const FFTitleResult* ffDetectTitle(FFinstance* instance);
void ffPrintDateTimeFormat(FFinstance* instance, const char* moduleName, const FFModuleArgs* moduleArgs);
+2 -1
View File
@@ -3,7 +3,8 @@
void ffPrintSeparator(FFinstance* instance)
{
const FFTitleResult* result = ffDetectTitle(instance);
uint32_t titleLength = result->userName.length + 1 + result->hostname.length;
uint32_t titleLength = result->userName.length + 1 +
(instance->config.titleFQDN ? result->fqdn.length : result->hostname.length);
ffLogoPrintLine(instance);
+1 -29
View File
@@ -1,33 +1,5 @@
#include "fastfetch.h"
#include <unistd.h>
#include <pthread.h>
const FFTitleResult* ffDetectTitle(FFinstance* instance)
{
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
static bool init = false;
static FFTitleResult result;
pthread_mutex_lock(&mutex);
if(init)
{
pthread_mutex_unlock(&mutex);
return &result;
}
init = true;
ffStrbufInit(&result.userName);
ffStrbufAppendS(&result.userName, instance->state.passwd->pw_name);
ffStrbufInitA(&result.hostname, 256);
gethostname(result.hostname.chars, result.hostname.allocated);
ffStrbufRecalculateLength(&result.hostname);
pthread_mutex_unlock(&mutex);
return &result;
}
static inline void printTitlePart(FFinstance* instance, const FFstrbuf* content)
{
if(!instance->config.pipe)
@@ -50,6 +22,6 @@ void ffPrintTitle(FFinstance* instance)
printTitlePart(instance, &result->userName);
putchar('@');
printTitlePart(instance, &result->hostname);
printTitlePart(instance, instance->config.titleFQDN ? &result->fqdn : &result->hostname);
putchar('\n');
}