rofi 2.1.0
filebrowser.c File Reference
#include "config.h"
#include <errno.h>
#include <gio/gio.h>
#include <gmodule.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <dirent.h>
#include <glib/gstdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include "display.h"
#include "helper.h"
#include "history.h"
#include "mode-private.h"
#include "mode.h"
#include "modes/filebrowser.h"
#include "rofi.h"
#include "theme.h"
#include <stdint.h>
#include "rofi-icon-fetcher.h"
Include dependency graph for filebrowser.c:

Go to the source code of this file.

Data Structures

struct  FBFile
struct  FileBrowserModePrivateData
struct  [struct].file_browser_config

Macros

#define FILEBROWSER_CACHE_FILE   "rofi3.filebrowsercache"
#define DEFAULT_OPEN   "xdg-open"

Enumerations

enum  FBFileType { UP , DIRECTORY , RFILE , NUM_FILE_TYPES }
enum  FBSortingMethod { FB_SORT_NAME , FB_SORT_TIME }
enum  FBSortingTime { FB_MTIME , FB_ATIME , FB_CTIME }

Functions

static void free_list (FileBrowserModePrivateData *pd)
static gint compare_name (gconstpointer a, gconstpointer b, G_GNUC_UNUSED gpointer data)
static gint compare_time (gconstpointer a, gconstpointer b, G_GNUC_UNUSED gpointer data)
static gint compare (gconstpointer a, gconstpointer b, gpointer data)
static time_t get_time (const GStatBuf *statbuf)
static void set_time (FBFile *file)
static void set_collate_key (FBFile *file)
static void fb_resize_array (FileBrowserModePrivateData *pd)
static void get_file_browser (Mode *sw)
static void file_browser_mode_init_config (Mode *sw)
static void file_browser_mode_init_current_dir (Mode *sw)
static int file_browser_mode_init (Mode *sw)
static unsigned int file_browser_mode_get_num_entries (const Mode *sw)
static ModeMode file_browser_mode_result (Mode *sw, int mretv, char **input, unsigned int selected_line)
static void file_browser_mode_destroy (Mode *sw)
static char * _get_display_value (const Mode *sw, unsigned int selected_line, G_GNUC_UNUSED int *state, G_GNUC_UNUSED GList **attr_list, int get_entry)
static int file_browser_token_match (const Mode *sw, rofi_int_matcher **tokens, unsigned int index)
static cairo_surface_t * _get_icon (const Mode *sw, unsigned int selected_line, unsigned int height)
static char * _get_message (const Mode *sw)
static char * _get_completion (const Mode *sw, unsigned int index)
Mode * create_new_file_browser (void)
ModeMode file_browser_mode_completer (Mode *sw, int mretv, char **input, unsigned int selected_line, char **path)

Variables

const char * icon_name [NUM_FILE_TYPES] = {"go-up", "folder", "gtk-file"}
struct  file_browser_config
Mode file_browser_mode

Macro Definition Documentation

◆ DEFAULT_OPEN

#define DEFAULT_OPEN   "xdg-open"

The default program used to open the file.

Definition at line 55 of file filebrowser.c.

Referenced by file_browser_mode_init_config(), and recursive_browser_mode_init_config().

◆ FILEBROWSER_CACHE_FILE

#define FILEBROWSER_CACHE_FILE   "rofi3.filebrowsercache"

rofi-file_browser

MIT/X11 License Copyright (c) 2017 Qball Cow qball.nosp@m.@gmp.nosp@m.clien.nosp@m.t.or.nosp@m.g

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Definition at line 53 of file filebrowser.c.

Referenced by file_browser_mode_init_current_dir(), and file_browser_mode_result().

Enumeration Type Documentation

◆ FBFileType

enum FBFileType

The internal data structure holding the private data of the TEST Mode.

Enumerator
UP 
DIRECTORY 
RFILE 
NUM_FILE_TYPES 

Definition at line 66 of file filebrowser.c.

◆ FBSortingMethod

Possible sorting methods

Enumerator
FB_SORT_NAME 
FB_SORT_TIME 

Definition at line 76 of file filebrowser.c.

◆ FBSortingTime

Type of time to sort by

Enumerator
FB_MTIME 
FB_ATIME 
FB_CTIME 

Definition at line 84 of file filebrowser.c.

Function Documentation

◆ _get_completion()

char * _get_completion ( const Mode * sw,
unsigned int index )
static

Definition at line 654 of file filebrowser.c.

References _get_completion(), FileBrowserModePrivateData::array, mode_get_private_data(), and FBFile::path.

Referenced by _get_completion(), and _get_completion().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _get_display_value()

char * _get_display_value ( const Mode * sw,
unsigned int selected_line,
G_GNUC_UNUSED int * state,
G_GNUC_UNUSED GList ** attr_list,
int get_entry )
static

Definition at line 582 of file filebrowser.c.

References FileBrowserModePrivateData::array, FBFile::link, mode_get_private_data(), FBFile::name, FBFile::type, and UP.

Here is the call graph for this function:

◆ _get_icon()

cairo_surface_t * _get_icon ( const Mode * sw,
unsigned int selected_line,
unsigned int height )
static

◆ _get_message()

char * _get_message ( const Mode * sw)
static

Definition at line 641 of file filebrowser.c.

References _get_message(), FileBrowserModePrivateData::current_dir, and mode_get_private_data().

Referenced by _get_message(), and _get_message().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compare()

gint compare ( gconstpointer a,
gconstpointer b,
gpointer data )
static

Definition at line 179 of file filebrowser.c.

References compare(), compare_name(), compare_time(), FB_SORT_NAME, FB_SORT_TIME, and file_browser_config.

Referenced by compare(), and get_file_browser().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compare_name()

gint compare_name ( gconstpointer a,
gconstpointer b,
G_GNUC_UNUSED gpointer data )
static

Definition at line 147 of file filebrowser.c.

References FBFile::collate_key, compare_name(), file_browser_config, and FBFile::type.

Referenced by compare(), and compare_name().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compare_time()

gint compare_time ( gconstpointer a,
gconstpointer b,
G_GNUC_UNUSED gpointer data )
static

Definition at line 159 of file filebrowser.c.

References compare_time(), file_browser_config, FBFile::time, and FBFile::type.

Referenced by compare(), and compare_time().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fb_resize_array()

void fb_resize_array ( FileBrowserModePrivateData * pd)
inlinestatic

Definition at line 233 of file filebrowser.c.

References FileBrowserModePrivateData::array, FileBrowserModePrivateData::array_length, FileBrowserModePrivateData::array_length_real, and fb_resize_array().

Referenced by fb_resize_array(), fb_resize_array(), get_file_browser(), and recursive_browser_async_read_proc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ file_browser_mode_destroy()

void file_browser_mode_destroy ( Mode * sw)
static

Definition at line 570 of file filebrowser.c.

References FileBrowserModePrivateData::command, FileBrowserModePrivateData::current_dir, file_browser_mode_destroy(), free_list(), mode_get_private_data(), and mode_set_private_data().

Referenced by file_browser_mode_destroy().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ file_browser_mode_get_num_entries()

unsigned int file_browser_mode_get_num_entries ( const Mode * sw)
static

Definition at line 473 of file filebrowser.c.

References FileBrowserModePrivateData::array_length, file_browser_mode_get_num_entries(), and mode_get_private_data().

Referenced by file_browser_mode_get_num_entries().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ file_browser_mode_init()

int file_browser_mode_init ( Mode * sw)
static

Called on startup when enabled (in modes list)

Definition at line 457 of file filebrowser.c.

References file_browser_mode_init(), file_browser_mode_init_config(), file_browser_mode_init_current_dir(), get_file_browser(), mode_get_private_data(), and mode_set_private_data().

Referenced by file_browser_mode_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ file_browser_mode_init_config()

◆ file_browser_mode_init_current_dir()

void file_browser_mode_init_current_dir ( Mode * sw)
static

◆ file_browser_mode_result()

◆ file_browser_token_match()

int file_browser_token_match ( const Mode * sw,
rofi_int_matcher ** tokens,
unsigned int index )
static
Parameters
swThe mode object.
tokensThe tokens to match against.
indexThe index in this plugin to match against.

Match the entry.

Returns
try when a match.

Definition at line 611 of file filebrowser.c.

References FileBrowserModePrivateData::array, file_browser_token_match(), helper_token_match(), mode_get_private_data(), and FBFile::name.

Referenced by file_browser_token_match().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ free_list()

◆ get_file_browser()

◆ get_time()

time_t get_time ( const GStatBuf * statbuf)
static

Definition at line 197 of file filebrowser.c.

References FB_ATIME, FB_CTIME, FB_MTIME, file_browser_config, and get_time().

Referenced by get_file_browser(), get_time(), and set_time().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_collate_key()

void set_collate_key ( FBFile * file)
static

Definition at line 229 of file filebrowser.c.

References FBFile::collate_key, FBFile::name, and set_collate_key().

Referenced by get_file_browser(), and set_collate_key().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_time()

void set_time ( FBFile * file)
static

Definition at line 210 of file filebrowser.c.

References get_time(), FBFile::path, set_time(), and FBFile::time.

Referenced by get_file_browser(), and set_time().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ file_browser_config

struct [struct].file_browser_config file_browser_config
Initial value:
= {
.sorting_method = FB_SORT_NAME,
.sorting_time = FB_MTIME,
.directories_first = TRUE,
.show_hidden = FALSE,
}
@ FB_SORT_NAME
Definition filebrowser.c:77
@ FB_MTIME
Definition filebrowser.c:85

Referenced by compare(), compare_name(), compare_time(), file_browser_mode_completer(), file_browser_mode_init_config(), file_browser_mode_result(), get_file_browser(), and get_time().

◆ icon_name

const char* icon_name[NUM_FILE_TYPES] = {"go-up", "folder", "gtk-file"}

Icons to use for the file type

Definition at line 91 of file filebrowser.c.

Referenced by _get_icon(), and script_mode_free_entry_list().