Created
March 16, 2013 00:26
-
-
Save miron/5174270 to your computer and use it in GitHub Desktop.
transparent raggle
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$config = { | |
'config_dir' => Raggle::Path::find_home + '/.raggle', | |
'config_path' => '${config_dir}/config.rb', | |
'feed_list_path' => '${config_dir}/feeds.yaml', | |
'feed_cache_path' => '${config_dir}/feed_cache.store', | |
'theme_path' => '${config_dir}/theme.yaml', | |
'grab_log_path' => '${config_dir}/grab.log', | |
'cache_lock_path' => '${config_dir}/lock', | |
'web_ui_root_path' => Raggle::Path::find_web_ui_root, | |
'web_ui_log_path' => '${config_dir}/webrick.log', | |
# feed list handling | |
'load_feed_list' => true, | |
'save_feed_list' => true, | |
# feed cache handling | |
'load_feed_cache' => true, | |
'save_feed_cache' => true, | |
# Log file rotation schedule. | |
# | |
# (valid values are 'daily', 'weekly', 'monthly', or an integer | |
# indecating the number of days). | |
'grab_log_age' => 'weekly', | |
# Log file rotation size. | |
# | |
# If the log file exceeds this size, then it will be automatically | |
# rotated. | |
'grab_log_size' => 1048576, | |
# Log file verbosity. | |
# | |
# Valid values are 'DEBUG', 'INFO', ''WARN', 'ERROR', and 'FATAL'. | |
# Defaults to 'INFO' if unspecified. | |
'grab_log_level' => 'INFO', | |
# save old feed items indefinitely? | |
# Note: doing this with a lot of high-traffic feeds can make | |
# your feed cache grow very large, very fast. It's probably better | |
# to use the per-feed --save-items command-line option. | |
'save_feed_items' => false, | |
# confirm feed deletion? | |
'confirm_delete' => true, | |
# theme handling | |
'load_theme' => true, | |
'save_theme' => true, | |
# save stuff on crash? | |
'save_on_crash' => false, | |
# abort feed thread on exception? | |
'abort_on_exception' => false, | |
# feed list, feed cache, and theme lock handling | |
'use_cache_lock' => true, | |
# ui options | |
'focus' => 'auto', # ['none', 'select', 'select_first', 'auto'] | |
'no_desc_auto_focus' => true, | |
'scroll_wrapping' => true, | |
# log exerpt of content from feed header? (useful for debugging) | |
'log_content' => false, | |
# grab in parallel (grab threads in parallel instead of serial) | |
'grab_in_parallel' => false, | |
# use ASCII for window borders instead of ANSI? | |
'use_ascii_only?' => false, | |
# maximum number of threads (don't set to less than 5!) | |
'max_threads' => 10, | |
# thread priorities (best to leave these alone) | |
'thread_priority_main' => 10, | |
'thread_priority_feed' => 1, # parent feed grabbing thread | |
'thread_priority_grab' => 0, # child grabbing threads | |
'thread_priority_gc' => 1, | |
'thread_priority_http' => 1, | |
'thread_priority_find' => 1, | |
'thread_priority_save' => 0, | |
# grab thread reap timeout (wait up to N seconds) | |
'thread_reap_timeout' => 120, | |
# don't check every 60 seconds, wait for the update | |
# key to be pressed (for modem users, slow computers, etc) | |
'use_manual_update' => false, | |
# update feed list on startup? | |
'update_on_startup' => true, | |
# proxy settings | |
'proxy' => { | |
'host' => nil, | |
'port' => nil, | |
'no_proxy' => nil, | |
}, | |
# send the http headers? | |
'use_http_headers' => true, | |
# URL handlers | |
'url_handlers' => { | |
'http' => proc { |url, last_mod| Raggle::Engine::get_http_url(url, last_mod) }, | |
'https' => proc { |url, last_mod| Raggle::Engine::get_http_url(url, last_mod) }, | |
'file' => proc { |url, last_mod| Raggle::Engine::get_file_url(url, last_mod) }, | |
'exec' => proc { |url, last_mod| Raggle::Engine::get_exec_url(url, last_mod) }, | |
}, | |
# RSS Enclosure Hook | |
# | |
# If enabled, this command is called for each RSS enclosure Raggle | |
# encounters. Note that this command is responsible for maintaining | |
# it's own cache of downloaded enclosures; Raggle passes the enclosure | |
# every time it parses the feed, before it checks whether or not the | |
# element was cached. The arguments passed to the command are as | |
# follows: | |
# | |
# * Feed Title | |
# * Feed Link | |
# * Item Title | |
# * Item Link | |
# * Enclosure URL | |
# * Enclosure MIME Type | |
# * Enclosure Length (in bytes) | |
# | |
# So, a blatantly naive implementation of an enclosure handler would | |
# probably look something like this: | |
# | |
# require 'pstore' | |
# | |
# class PStore | |
# def has_key?(key) | |
# roots.include?(key) | |
# end | |
# end | |
# | |
# # load URL cache, parse arguments | |
# cache = PStore.new('url_cache') | |
# feed_title, feed_link, title, link, url, mime_type, len = ARGV | |
# | |
# # check cache for URL | |
# exit 0 if cache.transaction { cache.has_key?(url) } | |
# | |
# # generate safe filename for output file | |
# # (you'd have to write this) | |
# safe_name = gen_safe_name(url) | |
# | |
# # cache output name | |
# cache.transaction { cache[url] = safe_name } | |
# | |
# # call wget (this could just as easily be a call to | |
# # net/http, curl, or whatever else suites your fancy) | |
# Kernel.exec('wget', '-q', '-O', safe_name, url) | |
# Kernel.exit! # shouldn't ever get here | |
# | |
# So anyway, without any further ado, an example of the actual | |
# enclosure config directive: | |
# | |
# 'enclosure_hook_cmd' => '/home/pabs/bin/handle_enclosures.rb', | |
# Raise an exception (which generally means crash) if the URL type is | |
# unknown. You probably DON'T want to enable this. If disabled, then | |
# fall back to the default_url_handler for unknown URL types. | |
'strict_url_handling' => false, | |
# if strict_url_handling is disabled, then fall back to this type | |
# when the URL handler is unknown. | |
# | |
# WARNING: DO NOT CHANGE THIS TO 'exec' OR 'file'. DOING SO HAS | |
# POTENTIALLY SERIOUS SECURITY RAMIFICATIONS. | |
'default_url_handler' => 'http', | |
# default http headers | |
'http_headers' => { | |
'Accept' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,*/*;q=0.1', | |
# yes Richard, there is a reason the following line looks so | |
# ugly. -- Paul | |
'Accept-Charset' =>'ISO-8859-1,UTF-8;q=0.7,*;q=0.7', | |
'User-Agent' => "Raggle/#$VERSION (#{RUBY_PLATFORM}; Ruby/#{RUBY_VERSION})", | |
}, | |
# Number of list items per "page" (wrt page up/down) | |
# (if < 0, then the height of the window, minus N items) | |
'page_step' => -3, | |
# date formats | |
'item_date_format' => '%c', | |
'desc_date_format' => '%c', | |
# raggle http daemon settings | |
'run_http_server' => false, | |
'http_server' => { | |
'bind_address' => '127.0.0.1', # localhost only | |
'port' => 2222, # port to bind to | |
'page_refresh' => 120, # refresh interval (feed & item wins) | |
'shutdown_sleep' => 0.5, # seconds to wait for shutdown | |
'empty_item' => { | |
'title' => '', | |
'url' => '', | |
'desc' => '', | |
}, | |
# NOTE: | |
# document root is set as $config['web_ui_root_path'], and the | |
# access log is set via $config['web_ui_log_path'] | |
}, | |
# raggle drb server settings | |
'run_drb_server' => false, | |
'drb_server' => { | |
'bind_url' => 'druby://localhost:1234', | |
}, | |
# messages | |
'msg_welcome' => _(' Welcome to Raggle %s.'), | |
'msg_exit' => _('| Press Q to exit '), | |
'msg_close' => _('[X] '), | |
'msg_grab_done' => _(' Raggle %s'), | |
'msg_load_config' => _('Raggle: Loading config...'), | |
'msg_load_list' => _('Raggle: Loading feed list...'), | |
'msg_save_list' => _('Raggle: Saving feed list...'), | |
'msg_load_cache' => _('Raggle: Loading feed cache...'), | |
'msg_save_cache' => _('Raggle: Saving feed cache...'), | |
'msg_load_theme' => _('Raggle: Loading theme...'), | |
'msg_save_theme' => _('Raggle: Saving theme...'), | |
'msg_thanks' => _('Thanks for using Raggle!'), | |
'msg_default_input' => _('Input:'), | |
'msg_new_value' => _('New value:'), | |
'msg_term_resize' => _('Terminal Resize: '), | |
'msg_links' => _('Links:'), | |
'msg_images' => _('Images:'), | |
'msg_add_feed' => _('Enter URL:'), | |
'msg_feed_added' => _('Feed added'), | |
'msg_confirm_delete' => _('Delete current feed? (y/n)'), | |
'msg_find_entry' => _('Find:'), | |
'msg_cat_title' => _('Display Category'), | |
'msg_find_feed' => _('Find Feeds:'), | |
'msg_searching' => _(' Searching...'), | |
'msg_find_title' => _('Search Results for "%s" - %s matching feeds'), | |
'msg_find_desc' => _('Please select a feed...'), | |
'msg_find_nomatches' => _('No results found'), | |
'msg_keys_title' => _('Current Key Bindings'), | |
'msg_added_existing' => _('Warning: Added existing feed'), | |
'msg_edit_title' => _('Edit Feed Options'), | |
'msg_bad_option' => _('Warning: Bad option for %s'), | |
'msg_edit_success' => _('New option saved'), | |
'msg_save_done' => _('Configuration saved'), | |
'msg_opml_input' => _('OPML file or URI:'), | |
'msg_opml_exported' => _('OPML exported'), | |
'msg_opml_imported' => _('OPML imported'), | |
'msg_bad_uri' => _('Error: bad or empty URI'), | |
'msg_exec_url' => _('WARNING: exec url found!'), | |
# bookmark messages | |
'msg_bm_saving' => _('Saving bookmark for "%s"'), | |
'msg_bm_saved' => _('Bookmark saved for "%s".'), | |
'msg_bm_desc' => _('Bookmark Description:'), | |
'msg_bm_tag' => _('Bookmark Tags (space-separated):'), | |
'msg_bm_bad_type' => _('Bad bookmark type: %s'), | |
'msg_bm_bad_db_type' => _('Unknown database type: %s'), | |
'msg_bm_db_err' => _('Database Error: %s'), | |
'msg_bm_db_missing' => _('Missing Database Engine: %s'), | |
'msg_bm_del_err' => _('Delicious Error: %s'), | |
'msg_bm_del_saving' => _('Saving Bookmark to Delicious...'), | |
'msg_bm_del_missing' => _('Error: Rubilicious not installed.'), | |
'msg_bm_file_err' => _('Error saving to \"%s\": %s'), | |
# menu bar color | |
'menu_bar_cols' => 24, | |
# strip external entity declarations | |
# (workaround for bug in REXML 2.7.1) | |
'strip_external_entities' => true, | |
# input select timeout (in seconds) | |
'input_select_timeout' => 0.2, | |
# http timeouts (in seconds) | |
'http_open_timeout' => 10, | |
'http_read_timeout' => 10, | |
# thread sleep intervals (in seconds) | |
'feed_sleep_interval' => 60, | |
# save thread sleep interval (in seconds) | |
'save_sleep_interval' => 300, | |
# gc thread sleep interval (in seconds) | |
'gc_sleep_interval' => 600, | |
# max results to return from syndic8 | |
'syndic8_max_results' => 100, | |
# grab log mode (a == append, w == write) | |
'grab_log_mode' => 'w', | |
# update feeds after adding a new one? | |
'update_after_add' => true, | |
# strip html from item contents? | |
'strip_html_tags' => false, | |
# repair relative URLs in feed items? | |
'repair_relative_urls' => true, | |
# decode html escape sequences? | |
'unescape_html' => true, | |
# Force wrapping of generally unwrappable lines? | |
'force_text_wrap' => false, | |
# replace unicode chars with what? | |
# | |
# Note: this option is meaningless when iconv character encoding | |
# translation is enabled, unless 'use_iconv_munge' is true. | |
'unicode_munge_str' => '!u!', | |
# character encoding used to display text from RSS feeds. | |
# | |
# The allowed values for 'character_encoding' vary depending on the | |
# character encoding method. If you're using the pre-0.4.0 | |
# REXML-style encoding translation (and you really shouldn't be unless | |
# you're having problems; see 'use_iconv' below for additional | |
# information), then the supported values are as follows: | |
# | |
# ISO-8859-1, UTF-8, UTF-16 and UNILE | |
# | |
# On the other hand, if you're using iconv-style encoding translation, | |
# the list of allowed values is any character encoding supported by | |
# your version of iconv (use "iconv --list" for a full list). Be sure | |
# to omit the trailing '//' from your character_encoding value; Raggle | |
# automatically appends it if it's necessary. | |
# | |
'character_encoding' => 'ISO-8859-1', | |
# iconv support | |
# | |
# This is the new character encoding support. If iconv is installed | |
# and iconv support is enabled (with 'use_iconv'), then use iconv | |
# instead of REXML to do character encoding translations. If | |
# 'use_iconv_translit' is enabled, then use iconv transliteration to | |
# approximate characters that cannot be directly represented in the | |
# character encoding (specified above in 'character_encoding'). | |
# | |
# Both 'use_iconv' and 'use_iconv_translit' default to true. | |
# | |
# If you've got iconv installed, you really should be using it to do | |
# character conversions. It's faster than REXML, supports a much | |
# broader range of character encodings, and has intelligent built-in | |
# transliteration (as opposed to the unicode_munge_str chicanery | |
# Raggle uses for the REXML-style encoding translation). | |
# | |
# It's probably a good idea to leave transliteration enabled. It will | |
# prevent iconv from barfing on characters it can't translate, and, | |
# since Ncurses-Ruby doesn't have wide character support, it will keep | |
# Ncurses from printing garbage all over the screen. | |
# | |
'use_iconv' => true, | |
'use_iconv_translit' => true, | |
'use_iconv_munge' => true, | |
'iconv_munge_illegal' => true, | |
# warn if feed refresh is set to less than this (in minutes) | |
'feed_refresh_warn' => 60, | |
# default feed name and refresh rate (in minutes) | |
'default_feed_title' => _('Untitled Feed'), | |
'default_feed_refresh' => 120, | |
'default_feed_priority' => 0, | |
# open new screen window for browser? | |
'use_screen' => true, | |
# screen command | |
'screen_cmd' => ['screen', '-t', '%s'], | |
# browser options | |
'browser' => 'firefox', | |
'browser_cmd' => ['${browser}', '%s'], | |
# beep on new articles? | |
'do_beep' => false, | |
# Force raggle to accept shell metacharacters in urls. | |
'force_url_meta' => false, | |
# Regular expression matching shell metacharacters to not allow in URLs | |
# 'shell_meta_regex' => /([\`\$]|\#\{)/, # the #{ is to stop ruby | |
# expansion. | |
# Is that necessary? | |
# lock feed names (don't update feed title from feed) | |
# (you can lock individual feed titles with the --lock-title command) | |
'lock_feed_title' => false, | |
# feed info on highlight | |
'describe_hilited_feed' => true, | |
'desc_show_site' => false, | |
'desc_show_url' => false, | |
'desc_show_divider' => false, | |
################# | |
# yank settings # | |
################# | |
# a list of stuff to filter out of text that's yanked | |
# you can either expand this list, or define a whole new filter | |
# method with $config['yank_filter_proc'] below | |
'yank_filters' => [ | |
/<!--.*?-->/mi, | |
/.*<body[^>]*>/mi, | |
/<script.*?<\/script.*?>/mi, | |
/<style.*?<\/style.*?>/mi, | |
], | |
# filter to pass content through before appending. the default strips | |
# out the HTML header junk and comments (using the contents of | |
# $config['yank_filters'] above),, hopefully getting us much closer to | |
# the actual content | |
'yank_filter_proc' => proc { |html| | |
filters = $config['yank_filters'] | |
filters.inject(html) { |ret, re| ret.gsub(re, '') } | |
}, | |
# prefix to append before content (passed through strftime so you can | |
# timestamp it) | |
'yank_prefix' => "<br/>----<p>Yanked by Raggle on %Y-%m-%d </p>----<br/>", | |
# xpaths to item elements | |
'item_element_xpaths' => { | |
'description' => [ | |
"./[local-name() = 'encoded' and namespace-uri() = 'http://purl.org/rss/1.0/modules/content/']", | |
'description', | |
], | |
'link' => [ | |
'link', | |
'guid', # (this needs tob e guid/attribute, isPermaLink=true) | |
], | |
'date' => [ | |
'date', | |
"./[local-name() = 'date' and namespace-uri() = 'http://purl.org/dc/elements/1.1/']", | |
'pubDate', | |
], | |
}, | |
# key bindings | |
'keys' => ($HAVE_LIB['ncurses'] ? { | |
Ncurses::KEY_RIGHT => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::next_window} ), | |
?\t => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::next_window} ), | |
Ncurses::KEY_LEFT => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::prev_window} ), | |
?\\ => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::view_source} ), | |
Ncurses::KEY_F12 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::quit} ), | |
?q => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::quit} ), | |
Ncurses::KEY_UP => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_up} ), | |
Ncurses::KEY_DOWN => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_down} ), | |
Ncurses::KEY_HOME => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_top} ), | |
?0 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_top} ), | |
Ncurses::KEY_END => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_bottom} ), | |
?$ => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_bottom} ), | |
Ncurses::KEY_PPAGE => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_up_page} ), | |
Ncurses::KEY_NPAGE => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_down_page} ), | |
# vi keybindings | |
?h => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::prev_window} ), | |
?j => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_down} ), | |
?k => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_up} ), | |
?l => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::next_window} ), | |
?g => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_top} ), | |
?G => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::scroll_bottom} ), | |
?\n => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::select_item} ), | |
?\ => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::select_item} ), | |
?u => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::move_feed_up} ), | |
?d => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::move_feed_down} ), | |
?I => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::invalidate_feed} ), | |
?e => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::edit_feed} ), | |
?/ => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::find_entry(win)} ), | |
Ncurses::KEY_DC => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::delete} ), | |
?y => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::undelete_all} ), | |
?P => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::purge_deleted} ), | |
## | |
# XXX: Meta can be dropped after spawned browser exits | |
# So A, B, C or D should *not* be bound until this is fixed | |
# -- richlowe 2003-06-22 (actually --pabs 2003-06-21) | |
# ?D => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::delete} ), | |
# Literal control L is horrid -- richlowe 2003-06-26 | |
?\ => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::resize_term} ), | |
?s => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::sort_feeds} ), | |
?o => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link} ), | |
?m => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::mark_items_as_read} ), | |
?M => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::mark_items_as_unread} ), | |
?N => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::mark_current_as_unread} ), | |
?! => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::drop_to_shell} ), | |
?p => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::select_prev_unread} ), | |
?n => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::select_next_unread} ), | |
?r => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::lower_feed_priority} ), | |
?R => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::raise_feed_priority} ), | |
?U => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::manual_update} ), | |
?S => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::manual_save} ), | |
?a => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::add_feed} ), | |
?O => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::opml} ), | |
# i know this is using 'c'.. we'll see if this fucks us (see note | |
# about 'C' above) | |
# -- pabs (Sat Mar 20 21:10:55 2004) | |
?c => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::gui_cat_list} ), | |
?f => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::gui_find_feed} ), | |
?C => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::close_window} ), | |
? => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::close_window} ), | |
?? => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::show_key_bindings} ), | |
?B => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::save_bookmark} ), | |
?1 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link(1)} ), | |
?2 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link(2)} ), | |
?3 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link(3)} ), | |
?4 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link(4)} ), | |
?5 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link(5)} ), | |
?6 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link(6)} ), | |
?7 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link(7)} ), | |
?8 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link(8)} ), | |
?9 => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::open_link(9)} ), | |
?Y => proc( %{|win, key| Raggle::Interfaces::NcursesInterface::Key::yank_link } ), | |
} : {}), | |
# color palette (referenced by themes) | |
'color_palette' => ($HAVE_LIB['ncurses'] ? [ | |
[ 1, Ncurses::COLOR_WHITE, -1 ], | |
[ 2, Ncurses::COLOR_RED, -1 ], | |
[ 4, Ncurses::COLOR_GREEN, -1 ], | |
[ 4, Ncurses::COLOR_BLUE, -1 ], | |
[ 5, Ncurses::COLOR_MAGENTA, -1 ], | |
[ 6, Ncurses::COLOR_CYAN, -1 ], | |
[ 7, Ncurses::COLOR_YELLOW, -1 ], | |
[ 11, -1, -1 ], | |
[ 12, -1, Ncurses::COLOR_RED ], | |
[ 13, -1, Ncurses::COLOR_GREEN ], | |
[ 14, -1, Ncurses::COLOR_BLUE ], | |
[ 15, -1, Ncurses::COLOR_MAGENTA ], | |
[ 16, -1, Ncurses::COLOR_CYAN ], | |
[ 17, -1, Ncurses::COLOR_YELLOW ], | |
[ 21, Ncurses::COLOR_WHITE, -1 ], | |
[ 22, Ncurses::COLOR_WHITE, Ncurses::COLOR_RED ], | |
[ 23, Ncurses::COLOR_WHITE, Ncurses::COLOR_GREEN ], | |
[ 24, Ncurses::COLOR_WHITE, Ncurses::COLOR_BLUE ], | |
[ 25, Ncurses::COLOR_WHITE, Ncurses::COLOR_MAGENTA ], | |
[ 26, Ncurses::COLOR_WHITE, Ncurses::COLOR_CYAN ], | |
[ 27, Ncurses::COLOR_WHITE, Ncurses::COLOR_YELLOW ], | |
[ 31, Ncurses::COLOR_WHITE, Ncurses::COLOR_CYAN ], | |
[ 32, Ncurses::COLOR_RED, Ncurses::COLOR_CYAN ], | |
[ 33, Ncurses::COLOR_GREEN, Ncurses::COLOR_CYAN ], | |
[ 34, Ncurses::COLOR_BLUE, Ncurses::COLOR_CYAN ], | |
[ 35, Ncurses::COLOR_MAGENTA, Ncurses::COLOR_CYAN ], | |
[ 36, -1, Ncurses::COLOR_CYAN ], | |
[ 37, Ncurses::COLOR_YELLOW, Ncurses::COLOR_CYAN ], | |
] : []), | |
'attr_palette' => ($HAVE_LIB['ncurses'] ? { | |
'normal' => Ncurses::A_NORMAL, | |
'normal' => Ncurses::A_NORMAL, | |
'standout' => Ncurses::A_STANDOUT, | |
'underline' => Ncurses::A_UNDERLINE, | |
'reverse' => Ncurses::A_REVERSE, | |
'blink' => Ncurses::A_BLINK, | |
'dim' => Ncurses::A_DIM, | |
'bold' => Ncurses::A_BOLD, | |
'protect' => Ncurses::A_PROTECT, | |
'invis' => Ncurses::A_INVIS, | |
'altcharset' => Ncurses::A_ALTCHARSET, | |
'chartext' => Ncurses::A_CHARTEXT, | |
} : {}), | |
# default theme settings | |
'theme' => { | |
# theme information | |
'name' => 'Default Theme', | |
'author' => 'Paul Duncan <[email protected]>', | |
'url' => 'http://www.raggle.org/', | |
# window order (order for window changes, etc) | |
'window_order' => ['feed', 'item', 'desc'], | |
# status bar color | |
'status_bar_cols' => 24, | |
# feed window attributes | |
'win_feed' => { | |
'key' => 'feed', | |
'title' => _('Feeds'), | |
'coords' => [0, 0, 25, -1], | |
'type' => 'list', | |
'colors' => { | |
'title' => 1, | |
'text' => 1, | |
'h_text' => 16, | |
'box' => 4, | |
'a_title' => 21, | |
# 'a_title' => 36, | |
'a_box' => 3, | |
'unread' => 6, | |
'h_unread' => 36, | |
'empty' => 2, | |
'h_empty' => 32, | |
}, | |
}, | |
# item window attributes | |
'win_item' => { | |
'key' => 'item', | |
'title' => _('Items'), | |
'coords' => [25, 0, -1, 15], | |
'type' => 'list', | |
'colors' => { | |
'title' => 1, | |
'text' => 1, | |
'h_text' => 16, | |
'box' => 4, | |
'a_title' => 21, | |
'a_box' => 3, | |
'unread' => 6, | |
'h_unread' => 36, | |
}, | |
}, | |
# desc window attributes | |
'win_desc' => { | |
'key' => 'desc', | |
'title' => _('Description'), | |
'coords' => [25, 15, -1, -1], | |
'type' => 'text', | |
'colors' => { | |
'title' => 1, | |
'text' => 1, | |
'h_text' => 16, | |
'box' => 4, | |
'a_title' => 21, | |
'a_box' => 3, | |
'url' => 6, | |
'date' => 6, | |
'f_title' => [1, 'bold'], | |
'f_update' => 1, | |
'f_url' => 1, | |
'f_site' => 1, | |
'f_error' => 2, | |
'f_desc' => 1, | |
}, | |
}, | |
}, | |
# bookmark settings | |
# how bookmarks are saved when you press 'B' in the | |
# Ncurses interface | |
'bookmark' => [ | |
# basic CSV bookmark file | |
{ :type => :csv_file, | |
:path => '${config_dir}/bookmarks.csv', | |
# optional settings | |
# don't prompt for item description (default: false) | |
:no_desc => true, | |
# don't prompt for tags (default: false) | |
# :no_tags => false, | |
# inherit tags from parent feed? (default: true) | |
# :inherit_tags => true, | |
}, | |
# pass bookmark to an arbitrary file | |
# note: doesn't check for success on exit just yet | |
# | |
# { :type => :exec, | |
# # path to file to execute | |
# # arguments are passed in the following order: | |
# # title, url, tags, desc | |
# :path => File::join(ENV['HOME'], 'bin', 'raggle_delicious.rb'), | |
# | |
# # optional settings | |
# # don't prompt for item description (default: false) | |
# :no_desc => true, | |
# # don't prompt for tags (default: false) | |
# # :no_tags => false, | |
# # inherit tags from parent feed? (default: true) | |
# # :inherit_tags => true, | |
# }, | |
# | |
# save bookmarks to sqlite | |
# note: requires the sqlite-ruby library, and the bookmark | |
# database must exist, with the appropriate table | |
# | |
# { :type => :db, | |
# :dbtype => :sqlite, | |
# | |
# # path to database file | |
# # note: database file MUST already exist! | |
# :path => '${config_dir}/bookmarks.db', | |
# | |
# # name of table to save bookmarks into | |
# # note: this table MUST already exist! | |
# :table => 'raggle_bookmarks', | |
# | |
# # list of fields (note: you can omit any of these) | |
# :fields => { | |
# :title => 'title', | |
# :desc => 'description', | |
# :url => 'url', | |
# :tags => 'tags', | |
# }, | |
# | |
# # optional settings | |
# # don't prompt for descriptions (default: false) | |
# # :no_desc => false, | |
# # don't prompt for tags (default: false) | |
# # :no_tags => false, | |
# # inherit tags from parent feed? (default: true) | |
# # :inherit_tags => true, | |
# }, | |
# | |
# save bookmarks to mysql | |
# note: requires the sqlite-ruby library, and the bookmark | |
# database must exist, with the appropriate table | |
# | |
# { :type => :db, | |
# :dbtype => :mysql, | |
# | |
# # db server, username, password, and name of database to use | |
# :host => 'HOSTNAME', # (use 'localhost' if it's on this machine) | |
# :user => 'USERNAME', | |
# :pass => 'PASSWORD', | |
# :dbname => 'raggle_database', | |
# | |
# # name of table to save bookmarks into | |
# # note: this table MUST already exist! | |
# :table => 'raggle_bookmarks', | |
# | |
# # list of fields (note: you can omit any of these) | |
# :fields => { | |
# :title => 'title', | |
# :desc => 'description', | |
# :url => 'url', | |
# :tags => 'tags', | |
# }, | |
# | |
# # optional settings | |
# # don't prompt for descriptions (default: false) | |
# # :no_desc => false, | |
# # don't prompt for tags (default: false) | |
# # :no_tags => false, | |
# # inherit tags from parent feed? (default: true) | |
# # :inherit_tags => true, | |
# }, | |
# | |
], | |
# live feeds | |
'feeds' => Raggle::Feed::List.new, | |
# debugging / internal options (don't touch) | |
'use_raw_mode' => true, | |
'use_noecho' => true, | |
'default_feeds' => [ | |
{ 'title' => 'Raggle Help', | |
'url' => "http://raggle.org/rss/help/", | |
'site' => 'http://raggle.org/', | |
'refresh' => 240, | |
'updated' => 0, | |
'desc' => '', | |
'category' => 'Raggle', | |
'items' => [ ], | |
'priority' => 2, | |
}, | |
{ 'title' => 'Alternet', | |
'url' => 'http://alternet.org/module/feed/rss/', | |
'site' => 'http://alternet.org/', | |
'desc' => 'Alternative News and Information.', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Politics News', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Daily Daemon News', | |
'url' => 'http://daily.daemonnews.org/ddn.rdf.php3', | |
'site' => 'http://daemonnews.org/', | |
'desc' => 'Daily Daemon News', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Tech', | |
'items' => [ ], | |
}, | |
{ 'title' => 'FreshMeat', | |
'url' => 'http://freshmeat.net/backend/fm-releases-global.xml', | |
'site' => 'http://freshmeat.net/', | |
'desc' => 'FreshMeat.', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Tech', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Halffull.org', | |
'url' => 'http://halffull.org/feed/', | |
'site' => 'http://halffull.org/', | |
'desc' => 'Thomas Kirchner\'s personal site.', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Blogs Tech', | |
'items' => [ ], | |
}, | |
{ 'title' => 'KernelTrap', | |
'url' => 'http://kerneltrap.org/node/feed', | |
'site' => 'http://kerneltrap.org/', | |
'desc' => 'KernelTrap', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Tech', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Kuro5hin', | |
'url' => 'http://kuro5hin.org/backend.rdf', | |
'site' => 'http://kuro5hin.org/', | |
'desc' => 'Kuro5hin', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Tech Politics', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Linux Weekly News', | |
'url' => 'http://www.lwn.net/headlines/newrss', | |
'site' => 'http://www.lwn.net/', | |
'desc' => 'Linux Weekly News', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Tech', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Linuxbrit', | |
'url' => 'http://linuxbrit.co.uk/feed/rss2/', | |
'site' => 'http://linuxbrit.co.uk/', | |
'desc' => 'Tom Gilbert\'s personal site.', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Blogs', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Pablotron', | |
'url' => 'http://www.pablotron.org/rss/', | |
'site' => 'http://www.pablotron.org/', | |
'desc' => 'Paul Duncan\'s personal site.', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Blogs Tech', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Paul Duncan.org', | |
'url' => 'http://paulduncan.org/rss/', | |
'site' => 'http://paulduncan.org/', | |
'desc' => 'Paul Duncan\'s other personal site.', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Blogs', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Raggle: News', | |
'url' => 'http://raggle.org/rss/', | |
'site' => 'http://raggle.org/', | |
'desc' => 'Raggle News', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Tech Raggle', | |
'items' => [ ], | |
'priority' => 1, | |
}, | |
{ 'title' => 'Slashdot', | |
'url' => 'http://slashdot.org/slashdot.rss', | |
'site' => 'http://slashdot.org/', | |
'desc' => 'Slashdot', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Tech News', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Reuters: Oddly Enough', | |
'url' => 'http://www.microsite.reuters.com/rss/oddlyEnoughNews', | |
'site' => 'http://reuters.com/', | |
'desc' => 'Reuters oddly enough.', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Funny News', | |
'items' => [ ], | |
}, | |
{ 'title' => 'This Modern World', | |
'url' => 'http://www.thismodernworld.com/index.rdf', | |
'site' => 'http://www.thismodernworld.com/', | |
'desc' => 'This Modern World', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Blogs Politics', | |
'items' => [ ], | |
}, | |
{ 'title' => 'W3C', | |
'url' => 'http://www.w3.org/2000/08/w3c-synd/home.rss', | |
'site' => 'http://www.w3.org/', | |
'desc' => 'W3C', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Tech', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Yahoo! News - Tech', | |
'url' => 'http://rss.news.yahoo.com/rss/tech', | |
'site' => 'http://news.yahoo.com/', | |
'desc' => 'yahoo tech', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Tech News', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Yahoo! News - Top Stories', | |
'url' => 'http://rss.news.yahoo.com/rss/topstories', | |
'site' => 'http://news.yahoo.com/', | |
'desc' => 'yahoo top stories', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'News', | |
'items' => [ ], | |
}, | |
{ 'title' => 'Yahoo! News - World', | |
'url' => 'http://rss.news.yahoo.com/rss/world', | |
'site' => 'http://news.yahoo.com/', | |
'desc' => 'yahoo world', | |
'refresh' => 120, | |
'updated' => 0, | |
'category' => 'Politics News', | |
'items' => [ ], | |
}, | |
], | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment