Browse Source

Modify file type handling.

Use mpv, fmedia, zathura.
Invoke libmagic to identify text files and open with vim.
Use xdg-open for unhandled mimes.
master
Arun Prakash Jana 8 years ago
parent
commit
bc731cd9c0
No known key found for this signature in database GPG Key ID: A75979F35C080412
3 changed files with 26 additions and 6 deletions
  1. +2
    -1
      Makefile
  2. +6
    -5
      config.def.h
  3. +18
    -0
      noice.c

+ 2
- 1
Makefile View File

@@ -5,7 +5,8 @@ MANPREFIX = $(PREFIX)/man

#CPPFLAGS = -DDEBUG
#CFLAGS = -g
LDLIBS = -lcurses
CFLAGS = -O3 -march=native
LDLIBS = -lcurses -lmagic

DISTFILES = noice.c strlcat.c strlcpy.c util.h config.def.h\
noice.1 Makefile README LICENSE


+ 6
- 5
config.def.h View File

@@ -8,12 +8,13 @@ int idletimeout = 0; /* Screensaver timeout in seconds, 0 to disable */
char *idlecmd = "rain"; /* The screensaver program */

struct assoc assocs[] = {
{ "\\.(avi|mp4|mkv|mp3|ogg|flac|mov)$", "mplayer" },
{ "\\.(png|jpg|gif)$", "feh" },
{ "\\.(html|svg)$", "firefox" },
{ "\\.pdf$", "mupdf" },
//{ "\\.(avi|mp4|mkv|mp3|ogg|flac|mov)$", "mpv" },
{ "\\.(wma|mp3|ogg|flac)$", "fmedia" },
//{ "\\.(png|jpg|gif)$", "feh" },
//{ "\\.(html|svg)$", "firefox" },
{ "\\.pdf$", "zathura" },
{ "\\.sh$", "sh" },
{ ".", "less" },
//{ ".", "less" },
};

struct key bindings[] = {


+ 18
- 0
noice.c View File

@@ -17,6 +17,7 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <magic.h>

#include "util.h"

@@ -207,6 +208,20 @@ openwith(char *file)
char *bin = NULL;
int i;

const char *mime;
magic_t magic;

magic = magic_open(MAGIC_MIME_TYPE);
magic_load(magic, NULL);
magic_compile(magic, NULL);
mime = magic_file(magic, file);
DPRINTF_S(mime);

if (strcmp(mime, "text/plain") == 0)
magic_close(magic);
return "vim";
magic_close(magic);

for (i = 0; i < LEN(assocs); i++) {
if (regcomp(&regex, assocs[i].regex,
REG_NOSUB | REG_EXTENDED | REG_ICASE) != 0)
@@ -650,6 +665,9 @@ nochange:
case S_IFREG:
bin = openwith(newpath);
if (bin == NULL) {
char cmd[512];
sprintf(cmd, "xdg-open \"%s\" > /dev/null 2>&1", newpath);
system(cmd);
printmsg("No association");
goto nochange;
}


||||||
x
 
000:0
Loading…
Cancel
Save