Class: Roebe::CreateDesktopFile

Inherits:
Base show all
Defined in:
lib/roebe/classes/create_desktop_file.rb

Overview

Roebe::CreateDesktopFile.new

Constant Summary collapse

AUTOSTART_DIRECTORY =
#

AUTOSTART_DIRECTORY

#
"#{ENV['HOME']}/.config/autostart/"
DOWNCASE_FILENAME =
#

DOWNCASE_FILENAME

#
true
PATH_TO_IMG_DIRECTORY =
"#{HOME_DIRECTORY_OF_USER_X}DATA/IMG/"

Constants inherited from Base

Base::COLOURS, Base::HOME_DIRECTORY_OF_USER_X, Base::N, Base::NAMESPACE

Instance Method Summary collapse

Methods inherited from Base

#actions, #append_this_onto_that_file, #append_what_into, #be_silent, #be_verbose?, #beautiful_url, #burlywood, #call_next, #chdir, #cheerful_guy, #cliner, #complex_esystem, #convert_global_env, #copy_directory, #copy_file, #cornflowerblue, #create_directory, #crimson, #current_month?, #current_time?, #current_year?, #cyan, #darkcyan, #darkgreen, #darkkhaki, #darkslateblue, #deeppink, #delete_symlink, #do_not_use_the_base_colours, #do_use_the_base_colours, #e, #ecomment, #editor_to_use?, #efancy, #eimp, #emphasis, #ensure_main_encoding, #ensure_utf_encoding, #eparse, #erev, #esteelblue, #etomato, #ewarn, #exit_program, #firebrick, #get_current_day, #get_current_month, #get_files_and_directories, #get_files_from, #get_german_name_for_this_weekday, #gold, #green, #grey, #hh_mm_ss, #hh_mm_ss_day_month_year, #home_dir?, #home_directory_of_user_x?, #infer_the_namespace, #internal_hash?, #is_a_directory?, #is_a_file?, #is_a_jpg_file?, #is_an_image_file?, #is_archive?, #is_audio_file?, #is_in_studium_dir?, #is_multimedia_file?, #is_on_roebe?, #is_on_windows?, #is_studium_available?, #is_symlink?, #is_this_a_ruby_file?, #is_video_file?, #iso_encoding?, #le, #left_colour, #lightblue, #lightgreen, #lightseagreen, #lightsteelblue, #lime, #limegreen, #localhost_to_data, #log_directory?, #main_encoding?, #mediumorchid, #mediumpurple, #mediumseagreen, #mediumslateblue, #mediumspringgreen, #mediumturquoise, #mkdir_p, #mv, #n_days_in_this_month, #n_pages_in_this_pdf_file?, #namespace?, #no_file_exists_at, #ogrey, #olive, #olivedrab, #open_in_browser, #opne, #opnesystem, #opnn, #orange, #orchid, #orev, #palegoldenrod, #palevioletred, #pink, #powderblue, #programs_dir?, #project_base_dir?, #random_html_colour, #rds, #read_file_in_iso_encoding, #read_file_via_the_default_encoding, #read_lines_via_iso_encoding, #readlines_with_main_encoding, #red, #register_sigint, #remove, #remove_directory, #remove_file, #rename_kde_konsole_tab, #replace_localhost_with_data, #report_pwd, #require_rescue, #reset_the_internal_hash, #return_all_directories_from_this_directory, #return_all_files_from_this_directory, #return_current_directory, #return_dd_mm_yyyy, #return_file_or_directory_of, #return_files_from_pwd, #return_last_part_of_the_current_directory, #return_utc, #rev, #right_arrow?, #right_colour, #roebe_log_directory?, #rosybrown, #royalblue, #ruby_base_directory?, #run_in_background, #run_rcfiles_then_run_ata_via_qdbus, #sandybrown, #sdir, #seagreen, #set_be_verbose, #set_xorg_buffer, #sfancy, #sfile, #show_help, #silent_redirection?, #simp, #simple_esystem, #skyblue, #slateblue, #slategray, #springgreen, #steelblue, #string_italic, #swarn, #symlink, #teal, #temp_dir?, #to_camelcase, #to_counted_hash, #tomato, #touch, #try_to_require_the_beautiful_url_gem, #try_to_require_the_html_template, #try_to_require_the_open_gem, #try_to_require_the_program_information_gem, #try_to_require_the_xorg_buffer, #use_colours?, #verbose_truth, #weekday?, #word_wrap, #write_what_into, #yellow

Methods included from Base::CommandlineArguments

#append_onto_the_commandline_arguments, #clear_commandline_arguments, #commandline_arguments?, #commandline_arguments_as_string?, #commandline_arguments_without_leading_hyphens?, #first_argument?, #first_argument_without_leading_hyphens?, #has_an_argument_been_passed?, #remove_hyphened_arguments_from_the_commandline_arguments, #return_commandline_arguments_with_leading_hyphens, #second_argument?, #set_commandline_arguments

Constructor Details

#initialize(i = '', run_already = true) ⇒ CreateDesktopFile

#

initialize

#


44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/roebe/classes/create_desktop_file.rb', line 44

def initialize(
    i           = '',
    run_already = true
  )
  reset
  set_input(i)
  if block_given?
    yielded = yield
    case yielded
    when :mate
      set_target_this_desktop_environment :mate
    end
  end
  run if run_already
end

Instance Method Details

#add(i = '', append_newline = true) ⇒ Object

#

add

#


190
191
192
193
194
195
# File 'lib/roebe/classes/create_desktop_file.rb', line 190

def add(
    i = '', append_newline = true
  )
  @_ << i
  @_ << N if append_newline
end

#append_everythingObject

#

append_everything

Use this to assemble the required data.

#


151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/roebe/classes/create_desktop_file.rb', line 151

def append_everything
  @_ << '[Desktop Entry]'+N+N
  add '  Encoding=UTF-8'
  add '  Type=Application'
  # ======================================================================= #
  # The next field is the "Icon" entry. In the past, up until January 2019,
  # we used $IMG strings here, but some programs dislike this. Thus, we
  # will use a constant for this instead.
  # ======================================================================= #
  add '  Icon='+PATH_TO_IMG_DIRECTORY+'PC/XCHAT_FAVICON.png'
  add '  Terminal=false'
  add '  Type=Application'
  add '  Comment='+@input
  add '  GenericName='+@input+'.desktop'
  add '  Name='+@input+'.desktop'
  add '  Name[en_US]='+@input+'.desktop'
  case target_which_desktop_environment? # case tag
  # ======================================================================= #
  # === :gnome
  #
  # This will add a X-GNOME Autostart-enabled entry.
  # ======================================================================= #
  when :gnome
    @_ << '  X-GNOME-Autostart-enabled=true'+N # This seems to be for GNOME3.
  # ======================================================================= #
  # === mate_desktop
  # ======================================================================= #
  when :mate_desktop,
       :mate
    @_ << '  X-MATE-Autostart-enabled=true'+N # This is for the mate-desktop.
  end
  add '  Hidden=false' # Set the hidden flag.
  add "  Exec=#{@input}" # Could be absolute path too: Exec=/usr/bin/artha
  @_ << N
end

#consider_creating_this_directory(i) ⇒ Object

#

consider_creating_this_directory

#


139
140
141
142
143
144
# File 'lib/roebe/classes/create_desktop_file.rb', line 139

def consider_creating_this_directory(i)
  unless File.exist? i
    opne "#{rev}Creating #{sdir(i)} #{rev}next."
    FileUtils.mkdir_p(i)
  end
end

#do_not_continueObject

#

do_not_continue

#


200
201
202
# File 'lib/roebe/classes/create_desktop_file.rb', line 200

def do_not_continue
  @continue = false
end

#resetObject

#

reset

#


63
64
65
66
67
68
69
70
71
72
# File 'lib/roebe/classes/create_desktop_file.rb', line 63

def reset
  super()
  infer_the_namespace
  # === @continue
  @continue = true
  set_autostart_directory
  set_input
  @target_this_desktop_environment = :mate_desktop
  @_ = ''.dup # This is the string that we will store.
end

#runObject

#

run (run tag)

General run method.

#


209
210
211
212
213
214
215
216
217
218
219
# File 'lib/roebe/classes/create_desktop_file.rb', line 209

def run
  if @continue
    set_store_where
    append_everything
    consider_creating_this_directory(
      File.dirname(@store_where)
    )
    opne "#{rev}Now storing into `#{sfile(@store_where)}#{rev}`."
    write_what_into(@_, @store_where)
  end
end

#set_autostart_directory(i = AUTOSTART_DIRECTORY) ⇒ Object

#

set_autostart_directory

This sets the autostart directory, through the ivar @autostart_directory.

#


112
113
114
115
116
# File 'lib/roebe/classes/create_desktop_file.rb', line 112

def set_autostart_directory(
    i = AUTOSTART_DIRECTORY
  )
  @autostart_directory = i
end

#set_input(i = '') ⇒ Object

#

set_input

#


77
78
79
80
# File 'lib/roebe/classes/create_desktop_file.rb', line 77

def set_input(i = '')
  i = '' if i.nil?
  @input = i
end

#set_store_where(i = @input+'.desktop') ⇒ Object

#

set_store_where

We need to keep in mind that the input could include directory paths as well as ‘ ’ characters, as part of the command, such as in “konsole –hold –something”. Since we wish to store into a .desktop file, we will avoid ‘ ’ characters; and ‘/’ characters will be rejected altogether.

#


91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/roebe/classes/create_desktop_file.rb', line 91

def set_store_where(
    i = @input+'.desktop'
  )
  name = File.basename(
    i
  ).tr(' ','_').tr('/','_').tr('-','_').
    delete('&').strip.squeeze('_').strip
  if DOWNCASE_FILENAME
    name.downcase!
  end
  if name.include? '_.'
    name.gsub!(/_\./,'.')
  end
  @store_where = @autostart_directory+name
end

#set_target_this_desktop_environment(i) ⇒ Object

#

set_target_this_desktop_environment

#


128
129
130
131
132
133
134
# File 'lib/roebe/classes/create_desktop_file.rb', line 128

def set_target_this_desktop_environment(i)
  case i
  when :mate
    i = :mate_desktop
  end
  @target_this_desktop_environment = i
end

#target_which_desktop_environment?Boolean

#

target_which_desktop_environment?

#

Returns:

  • (Boolean)


121
122
123
# File 'lib/roebe/classes/create_desktop_file.rb', line 121

def target_which_desktop_environment?
  @target_this_desktop_environment
end